DelphiTurkiye Forum (Android)

Paket programlarınızın tanıtımını bu forumda yapabilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

DelphiTurkiye Forum (Android)

Mesaj gönderen mrmarman »

Merhaba...

- Ayağımı kırdım raporluyum, evde oturuyorum. :roll:
- Geçtiğimiz bir kaç gün önce aklıma geldi de kolları sıvadım. DelphiTurkiye Forum için bir Parse işlemlerini içeren bir HelperClass hazırladım.

- Hem windows hem de android uyumludur. Kaynak kodları aşağıdadır. Bu mesaj ekindeki halini indirin ki forum resimleri de oradadır.

- Forum resimlerini içeren resource da aynı klasördedir.

- Bu sınıf yardımı ile oluşturduğum örnek Android projeyi de bu linkten indirebilirsiniz.

Kod: Tümünü seç

{***************************************************************************}
{                                                                           }
{                    DelphiTürkiye Forum Helper Class                       }
{                                                                           }
{                    Copyright (C) 2015 Muharrem ARMAN                      }
{                         muharrem.arman@trt.net.tr                         }
{                                                                           }
{***************************************************************************}
{                                                                           }
{  Delphi Türkiye - Forum RSS desteği bulunmamaktadır.                      }
{  RSS benzeri hızlı veri almak konusunda Indy bileşeni ile desteklenmiş    }
{  bir yapıdan faydalanarak bu Class oluşturulmuştur.                       }
{                                                                           }
{  Üzerinde değişiklik yapmak serbesttir ancak lütfen bu etiket bloğu       }
{  içine yaptığınız değişikliği ve künyenizi yazmayı ihmal etmeyiniz.       }
{                                                                           }
{***************************************************************************}
{  Değişikliği Yapan,  Yapılan Ekleme/Değişiklik bilgisi :                  }
{                                                                           }
{                                                                           }
{                                                                           }
{***************************************************************************}

unit DelphiTurkiyeHelper;

interface
Uses
  {$IF defined(MSWINDOWS)}
    Windows, Forms, Graphics, Controls, GifImg, Dialogs, IdAntiFreeze, ShellApi,
  {$ELSEIF defined(ANDROID)}
    FMX.Forms, System.IOUtils, FMX.Graphics, FMX.Types, FMX.Objects,
    System.Types, System.UITypes, IdAntiFreezeBase,
    Androidapi.Helpers,
    Androidapi.JNI.GraphicsContentViewText,
  {$ENDIF}
    IdHttp, IdUri, SysUtils, Classes;

Type
  {$IF defined(ANDROID)}
    TIdAntiFreeze = class(TIdAntiFreezeBase)
    public
      procedure Process; override;
    end;
  {$ENDIF}

  tDelphiTurkiyeHelper = Class(TObject)
  Const
    RootUrl   = 'http://www.delphiturkiye.com/forum/';
    LoginUrl  =  RootUrl + 'ucp.php?mode=login';
    LogoutUrl =  RootUrl + 'ucp.php?mode=logout';
    MainUrl   =  RootUrl + 'index.php';
    ForumImageSet : Array[0..52] of String = (
                   'forum_link'                  // 00
                  ,'forum_read'                  // 01
                  ,'forum_read_locked'           // 02
                  ,'forum_read_subforum'         // 03
                  ,'forum_unread'                // 04
                  ,'forum_unread_locked'         // 05
                  ,'forum_unread_subforum'       // 06
                  ,'topic_moved'                 // 07
                  ,'topic_read'                  // 08
                  ,'topic_read_mine'             // 09
                  ,'topic_read_hot'              // 10
                  ,'topic_read_hot_mine'         // 11
                  ,'topic_read_locked'           // 12
                  ,'topic_read_locked_mine'      // 13
                  ,'topic_unread'                // 14
                  ,'topic_unread_mine'           // 15
                  ,'topic_unread_hot'            // 16
                  ,'topic_unread_hot_mine'       // 17
                  ,'topic_unread_locked'         // 18
                  ,'topic_unread_locked_mine'    // 19
                  ,'sticky_read'                 // 20
                  ,'sticky_read_mine'            // 21
                  ,'sticky_read_locked'          // 22
                  ,'sticky_read_locked_mine'     // 23
                  ,'sticky_unread'               // 24
                  ,'sticky_unread_mine'          // 25
                  ,'sticky_unread_locked'        // 26
                  ,'sticky_unread_locked_mine'   // 27
                  ,'announce_read'               // 28
                  ,'announce_read_mine'          // 29
                  ,'announce_read_locked'        // 30
                  ,'announce_read_locked_mine'   // 31
                  ,'announce_unread'             // 32
                  ,'announce_unread_mine'        // 33
                  ,'announce_unread_locked'      // 34
                  ,'announce_unread_locked_mine' // 35
                  ,'global_read'                 // 36
                  ,'global_read_mine'            // 37
                  ,'global_read_locked'          // 38
                  ,'global_read_locked_mine'     // 39
                  ,'global_unread'               // 40
                  ,'global_unread_mine'          // 41
                  ,'global_unread_locked'        // 42
                  ,'global_unread_locked_mine'   // 43
                  ,'pm_read'                     // 44
                  ,'pm_unread'                   // 45
                  ,'icon_post_target'            // 46
                  ,'icon_post_target_unread'     // 47
                  ,'icon_topic_attach'           // 48
                  ,'icon_topic_latest'           // 49
                  ,'icon_topic_newest'           // 50
                  ,'icon_topic_reported'         // 51
                  ,'icon_topic_unapproved'       // 52
                );

    Type
      pForumTopicTitles = ^tForumTopicTitles;
      tForumTopicTitles = Record
        StateImg,       // 00
        StateTitle,     // 01
        CevapSay,       // 02
        GoruntuSay,     // 03
        Baslik,         // 04
        BaslikUrl,      // 05
        AcilisTar,      // 06
        Yazar,          // 07
        YazarUrl,       // 08
        SonMesajTar,    // 09
        SonMesajUrl,    // 10
        SonUser,        // 11
        SonUserUrl      // 12
        : String;
    end;
    Type
      pForumTopicPost = ^tForumTopicPost;
      tForumTopicPost = Record
         StateImg,     // 00
         StateTitle,   // 01
         User,         // 02
         Baslik,       // 03
         BaslikUrl,    // 04
         BaslikTar,    // 05
         UserState,    // 06
         UserRank,     // 07
         UserRegTar,   // 08
         UserMesCount, // 09
         UserFrom,     // 10
         Mesaj,        // 11
         MesajTemiz    // 12
         : String;
    end;
  private
    FIdHttp       : TIdHttp;
    FIdAntiFreeze : TIdAntiFreeze;
    FSidStr       : String;
    FLogOutSid    : String;
    FboolLogin    : Boolean;
    FStyleStr     : String;
    FstrGelen     : String;
    FsonUrl       : String;
    FstrStyles    : String;
    FstrUserName  : String;
    FstrAvatarUrl : String;
    FAvatarBitmap : TBitmap;
    FStyleIdx     : Integer; // SubSilver style olayını force edicez.. İki farklı tasarımdan kurtuluyoruz...
    procedure   TextKaydet( strIcerik, strPrefix, strKonum: String );
    function    VeriOku( Var strIcerik: String; strAra, strSon: String; boolKaynakTemizle:Boolean ): String;
    function    TaglariTemizle( strIcerik: String ): String;
    function    StylesList  : String;
    procedure   DetayVeAvatarOku;
  Public
    constructor Create;
    destructor  Destroy; Override;
    function    Login( strLogin, strPass: String ): Boolean;
    function    LogOut: Boolean;
    procedure   OnlineUsers(ForumId:Integer; Liste:TStrings);
    procedure   ForumNotifications(Liste:TStrings);
    function    ForumTopicTitles(ForumId:Integer; Liste:TStrings; iSayfaAdedi: Integer ): String;
    function    ForumTopicPosts( strTopicUrl: String; Liste:TStrings; boolTumSayfalar : Boolean): String;
    function    GetHTML( strUrl: String ): String;
    function    IsLogged : Boolean;
    function    LastContent : String;
    function    Styles: String;
    function    IdxFromImageSet( strImageSet:String ): Integer;
    procedure   SmallImageRefresh;
    procedure   Avatar( Bitmap: TBitmap );
    function    ActiveUserName: String;
    procedure   BrowserIleAc( strUrl: String );
  {$IF defined(MSWINDOWS)}
    procedure   DummyImageTazele( strRCFolderPath, strRCFileName, strImageFolderName : String);
  {$ENDIF}
  Var
    ForumImages : Array of TBitmap;
  End;

