Merhabalar.
Verdiyiniz bilgiler dahil en seon cevabanız ve her ne kadar ingilizcem olmasada forumlarda kodları okumaya çalışarak Azerbaycan saati ile 08:33-e kada dayana bildim, Onda sornrası gün ışığı ve Uyku baskını yedim..
Hala mantığını tam olarak anlayamadığım bir şeyin içinde kıvranıp durmaktayım.
Sabaha kadar yaptığım denemelerde her iki satırdan bir mantıksal teori kuramadığım yada kodu nerde nasıl çalıştırılacağına karar veremediyim yerler çok oldu.
Döngü içine kanal nasıl sokulur, for içinde olan J değişkeni kadar kanalın nasıl oluşturulması gerek, ThreadİD-si hafızada tururak ListView üyesine nasıl ait edilmelidir gibi binlerce soru yığını birikti kafamda..
Her döngü sırasıyla değilde sabit bir değer kadar ThreadİD si nasıl oluşturulmalı gibi çok zorluklar çıkardım kendime.
Bence bunu anlamak için Thread hakında çok fazla şey bilmek ve onu çok çok iyi anlamak gerekir..
Ortaya çıkardığım Thread işleminde (Buna Thread diyemiyorum çünki sıradan procedure gibi işliyor) normalda benim Thread olmadan işleyişimden bir farkını göremedim.
Yazdığım kodlar :
Kod: Tümünü seç
unit Unit2;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
XSuperJSON, XSuperObject, MultiDetailAppearanceU, FMX.Graphics, FMX.Objects;
type
TMyThread = class(TThread)
private
procedure UpdateMainThread;
protected
procedure Execute; override;
public
Sonuc: String;
constructor Create(Suspended: Boolean);
end;
implementation
uses Unit1, Unit3, FMX.ListView;
constructor TMyThread.Create(Suspended: Boolean);
begin
Inherited Create(Suspended);
FreeOnTerminate := True;
end;
procedure TMyThread.Execute;
var
X , Obj: ISuperObject;
J: Integer;
begin
Form1.ListView1.Items.Clear;
X := TSuperObject.Create(Form1.IdHTTP1.Get('http://site.com/?~/az/api/kateqori/'));
with X.A['tipler'] do
for J := 0 to Length -1 do
begin
Obj := O[J];
begin
Sonuc:=Obj.S['name']+' ('+Obj.I['count'].ToString+')';
Synchronize(UpdateMainThread);
end;
end;
end;
procedure TMyThread.UpdateMainThread;
var
LItem: TListViewItem;
begin
LItem:=Form1.ListView1.Items.Add;
LItem.Text:=Sonuc;
end;
Kod: Tümünü seç
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.ListView.Types, FMX.StdCtrls, FMX.ListView, Unit2, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
ToolBar1: TToolBar;
ListView1: TListView;
Button1: TButton;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
procedure ListView1ItemClick(const Sender: TObject;
const AItem: TListViewItem);
private
CountingThread: TMyThread;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
CountingThread := TMyThread.Create(True);
CountingThread.Resume;
end;
Burdaki Thread biraz farklı gibi gözüküyor ama tam olarak doğrumu yalnışmı bilemiyorum.
Bu kodların doğruluğunu yada yanlışlığnı sölemenizi isterim..
Sizin verdiyiniz örnek üzere neden kod yazmadığıma gelince sorduğum sorularda cevaplarınızı tam olarak anlayamadım.
En önemlisi bir Thread İD-sini nasıl değişken olarak ekleyip döngü içinde kullanacağımıda..
Tıklam içinde oluşturduğum kanallara gelince dediyiniz gibi 100 kanal oluşturma gibi bir niyetim yok.
Orda yazdığnız 100 kanal satrını bir misal olduğunu anladım.
Şöle sölemek gerekirse
KX := TSuperObject.Create(Form1.IdHTTP1.Get('
http://site.com/?~/az/api/cat/'+X.A['tipler'].O[Form1.ListView1.ItemIndex].I['id'].ToString+'/0/5'));
Dikkat ederseniz linkin sonundaki "/0/5/" bana 5 ileti getirir..
Yani kanal sınırım her zaman 5 tanedir. Ama sayfayı yüklediyimde aynı sorgu şu şekilde geder "/5/5"..
Aslında benim yapmaya çalıştığım işlemi hızlandırmaktı ama galiba işin içinden çıkamadım..
Java tarafında yazılan programı her hangi bir android cihazına yüklediğimizde bir tıklamada 300 kayıtı bir saniye içinde gözler önüne seriyor.
Bu kayıt sayısı için resimlerde geçerlidir ki bende bu hıza şaşırıyorum.
Deyerli vaktinizi ayırıp cevaplar yazdığınız ve yardımlarınız için çok minnetdarım Muharrem abi..
Azerbaycandan Sevgilerimle..