implementation

{$IF defined(ANDROID)}
  { TIdAntiFreeze }
  procedure TIdAntiFreeze.Process;
  begin
    Application.ProcessMessages;
  end;
{$ENDIF}

{ tDelphiTurkiyeHelper }

{$R 'DelphiTurkiyeHelper.res'}  // Forum resimleri bu RES dosyasındadır...

constructor tDelphiTurkiyeHelper.Create;
Var
  List: TStringList;
begin
  FIdHttp       := TIdHttp.Create();
    FIdHttp.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)';
    FIdHttp.HandleRedirects   := True;

  FIdAntiFreeze := TIdAntiFreeze.Create(FIdHttp);;

  FstrStyles := StylesList();

  List := TStringList.Create;
    List.Text := FstrStyles;
    FStyleIdx := 1 + List.IndexOf('subsilver2'); // 1 based...
  List.Free;

  SmallImageRefresh(); // Resimleri Peşinen Yükledik...
end;

destructor tDelphiTurkiyeHelper.Destroy;
Var
  i : Integer;
begin
  FIdAntiFreeze.Free;
  If FIdHttp.Connected then
  begin
    FIdHttp.Disconnect(false);
    FIdHttp.IOHandler.InputBuffer.Clear();
    FIdHttp.IOHandler.Close;
  end;
  FIdHttp.Free;
  FIdHttp := Nil;

  if (High(ForumImages)- Low(ForumImages)+1) > 0 then
  begin
    for i := Low(ForumImageSet) to High(ForumImageSet)
    do ForumImages[i].Free;
  end;
  FAvatarBitmap.Free;
end;

function tDelphiTurkiyeHelper.GetHTML(strUrl: String): String;
Var
  strGelen : String;
begin
  strGelen := FIdHttp.Get( strUrl );
  Result := strGelen;
end;

function tDelphiTurkiyeHelper.Login(strLogin, strPass: String): Boolean;
Var
  strGelen, strAra: String;
  PostParam  : TStringList;
begin
  // Önce get ile konumlanıyoruz ve sid alıyoruz...
  strGelen := FIdHttp.Get( LoginUrl + '&style=' + SysUtils.IntToStr( FStyleIdx ) );
    FSidStr   := VeriOku( strGelen, 'index.php?sid=', '"', False );
    FStyleStr := VeriOku( strGelen, './styles/', '/', False );

  // Sonra post ile login bilgilerini yolluyoruz.
  PostParam := TStringList.Create;
    PostParam.Add('username=' + strLogin);
    PostParam.Add('password=' + strPass );
    PostParam.Add('redirect=' + LoginUrl + '&style=' + IntToStr( FStyleIdx ) );
    PostParam.Add('sid=' + FSidStr);
    PostParam.Add('redirect=index.php');
    PostParam.Add('login=Giriş' );
  Try
    strGelen := FIdHttp.Post( LoginUrl, PostParam );
  Finally
    PostParam.Free;
  End;
  FboolLogin := Pos('ucp.php?mode=logout', strGelen) >= 0;
  FStrGelen  := strGelen;
  FsonUrl    := LoginUrl + '&style=' + IntToStr( FStyleIdx );

  strAra := 'ucp.php?mode=logout';
    system.Delete(strGelen, 1, Pos( strAra, strGelen )-1 );
  FLogOutSid := VeriOku( strGelen, 'sid=', '"', False );

  Result   := FBoolLogin;

  DetayVeAvatarOku();
end;

function tDelphiTurkiyeHelper.LogOut: Boolean;
Const
  LogOutHata = 'oturumunuz ile uyumlu istek yok';
Var
  strGelen : String;
begin
  Result := True;
  if NOT FboolLogin then Exit;
  strGelen   := FIdHttp.Get( LogoutUrl + '&sid=' + FLogOutSid );
  FStrGelen  := strGelen;
  FsonUrl    := LogoutUrl + '&sid=' + FLogOutSid;

  FBoolLogin := Pos( LogOutHata, strGelen) > 0;
  if NOT FboolLogin then begin
    FSidStr    := '';
    FLogOutSid := '';
  end;
  Result   := FBoolLogin;
end;

Procedure tDelphiTurkiyeHelper.OnlineUsers(ForumId:Integer; Liste:TStrings);
Var
  strGelen, strAra, strOffset, strUserId, strUser : String;
begin
  if NOT FboolLogin then Exit;
  Liste.Clear;

  case ForumId of
  0 : FsonUrl    := MainUrl + '?style=' + IntToStr( FStyleIdx );
  end;
  strGelen := FIdHttp.Get( FsonUrl );
  FStrGelen  := strGelen;

  strAra := '>Kimler çevrimiçi<';
    system.Delete( strGelen, 1, Pos(strAra, strGelen) + Length(strAra)-1 );
// --- Style Paketine Özel Offset --- //
  if FStyleStr = 'subsilver2'
    then strOffset := 'Yetkiler :'
  else begin
    Liste.Text := 'Forum style paketi "'+ FStyleStr+'" parse edilemedi...';
    Exit;
  end;
// ---------------------------------- //

  strGelen := Copy(strGelen, 1, Pos(strOffset, strGelen)-1);

  strAra := 'mode=viewprofile&u=';
  while Pos(strAra, strGelen) > 0 do begin
    strUserId := VeriOku( strGelen, strAra, '"', False );
      System.Delete( strGelen, 1, Pos( strAra, strGelen ) + Length( strAra )-1 );
    strUser   := VeriOku( strGelen, '>', '<', False );
    Liste.Add( Format('%s|%s|', [ strUserId, strUser ]) );
  end;
end;

procedure tDelphiTurkiyeHelper.ForumNotifications(Liste: TStrings);
Var
  strGelen, strAra, strUrl, strOffset, strTitle, strUser : String;
begin
  if NOT FboolLogin then Exit;

  Liste.Clear;
  strGelen := FIdHttp.Get( MainUrl + '?style=' + IntToStr( FStyleIdx ) );

  FSonUrl    := MainUrl+'?style=' + IntToStr( FStyleIdx );
  FStrGelen  := strGelen;

  strAra := 'Bildirimler';
    system.Delete( strGelen, 1, Pos(strAra, strGelen) + Length(strAra)-1 );
  strGelen := Copy(strGelen, 1, Pos('Tümünü Gör', strGelen)-1);

// --- Style Paketine Özel Offset --- //
  if FStyleStr = 'subsilver2'
    then strOffset := '"notification_title"'
  else begin
    Liste.Text := 'Forum style paketi "'+ FStyleStr+'" parse edilemedi...';
    Exit;
  end;
// ---------------------------------- //

  strAra := 'href="./';
  while Pos(strOffset, strGelen) > 0 do begin
    strAra := strOffset;
      System.Delete( strGelen, 1, Pos( strAra, strGelen ) + Length( strAra )-1 );
      strAra := './';
    strUrl := RootUrl + VeriOku( strGelen, strAra, '"', False);
      strAra := 'username';
      System.Delete( strGelen, 1, Pos( strAra, strGelen ) + Length( strAra )-1 );
    strUser   := VeriOku( strGelen, '>', '<', False);
      strAra := '<strong';
     System.Delete( strGelen, 1, Pos( strAra, strGelen ) + Length( strAra )-1 );
   strTitle := VeriOku( strGelen, '>', '<', False);
   strTitle  := strTitle + '|' + VeriOku( strGelen, '"notification-reference">', '<', False);
   if Pos('mark_notification', strUrl) > 0
    then Liste.Add( Format('%s|(*)%s|%s', [ strUser, strTitle, strUrl ]) )
    else Liste.Add( Format('%s|%s|%s', [ strUser, strTitle, strUrl ]) );
  end;
end;

function tDelphiTurkiyeHelper.ForumTopicTitles(ForumId:Integer; Liste:TStrings; iSayfaAdedi: Integer ): String;
Var
  strKatAra,
  strKatBlokSonu,
  strTitAra,
  strThread,
  strGelen, strBlok, strAra,
    strKatUrl, strKategori,
    strUrl, strTitle, strStateImg, strStateTitle : String;
  Bilgi : pForumTopicTitles;
  boolSonraki : Boolean;
begin
  Result := ''; //sonraki sayfa...
  if NOT FboolLogin then Exit;

// --- Style Paketine Özel Offset --- //
  if FStyleStr = 'subsilver2' then begin
    strKatAra := '<td class="cat" colspan="2">';
    strKatBlokSonu := '<td class="cat" colspan="2">';
    strTitAra := '<a class="forumlink"';
    strThread := '<a title="Gönderilme zamanı';
  end
  else begin
    Liste.Text := 'Forum style paketi "'+ FStyleStr+'" parse edilemedi...';
    Exit;
  end;
// ---------------------------------- //

  Liste.Clear;

  if ForumId = 0
    then FSonUrl    := MainUrl + '?style=' + IntToStr( FStyleIdx )
    else FSonUrl    := Format('%sviewforum.php?f=%d&style=%d', [RootUrl, ForumId, FStyleIdx] );

  if ForumId = 0 then
  begin
    strGelen   := FIdHttp.Get( FSonUrl );
    FStrGelen  := strGelen;

    while Pos(strKatAra, strGelen) > 0 do
    begin // strKategori
        strAra := strKatAra;
        system.Delete( strGelen, 1, Pos(strAra, strGelen) + Length(strAra)-1 );

      strKatUrl   := RootUrl + VeriOku( strGelen, './', '"', True);
      strKategori := VeriOku( strGelen, '>', '<', True);

      strBlok     := Copy( strGelen, 1, Pos( strKatBlokSonu, strGelen )-1);
      while Pos(strTitAra, strBlok) > 0 do begin
        strAra := strTitAra;
        system.Delete( strBlok, 1, Pos(strAra, strBlok) + Length(strAra)-1 );

        strUrl := RootUrl + VeriOku( strBlok, './', '"', True);
        strTitle := VeriOku( strBlok, '>', '<', True);

        strStateImg     := VeriOku( strGelen, '<span class="imageset', '"', True );
        strStateTitle   := VeriOku( strGelen, 'title="', '"', True );
          VeriOku( strGelen, '', '<tr>', True);
        if Pos('viewforum.php', strKatUrl) > 0 then
          Liste.Add( Format('%s|%s|%s|%s|%s', [ strStateImg, strStateTitle, strKategori, strTitle, strUrl ]) );
      end;
    end // While Kategory...
  end
  else
  begin
    boolSonraki := True;
    while boolSonraki do
    begin
      Dec(iSayfaAdedi);
      if iSayfaAdedi = 0 then boolSonraki := False;

      FStrGelen := FIdHttp.Get( FSonUrl );
      strGelen  := FstrGelen; // Tazeleyelim...
      strAra := '>Duyurular<';
      VeriOku( strGelen, '>Duyurular', '<', True); // Buraya kadar törpüle...

      strGelen := VeriOku( strGelen, '', '</table>', False);

      while Pos('<tr>', strGelen) > 0 do
      begin // strThread
         New(Bilgi);
          strAra := '<tr>';
          system.Delete( strGelen, 1, Pos(strAra, strGelen) + Length(strAra)-1 );
         Bilgi.StateImg     := VeriOku( strGelen, 'class="imageset ', '"', True );
         Bilgi.StateTitle   := VeriOku( strGelen, 'title="', '"', True );
         Bilgi.AcilisTar    := VeriOku( strGelen, '<a title="Gönderilme zamanı:', '"', True );
         Bilgi.BaslikUrl    := RootUrl + VeriOku( strGelen, './', '"', True);
         Bilgi.Baslik       := VeriOku( strGelen, '"topictitle">', '<', True);
         Bilgi.YazarUrl     := RootUrl + 'memberlist.php' + VeriOku( strGelen, 'memberlist.php', '"', True);
           VeriOku( strGelen, 'class="username', '>', True );
         Bilgi.Yazar        := VeriOku( strGelen, '', '<', True);
         Bilgi.CevapSay     := VeriOku( strGelen, '"topicdetails">', '<', True);
         Bilgi.GoruntuSay   := VeriOku( strGelen, '"topicdetails">', '<', True);
           VeriOku( strGelen, '"topicdetails"', '"', True);
         Bilgi.SonMesajTar  := VeriOku( strGelen, '">', '<', True);
         Bilgi.SonUserUrl   := RootUrl + 'memberlist.php' + VeriOku( strGelen, 'memberlist.php', '"', True);
           VeriOku( strGelen, 'class="username', '>', True );
         Bilgi.SonUser      := VeriOku( strGelen, '', '<', True);
         Bilgi.SonMesajUrl  := RootUrl + VeriOku( strGelen, './', '"', True);

         Liste.Add( Format('%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|', [  Bilgi.StateImg,
                                                                      Bilgi.StateTitle,
                                                                      Bilgi.CevapSay,
                                                                      Bilgi.GoruntuSay,
                                                                      Bilgi.Baslik,
                                                                      Bilgi.BaslikUrl,
                                                                      Bilgi.AcilisTar,
                                                                      Bilgi.Yazar,
                                                                      Bilgi.YazarUrl,
                                                                      Bilgi.SonMesajTar,
                                                                      Bilgi.SonMesajUrl,
                                                                      Bilgi.SonUser,
                                                                      Bilgi.SonUserUrl
                                                                  ]) );
         Dispose(Bilgi);
      end; // While Thread...

      strGelen := FstrGelen; // Tazeleyelim...
      strAra := '">Sonraki</a>'; // Sonraki sayfa varsa linki döndürelim.. Lazım olur...
      if boolSonraki AND ( pos(strAra, strGelen) > 0 ) then
      begin
        strGelen := Copy(strGelen, 1, pos(strAra, strGelen)-1);
        strAra := '<a href="./';
        while pos(strAra, strGelen) > 0
          do System.Delete( strGelen, 1, Pos(strAra, strGelen) + length(strAra)-1);
        FSonURL := RootUrl + StringReplace( strGelen, '&', '&', [rfReplaceAll] );
        boolSonraki := True;
      end;
    end; // while
  end; // else
  Result := FsonUrl;
end;

function tDelphiTurkiyeHelper.ForumTopicPosts( strTopicUrl: String; Liste: TStrings; boolTumSayfalar : Boolean): String;
Var
  strTopAra,
  strGelen,
  strAra      : String;
  Bilgi       : pForumTopicPost;
  boolSonraki : Boolean;
begin
  Result := ''; //sonraki sayfa...
  if NOT FboolLogin then Exit;

// --- Style Paketine Özel Offset --- //
  if FStyleStr = 'subsilver2' then begin
    strTopAra      := 'class="anchor"';
  end
  else begin
    Liste.Text := 'Forum style paketi "'+ FStyleStr+'" parse edilemedi...';
    Exit;
  end;
// ---------------------------------- //
  Liste.Clear;

  boolSonraki := True;
  FSonUrl     := strTopicUrl;
  while boolSonraki do
  begin
    FStrGelen  := FIdHttp.Get( FSonUrl );

    strGelen := FstrGelen; // Tazeleyelim...
    strAra := '">Sonraki</a>'; // Sonraki sayfa varsa linki döndürelim.. Lazım olur...
    if pos(strAra, strGelen) > 0 then begin
      strGelen := Copy(strGelen, 1, pos(strAra, strGelen)-1);
      strAra := '<a href="./';
      while pos(strAra, strGelen) > 0
        do System.Delete( strGelen, 1, Pos(strAra, strGelen) + length(strAra)-1);
      Result  := RootUrl + StringReplace( strGelen, '&', '&', [rfReplaceAll] );
      FSonUrl := Result;
    end else
    begin
      boolSonraki := False;
    end;
    if NOT boolTumSayfalar then boolSonraki := False;


    strGelen := FstrGelen; // Tazeleyelim...
    strAra := '<th>Yazar</th';
    VeriOku( strGelen, strAra, '>', True); // Buraya kadar törpüle...

    strGelen := VeriOku( strGelen, '', '<table width="100%" cellspacing="1" class="tablebg">', False);

    while Pos( strTopAra, strGelen) > 0 do
    begin // strTopic
      VeriOku( strGelen, strTopAra, '>', True); // Buraya kadar törpüle...
      New(Bilgi);
        VeriOku( strGelen, '"postauthor"', '>', True );
      Bilgi.User         := VeriOku( strGelen, '', '<', True );
        VeriOku( strGelen, 'Mesaj Başlığı:', '">', True );
      Bilgi.Baslik       := VeriOku( strGelen, '', '<', True );
      Bilgi.BaslikUrl    := RootUrl + VeriOku( strGelen, './', '"', True);
      Bilgi.StateImg     := VeriOku( strGelen, 'class="imageset ', '"', True );
      Bilgi.StateTitle   := VeriOku( strGelen, 'title="', '"', True );
      Bilgi.BaslikTar    := VeriOku( strGelen, 'Gönderilme zamanı:</b>', '<', True);
      Bilgi.UserState    := VeriOku( strGelen, 'title="', '"', True );
      Bilgi.UserRank     := VeriOku( strGelen, '"postdetails">', '<', True );
      Bilgi.UserRegTar   := VeriOku( strGelen, 'Kayıt:</b>', '<', True );
      Bilgi.UserMesCount := VeriOku( strGelen, 'Mesajlar:</b>', '<', True );

      strAra := Copy( strGelen, 1, Pos('"postbody">', strGelen )-1 );
      if Pos('Konum:', strAra) > 0 then
      Bilgi.UserFrom     := VeriOku( strGelen, 'Konum:</b>', '<', True );
      Bilgi.Mesaj        := VeriOku( strGelen, '"postbody">', '</div>', True );
      Bilgi.MesajTemiz   := TaglariTemizle( Bilgi.Mesaj );

      Liste.Add( Format('%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s', [
                                                                   Bilgi.StateImg,
                                                                   Bilgi.StateTitle,
                                                                   Bilgi.User,
                                                                   Bilgi.Baslik,
                                                                   Bilgi.BaslikUrl,
                                                                   Bilgi.BaslikTar,
                                                                   Bilgi.UserState,
                                                                   Bilgi.UserRank,
                                                                   Bilgi.UserRegTar,
                                                                   Bilgi.UserMesCount,
                                                                   Bilgi.UserFrom,
                                                                   Bilgi.Mesaj,
                                                                   Bilgi.MesajTemiz
                                                               ]) );
      Dispose(Bilgi);
    end; // While Thread...
  end; // While boolSonraki
end;

function tDelphiTurkiyeHelper.ActiveUserName: String;
begin
  Result := FstrUserName;
end;

procedure tDelphiTurkiyeHelper.Avatar(Bitmap: TBitmap);
begin
  if FAvatarBitmap <> Nil then Bitmap.Assign(FAvatarBitmap);
end;

function tDelphiTurkiyeHelper.IsLogged: Boolean;
begin
  Result := FboolLogin;
end;

function tDelphiTurkiyeHelper.LastContent: String;
begin
  Result := FstrGelen;
end;

function tDelphiTurkiyeHelper.Styles: String;
begin
  Result := FstrStyles;
end;

function tDelphiTurkiyeHelper.IdxFromImageSet(strImageSet: String): Integer;
Var
  i : Integer;
begin
  Result := -1;
  i := Low(ForumImageSet);
  while ( i <= High(ForumImageSet) ) AND ( Result < 0 ) do begin
    if strImageSet = ForumImageSet[i] then Result := i;
    inc(i);
  end;
end;

procedure tDelphiTurkiyeHelper.SmallImageRefresh;
Var
  i          : Integer;
  aResStream : TResourceStream;
begin
  if (High(ForumImages)- Low(ForumImages)+1) > 0 then
  begin
    for i := Low(ForumImageSet) to High(ForumImageSet)
    do ForumImages[i].Free;
  end;

  SetLength( ForumImages, High(ForumImageSet)- Low(ForumImageSet)+1 );
  for i := Low(ForumImageSet) to High(ForumImageSet) do
  begin
    aResStream := TResourceStream.Create( HInstance, ForumImageSet[i], RT_RCDATA);
      ForumImages[i] := TBitmap.Create;
      ForumImages[i].LoadFromStream( aResStream );
    aResStream.Free;
  end;

// end else
// begin
//   i := Low(aStaticList);
//     ImageList.Clear;
//   aResBitmap := TBitmap.Create;
//   aBitmap    := TBitmap.Create;
//   Try
//     while ( i <= High(aStaticList) ) do
//     begin
//       aResStream := TResourceStream.Create( HInstance, aStaticList[i], RT_RCDATA);
//         aResBitmap.LoadFromStream( aResStream );
//       aResStream.Free;
//
//       aBitmap.Width  := ImageList.Width;
//       aBitmap.Height := ImageList.Height;
//       aBitmap.Canvas.Brush.Color := clWhite;
//
//       ImageList.Masked := True;
//       aBitmap.Canvas.FillRect( aBitmap.Canvas.ClipRect );
//       aBitmap.Canvas.StretchDraw( Rect(0, 0, aBitmap.Width, aBitmap.Height), aResBitmap ); // aKucuk'i küçülterek Resim2'ye çizdik...
//       ImageList.AddMasked(aBitmap, clWhite);
//       inc(i);
//     end;
//   Except
//
//   End;
//   aResBitmap.Free;
//   aBitmap.Free;

end;

{$IF defined(MSWINDOWS)}
  Procedure tDelphiTurkiyeHelper.DummyImageTazele( strRCFolderPath, strRCFileName, strImageFolderName : String);
  Type
    pState = ^tState;
    tState = Record
      State,
      StateImg,
      StateUrl : String;
    end;
  Var
    strGelen, strAra, strImageFolder : String;
    States : Array of pState;
    i  : Integer;
    MS : TMemoryStream;
    aBitmap : TBitmap;
    aGif    : TGifImage;
  begin
    strRCFolderPath    := SysUtils.ExcludeTrailingPathDelimiter( strRCFolderPath );
    strImageFolder     := strRCFolderPath + '\' + strImageFolderName;
    if NOT DirectoryExists(strImageFolder)
      then ForceDirectories( strImageFolder );

    strGelen := FIdHttp.Get('http://www.delphiturkiye.com/forum/styles/subsilver2/theme/stylesheet.css');
    strGelen := VeriOku( strGelen, '/* Global imageset items */', '/*', False);

    i := -1;
    while Pos('.imageset.', strGelen) > 0 do
    begin
      inc(i);
      SetLength( States, i+1 );
      New( States[i] );
      strAra := '.imageset.';
      System.Delete( strGelen, 1, Pos(strAra, strGelen)+ Length(strAra)-1 );
      States[i].State    := VeriOku( strGelen,   '', '{', True );
      States[i].StateImg := VeriOku( strGelen, '/images/', '"', True );
      States[i].StateUrl := 'http://www.delphiturkiye.com/forum/styles/subsilver2/theme/images/' + States[i].StateImg;
    end;

    With TStringList.Create do
    begin
      aBitmap := TBitmap.Create;
      aGif    := TGifImage.Create;
      MS      := TMemoryStream.Create;// FileStream.Create( strImageFolder + '\' + States[i].StateImg, fmCreate );
      for i := Low(States) to High(States) do
      begin
        Try
          if UpperCase( ExtractFileExt( States[i].StateImg )) = '.GIF' then
          begin
            FIdHttp.Get( States[i].StateUrl, MS );
            MS.Seek(0, soFromBeginning);
            aGif.LoadFromStream( MS );
            aBitmap.Assign( aGif );
            aBitmap.SaveToFile( ChangeFileExt( strImageFolder + '\' + States[i].StateImg, '.bmp' ) );
         // RC için iste oluşturuyoruz...
            Add( Trim(States[i].State) + #9#9#9 + 'RCDATA' + #9 + strImageFolder + '\' + ChangeFileExt( Trim(States[i].StateImg), '.bmp') );
          end;
        Finally
          MS.Clear;
        End;
        Dispose( pState(States[i]) ); // işi biteni free edelim...
      end;
      MS.Free;
      aBitmap.Free;
      aGif.Free;
      SaveToFile( strRCFolderPath + '\' + strRCFileName );
      Free;
    end;
  end;
{$ENDIF}

function tDelphiTurkiyeHelper.TaglariTemizle(strIcerik: String): String;
Var
  strAra, strGelen, strVeri : String;
begin
  Result := strIcerik;
  Result := StringReplace( Result,      '<br />', '', [rfReplaceAll] );
  Result := StringReplace( Result, '<!-- m -->', '', [rfReplaceAll] );
  // Mesaj içindeki Smileys
  while Pos('<img class="smilies"', Result) > 0 do
  begin
    strGelen := Result;
    strAra   := '<img class="smilies"';
      System.Delete(strGelen, 1, Pos(strAra, strGelen)-1 );
    strAra   := Copy( strGelen, 1, Pos('/>', strGelen ) + 1 );
    strVeri  := ' ' + VeriOku( strAra, 'alt="', '"', False ) + ' '; // :)
    Result   := StringReplace( Result, strAra, strVeri, [rfReplaceAll] );
  end;

  // Mesaj içindeki Resimler
  while Pos('<img src="', Result) > 0 do
  begin
    strGelen := Result;
    strAra   := '<img src="';
      System.Delete(strGelen, 1, Pos(strAra, strGelen)-1 );
    strAra   := Copy( strGelen, 1, Pos('/>', strGelen ) + 1 );
    strVeri  := '[' + VeriOku( strAra, 'alt="', '"', False ) + ']';
    Result   := StringReplace( Result, strAra, strVeri, [rfReplaceAll] );
  end;

  // Mesaj içindeki linkleri
  while Pos('<a class="postlink"', Result) > 0  do
  begin
    strGelen := Result;
    strAra   := '<a class="postlink"';
      System.Delete(strGelen, 1, Pos(strAra, strGelen)-1 );
    strAra   := Copy( strGelen, 1, Pos('</a>', strGelen ) + 3 );
    strVeri  := VeriOku( strAra, 'href="', '"', False ); // :)
    Result   := StringReplace( Result, strAra, strVeri, [rfReplaceAll] );
  end;

  // Mesaj içindeki ekli dosyalar
  while Pos('<div class="attachtitle">', Result) > 0 do
  begin
    strGelen := Result;
    strAra   := '<div class="attachtitle">';
      System.Delete(strGelen, 1, Pos(strAra, strGelen)-1 );
    strAra   := Copy( strGelen, 1, Pos('</div>', strGelen ) + 5 );
    strVeri  := '';
    strGelen := StringReplace( strGelen, strAra, strVeri, [rfReplaceAll] );

    strAra   := '<div class="attachcontent"';
      System.Delete(strGelen, 1, Pos(strAra, strGelen)-1 );
    strAra   := Copy( strGelen, 1, Pos('</div>', strGelen ) + 5 );
    strVeri  := '<Ekli Dosya>';
    Result   := StringReplace( Result, strAra, strVeri, [rfReplaceAll] );
  end;

  //while Pos('<div class="quotetitle">', Result > 0 do begin
  //  strGelen := Result;
  //  strAra   := '<div class="quotetitle"';
  //    System.Delete(strGelen, 1, Pos(strAra, strGelen)-1 );
  //  strAra   := Copy( strGelen, 1, Pos('</div>', strGelen ) + 5 );
  //  strVeri  := '[ ' + VeriOku( strAra, '">', '<', False ) + ' ]';
  //  Result   := StringReplace( Result, strAra, strVeri, [rfReplaceAll] );
  //end;

end;

procedure tDelphiTurkiyeHelper.TextKaydet( strIcerik, strPrefix, strKonum: String );
Var //TextKaydet( strGelen, 'Gelen_FormIcerik_', 'd:\response' );
  i : Integer;
  strDosya : String;
begin
  i := 1;
  strDosya := SysUtils.ExcludeTrailingPathDelimiter( strKonum ) + '\' + format('%s%.2d.html', [strPrefix, i ]);
  while FileExists( strDosya ) do begin
    Inc(i);
    strDosya := ExcludeTrailingPathDelimiter( strKonum ) + '\' + format('%s%.2d.html', [strPrefix, i ]);
  end;

  With TStringList.Create do begin
    Text := strIcerik;
    SaveToFile(strDosya);
    Free;
  end;
end;

function tDelphiTurkiyeHelper.VeriOku( Var strIcerik: String; strAra, strSon: String; boolKaynakTemizle:Boolean ): String;
Var
  strBlok : String;
begin
  strBlok := strIcerik;
  if (strAra = '') OR ( pos( strAra, strBlok ) > 0 ) then
  begin
    if strAra <> ''
      then System.Delete( strBlok, 1, Pos(strAra, strBlok) + Length(strAra)-1);
    Result := Trim( Copy( strBlok, 1,Pos( strSon, strBlok )-1) );
    strAra := strSon;
      System.Delete( strBlok, 1, Pos(strAra, strBlok) + Length(strAra)-1);
    Result := StringReplace(Result,  '&', '&', [rfReplaceAll]);
    Result := StringReplace(Result, '&nbsp;', ' ', [rfReplaceAll]);
    Result := Trim(Result);
    if boolKaynakTemizle then strIcerik := strBlok;
  end else Result := '';
end;

function tDelphiTurkiyeHelper.StylesList: String;
Var
  strGelen, strAra, strDeger : String;
begin
  strGelen   := FIdHttp.Get( 'http://www.delphiturkiye.com/forum/styles/' );

  FsonUrl   := 'http://www.delphiturkiye.com/forum/styles/';
  FstrGelen := strGelen;

  strAra := '<a href="/forum/">';
    System.Delete( strGelen, Pos(strAra, strGelen), Length(strAra)-1 );

  while Pos('<li><a href="', strGelen) > 0 do begin
    strDeger := VeriOku( strGelen, '<li><a href="', '/', True );
    if Result = '' then Result := strDeger
                   else Result := Result + #13 + strDeger;
  end;
end;

procedure tDelphiTurkiyeHelper.DetayVeAvatarOku;
Var
  strGelen : String;
  MS : TMemoryStream;
  {$IF defined(MSWINDOWS)}
    aGif : TGifImage;
  {$ENDIF}
  strDownload : String;
begin
  if NOT FboolLogin then Exit;

  strGelen := FIdHttp.Get( 'http://www.delphiturkiye.com/forum/ucp.php?style=2&i=ucp_profile&mode=reg_details' );
  FStrGelen  := strGelen;
    VeriOku( strGelen, '>Kullanıcı adı:', '<', True );
    FstrUserName := VeriOku( strGelen, '"gen">', '<', True);

  strGelen := FIdHttp.Get( 'http://www.delphiturkiye.com/forum/ucp.php?style=2&i=ucp_profile&mode=avatar' );
    VeriOku( strGelen, '<th colspan="2" valign="middle">Avatarınız</th>', '<', True );
    FstrAvatarUrl := VeriOku( strGelen, 'src="./', '"', True);

    if FAvatarBitmap = Nil
      then FAvatarBitmap := TBitmap.Create;

    strDownload := FstrAvatarUrl;
    while Pos('.', strDownload) > 0 do System.Delete(strDownload, 1, Pos('.', strDownload) );
  {$IF defined(ANDROID)}
      strDownload := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDownloadsPath, 'avatar.' +strDownload  );
  {$ELSEIF defined(MSWINDOWS)}
      strDownload := ExtractFilePath(Application.Exename) + 'avatar.' +strDownload;
  {$ENDIF}

    MS := TMemoryStream.Create;
      FIdHttp.Get( FstrAvatarUrl, MS );
      MS.Seek(0, soFromBeginning);
      MS.SaveToFile( strDownload );
  {$IF defined(ANDROID)}
      FAvatarBitmap.LoadFromFile( strDownload );
  {$ELSEIF defined(MSWINDOWS)}
      if UpperCase( ExtractFileExt(strDownload) ) = '.GIF' then
      begin
        aGif := TGifImage.Create;
        aGif.LoadFromStream( MS );
          FAvatarBitmap.Assign( aGif );
        aGif.Free;
      end;
  {$ENDIF}
    MS.Free;
end;

procedure tDelphiTurkiyeHelper.BrowserIleAc(strUrl: String);
  {$IF defined(ANDROID)}
Var
  Intent : JIntent; // Androidapi.JNI.GraphicsContentViewText
  {$ENDIF}
begin
  {$IF defined(ANDROID)}
    Intent := TJIntent.Create;
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
    Intent.setData(StrToJURI( strURl ));
    SharedActivity.startActivity(Intent);
  {$ELSEIF defined(MSWINDOWS)}
    ShellExecute(0, 'open', PChar(strUrl), nil, nil, SW_SHOWNORMAL);
  {$ENDIF}
end;

end.

Dosya ekleri
DelphiTurkiye_HelperCLASS.rar
Delphi Türkiye Forum (HelperClass)
(57.75 KiB) 121 kere indirildi
Resim Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen mrmarman »

Örnek bir kullanım yazayım... :idea:

Forma koyacağınız :

- BitBtn1 Login butonu...
- BitBtn2 LogOut butonudur...
- Memo da içeriği gösterecektir.

Kod: Tümünü seç

uses DelphiTurkiyeHelper;

Var
  aHelper : tDelphiTurkiyeHelper;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  a, b : TStringList;
  strSonraki, strTopicURL : String;
  i : Integer;
begin
  BitBtn1.Enabled := False;
  if aHelper = Nil
    then aHelper   := tDelphiTurkiyeHelper.Create;

  if NOT aHelper.IsLogged then
  begin
    BitBtn1.Enabled := NOT aHelper.Login( 'login', 'parola' );
    BitBtn2.Enabled := NOT BitBtn1.Enabled;
  end;

  if assigned( aHelper ) AND ( aHelper.IsLogged ) then
  begin
    aHelper.SmallImageRefresh( );

    Memo1.Lines.Text := aHelper.Styles;

    a := TStringList.Create;

      aHelper.OnlineUsers( 0, a );
      Memo1.Lines.Add('Online Kullanıcılar:');
      Memo1.Lines.Add('--------------------');
      Memo1.Lines.Add( a.Text );
      Memo1.Lines.Add('');

      aHelper.ForumNotifications( a );
      Memo1.Lines.Add('Bildirimler........:');
      Memo1.Lines.Add('--------------------');
      Memo1.Lines.Add( a.Text );
      Memo1.Lines.Add('');

      aHelper.ForumTopicTitles( 0, a, -1 );

      Memo1.Lines.Add('Forum Başlıkları');
      Memo1.Lines.Add('--------------------');
      Memo1.Lines.Add( a.Text );
      Memo1.Lines.Add('');

      strSonraki := aHelper.ForumTopicTitles( 2, a, 2 );

      Memo1.Lines.Add('Programlama Başlığı (ilk 2 sayfa):');
      Memo1.Lines.Add('--------------------');
      Memo1.Lines.Add( a.Text );
      Memo1.Lines.Add('');
      Memo1.Lines.Add('Sonraki Sayfa Linki');
      Memo1.Lines.Add(strSonraki);
    a.Free;
  end;
end;

Kod: Tümünü seç

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  if assigned( aHelper ) AND ( aHelper.IsLogged ) then
  begin
    BitBtn1.Enabled := aHelper.LogOut;
    BitBtn2.Enabled := NOT BitBtn1.Enabled;
    aHelper.Free;
    aHelper := Nil;
  end;
end;
Resim Resim
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen G.Arkas »

Muharrem abim çok teşekkürler kodlar için. Tam ağzımıza layık olmuş yine :) Yalnız uygulama bende yine çalışmadı :(

Kod: Tümünü seç

Application does not support this phone.
Asus Zenfone 2 Atom 4 GB
Resim
Kullanıcı avatarı
badkursat
Üye
Mesajlar: 84
Kayıt: 03 Mar 2014 08:58

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen badkursat »

Kodunuza sağlık :)
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen vkamadan »

Geçmiş olsun Muharrem bey acil şifalar ,
elinize sağlık.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen mrmarman »

Dilekleriniziçin teşekkürler.

Gürkan kardeşim, Atom demişsin ya, senin telefon Intel işlemcili. Ancak android sürümün yeni. Misafirlerim geldi, onları uğurlayınca sana yeni bir apk derleyeceğim beraber denemiş oluruz.

Durum şu, intel işlemcili android cihazlar için Houdini Project diye bir çalışma yapılmış. Android cihazda bu kurulu ise bu uyarlama ile Delphi FMX uygulamaları klasik apk dosyaları gibi uyumlu oluveriyormuş.

Önemli bir ayrıntı. Android (intel) version 4.4.2 (KitKat) ve üzeri için zaten kurulu olarak dağıtılıyormuş ki sende de kurulu olması muhtemel.

Bana düşen görev de Delphi IDE'nin deployment sayfasındaki "x86 .so binary" işaretini kaldırmayı ihmal etmemek ve bu şekilde yeniden derleyip o halini sana yollamak.

Sen kendi telefonuna denemeler yaptın mı daha önce? Böyle bir durum ile karşılaşmış mıydın?
Resim Resim
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen SimaWB »

Muharrem Bey, geçmiş olsun. Emeğinize sağlık...
There's no place like 127.0.0.1
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 709
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen greenegitim »

Hocam çok geçmiş olsun emeğinize sağlık..
Mücadele güzelleştirir!
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen mrmarman »

Tekrar teşekkürler.

Parametre olarak pointer type array de döndürmeye müsaittir. Daha yaygın kullanım gördüğümden kolaylık için tstrings tercih ettik çünkü ikinci bir tstringlist kullanıp her satırı ayraç katakteri kullanarak DelimitedText, Delimiter, StrictDelimiter üçlüsü ile bileşenlerine ayırabilmek mümkün.

Forum style ayarınız ne olursa olsun sistem otomatik olatak subsilver2 olarak okumak üzere forum kodlarını zorluyor. Bu sayede style sayısı kadar farklı parse fonksiyonunu yazmak zahmetinden kurtuluyoruz.

Forum tema stye olarak prosilver kullananlar deneyebilir, WebBrowser adres satırının sonuna &style=2 ifadesini eklerseniz tema ne olursa olsun subsilver2 olarak cevap dönecektir. ( adres satırında # tag varsa öncesine koyun yoksa işlemez ) Bu da elimizi oldukça kolaylaştırdı.

Mesela bana süpriz okan ne oldu biliyor musunuz? Bir başkığa yeni eklenmiş cevaplar da site kodları içerisinde yer alırken normal bakışta gözden kaçması. Android versiyonda yeni başlıkları bırakın başlıpiğa yazılan yeni okunmamış cevapların iconu da sarı renkte.
Artık forum için bir şeyler yapmak için elinizde oyuncak hazır. Yeni site olması şart değil. Herkes kendisine özel Win32 veya Android projesi halinde site yapabailir. Kendine özel fonksiyon kazandırabilir. :D
Resim Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen mrmarman »

Merhaba Gürkan,
- Burada ilk anda kalabalıklık oluşturur deyip sana özel mesaj ile yolladım ama sonra düşününce elinde Intel işlemcili Android cihazları olanlar denesin diye kararımı değiştirdim...

Aşağıda linkini verdiğim RAR paketinde 2 adet klasör var. İçerisinde aşağıdaki resimler ile derlenmiş APK dosyaları var.
Bu linkten indirebilirsin.

Resim

Resim

Sonuç APK dosya içeriği aşağıdaki gibi oldu...
Bakalım sende bir değişiklik olacak mı...

Resim
Resim Resim
thelvaci
Kıdemli Üye
Mesajlar: 769
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen thelvaci »

Çok geçmiş olsun, Allah acil şifalar versin Muharrem bey.
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: DelphiTurkiye Forum (Android)

Mesaj gönderen G.Arkas »

mrmarman yazdı:Merhaba Gürkan,
- Burada ilk anda kalabalıklık oluşturur deyip sana özel mesaj ile yolladım ama sonra düşününce elinde Intel işlemcili Android cihazları olanlar denesin diye kararımı değiştirdim...

Aşağıda linkini verdiğim RAR paketinde 2 adet klasör var. İçerisinde aşağıdaki resimler ile derlenmiş APK dosyaları var.
Bu linkten indirebilirsin.

Resim

Resim

Sonuç APK dosya içeriği aşağıdaki gibi oldu...
Bakalım sende bir değişiklik olacak mı...

Resim
Abicim teşekkür ederim. Sorunsuz çalıştı. Ben mips i kaldırmamıştım kendi uygulamamda sayende bir şey daha öğrendik. Allah razı olsun. Tekrardan acil şifalar abime. :bravo: :bravo:

Not: Unchecked versiyon bende çalıştı. Bu arada tasarım ve renklendirmeler şahane olmuş. Çok kullanışlı.
Resim
Cevapla