Yorumları: 950
Konuları: 152
Kayıt Tarihi: 29-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.135 Uzman
İyi günler,
Aklıma takılan bir durum var ;
Daha önce procedure ya da function kullanmadım.
Kitap ve bir kaç websitesinden gördüğüm kadarıyla biliyorum. fakat bir procedure'ü bir bileşenin yerine değişmek ne kadar mantıklı bir iştir kavrayamadım.
bileşenlerin procedure'leri ile özel procedure'ler arasında bir fark var mı ?
Kitapta ;
Her bileşen olayı bir procedure'dür.
yazıyor fakat yine de sorup daha emin olmak istedim.
Örneğin ;
procedure TForm1.deneme();
begin
TThread.Sleep(500);
Button1.Text := 'test';
Button1.Width := 100;
Button1.Height := 50;
Exit
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
deneme();
end;
Gibi timer yerine bu şekilde procedure kullansam ilerde timer'ı aratır mı bana ?
Kod uzunluğu
Aynı anda Farklı işlemler gerçekleştirme
formlar arası iletişim
Gibi durumlar da sonuçlar aynı mı olur ?
Yorumları: 28
Konuları: 6
Kayıt Tarihi: 06-11-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 72 Başlangıç
Hayır bir sıkıntı yaşamazsınız o konuda timer le de yapsanız aynı işlevi görücektir. Ama bi ayrıntı
Delphi de bilmiyorum ama c# da TThread.Sleep komutu çalışırken programın tüm fonksiyonları devre dışı kalır yani programı komple donduruyor diye biliyorum timer ise programı dondurmadan çalışıyor diye biliyorum.
Yorumları: 950
Konuları: 152
Kayıt Tarihi: 29-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.135 Uzman
(23-05-2019, Saat: 02:14)crowlin Adlı Kullanıcıdan Alıntı: Hayır bir sıkıntı yaşamazsınız o konuda timer le de yapsanız aynı işlevi görücektir. Ama bi ayrıntı
Delphi de bilmiyorum ama c# da TThread.Sleep komutu çalışırken programın tüm fonksiyonları devre dışı kalır yani programı komple donduruyor diye biliyorum timer ise programı dondurmadan çalışıyor diye biliyorum.
Net bir bilgi bilmek güzel. Teşekkürler hocam.
Delphi de de sadece Sleep() komutu programı pert ediyor bunun için TThread.Sleep() kullandım hocam.
Timer'lardan kurtulayım da TThread yardımcı olur bize artık.
Yorumları: 4.245
Konuları: 381
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 17.107 Üstad
Merhaba,
@ crowlin in belirttiği hususlara katılıyorum. Maksat bir timer kullanmaksa bunu bir kanal açarak, ana thread'dan bağımsız çalışmasını gerçekleştirebilirsiniz.
Bunun için daha önce paylaştığım bir konuya ( Belli Periyotlarla Bir Metodun İşletilmesi) göz atabilirsiniz.
Procedure veya function'ların bir bileşen yerine kullanılması veya bir bileşenin herhangi bir olayı işimizi görüyorsa yalnızca bu olay için o bileşenin kullanılması pek mantıklı değil.
Procedure ve function'ların asıl amacı işleri kategorize etmektir.
Örneğin,
Firmanıza ait bir deponuz var.
Sorumlu personele: "Bana depodan 2 adet bilgisayar getir. Bu bilgisayarların RAM'lerini yükselteceğiz, bunun için de eski bilgisayarlardan 2 Adet RAM sök, getir."
Yada: "Bugün tüm malzemeleri sayalım."
İlk olayda, bir istek yapılıyor. Sonuç olarak 2 adet PC ve 2 adet RAM isteniyor. Function'ların amacı da tıpkı böyledir; parametre gönderiyorsunuz (olmayabilir de) ve bir sonuç bekliyorsunuz. Sonucu alıp ihtiyacınızı gideriyorsunuz.
İkinci olayda, bir iş isteği yapılıyor. Sonuç alınabilir veya sonra değerlendirilebilir. Procedure'lerin amacı ana işlerden bağımsız bir işi gerçekleştirmektir.
Peki bileşen ile bu Procedure veya function'lar arasındaki fark nedir?
Bileşen bu firmadır.
Çalışanları (her biri ayrı bir thread olarak düşünebilirsiniz), her çalışanın kendine özgü özel becerileri (bunları da bileşenin property'lerine benzetebiliriz), sabahları yapılacak işler (initilization veya create), akşam firmayı kapatmadan son kontroller ve son işler (finalization veya destroy), yönetimin verdiği talimatlar ve istekleri (procedure, function) gibi daha bir çok işlevi barındırır.
Procedure veya function'lar bileşenin ayrılmaz bir üyesidir. Bileşenler ise bir sektörden sorumlu komplike yapılardır.
DelphiCan'dır!
Yorumları: 2.153
Konuları: 259
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.659 Uzman
23-05-2019, Saat: 12:06
(Son Düzenleme: 23-05-2019, Saat: 12:08, Düzenleyen: yhackup.)
Normalde hazır kod vermeyi sevmem ama bu kodu incele biraz vcl uygulaması ama kullanım hakkında çok fikir verecek
Aşağıdaki linkte formun çalışma videosu var onu da izle.
https://blog.yakupulutas.com/uzak-masaus...ygulamasi/
unit UpdateForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, dxGDIPlusClasses, Vcl.ExtCtrls, cxGraphics, cxLookAndFeels,
cxLookAndFeelPainters, Vcl.Menus, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee,
dxSkinDarkRoom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans,
dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin,
dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue,
dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue,
dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, System.math,
dxSkinOffice2016Colorful, dxSkinOffice2016Dark, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp,
dxSkinSharpPlus, dxSkinSilver, dxSkinSpringTime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
dxSkinTheBezier, dxSkinsDefaultPainters, dxSkinValentine, dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark,
dxSkinVisualStudio2013Light, IdComponent, Zip, dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue, Vcl.StdCtrls, cxButtons, shellapi,
IdHTTP, Vcl.ComCtrls, clMultiDC, clSingleDC, clDownLoader, clResourceState;
type
TMyHTTP = class(TIdHTTP)
public
FileSize: Int64;
end;
TFrmUpdate = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Label1: TLabel;
btn_sil: TcxButton;
cxButton1: TcxButton;
Image4: TImage;
Image5: TImage;
LabelVersion: TLabel;
Prg1: TProgressBar;
Label2: TLabel;
whatisnew: TcxButton;
procedure cxButton1Click(Sender: TObject);
procedure IndirAnimation;
procedure Start;
procedure StartDownload(Url, FileName, FilePath: String);
procedure FormCreate(Sender: TObject);
procedure btn_silClick(Sender: TObject);
procedure doVisibile;
procedure whatisnewClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmUpdate: TFrmUpdate;
BlogUrl: String = 'https://blog.yakupulutas.com/uzak-masaustu-baglantisi-remote-desktop-connection-uygulamasi/';
DownloadUrl: String = 'https://blog.yakupulutas.com/wp-content/uploads/Uzakv3.zip';
Animation: TThread;
Terminated: boolean = False;
implementation
{$R *.dfm}
uses MainForm;
procedure TFrmUpdate.btn_silClick(Sender: TObject);
begin
doVisibile;
btn_sil.Enabled := False;
cxButton1.Enabled := False;
Start;
StartDownload(DownloadUrl, 'Uzakv3.zip', ExtractFileDir(Application.ExeName) + '\');
end;
procedure TFrmUpdate.cxButton1Click(Sender: TObject);
begin
Close;
end;
procedure TFrmUpdate.doVisibile;
begin
LabelVersion.Visible := not LabelVersion.Visible;
Image3.Visible := not Image3.Visible;
Label1.Visible := not Label1.Visible;
whatisnew.Visible := not whatisnew.Visible;
Image4.Visible := not Image4.Visible;
Image5.Visible := not Image5.Visible;
end;
procedure TFrmUpdate.FormCreate(Sender: TObject);
begin
Animation := TThread.CreateAnonymousThread(
procedure
var
i: integer;
begin
while Terminated do
begin
TThread.Queue(nil,
procedure
begin
IndirAnimation;
end);
Sleep(250);
end;
end);
end;
procedure TFrmUpdate.IndirAnimation;
var
lbl: TLabel;
begin
lbl := TLabel.Create(Self);
lbl.Parent := Image1.Parent;
lbl.Left := RandomRange(160, 240);
lbl.Top := 200;
lbl.Width := 31;
lbl.Height := 13;
lbl.Caption := Inttostr(Random(2));
TThread.CreateAnonymousThread(
procedure
var
i: integer;
ilbl: TLabel;
begin
ilbl := lbl;
for I := ilbl.Top to 410 do
begin
TThread.Queue(nil,
procedure
begin
ilbl.Top := i;
if i > 408 then
ilbl.Visible := False;
end);
Sleep(10);
end;
end).Start;
end;
procedure TFrmUpdate.Start;
begin
if Terminated = False then
begin
Terminated := True;
Animation.Start;
end
else
begin
Terminated := False;
end;
end;
procedure TFrmUpdate.StartDownload(Url, FileName, FilePath: String);
var
Down: TclDownLoader;
begin
Down := TclDownLoader.Create(nil);
try
try
Down.Url := StringReplace(Url, '\', '/', [rfReplaceAll]);
Down.LocalFile := FilePath + FileName;
Down.Start(False);
if FileExists(FilePath + FileName) then
begin
TThread.CreateAnonymousThread(
procedure
var
Zip: TZipFile;
begin
Sleep(500);
Zip := TZipFile.Create;
if FileExists(ExtractFileDir(Application.ExeName) + '\' + Application.ExeName + '_old') then
Deletefile(ExtractFileDir(Application.ExeName) + '\' + Application.ExeName + '_old');
RenameFile(Application.ExeName, Application.ExeName + '_old');
Zip.Open(ExtractFileDir(Application.ExeName) + '\' + 'Uzakv3.zip', zmRead);
Sleep(500);
Zip.ExtractAll(ExtractFileDir(Application.ExeName) + '\');
if FileExists(ExtractFileDir(Application.ExeName) + '\' + 'Uzakv3.zip') then
Deletefile(ExtractFileDir(Application.ExeName) + '\' + 'Uzakv3.zip');
Terminated := False;
TThread.Queue(nil,
procedure
begin
ShowMessage('Güncelleme tamamlandı, bir sonraki açılışta güncel uygulama açılacak');
Close;
end);
if Assigned(Zip) then
Zip.Free;
end).Start;
end
else
begin
ShowMessage('Güncelleme esnasında hata meydana geldi.');
end;
except
on E: Exception do
begin
ShowMessage(E.Message);
end;
end;
finally
Down.Free;
end;
end;
procedure TFrmUpdate.whatisnewClick(Sender: TObject);
begin
ShellExecute(Handle, 'open', PWideChar(BlogUrl), nil, nil, SW_SHOW);
end;
end.
(23-05-2019, Saat: 02:14)crowlin Adlı Kullanıcıdan Alıntı: Hayır bir sıkıntı yaşamazsınız o konuda timer le de yapsanız aynı işlevi görücektir. Ama bi ayrıntı
Delphi de bilmiyorum ama c# da TThread.Sleep komutu çalışırken programın tüm fonksiyonları devre dışı kalır yani programı komple donduruyor diye biliyorum timer ise programı dondurmadan çalışıyor diye biliyorum.
aynen öyle MainThreadı durduruyorsun bu durumda kullanıcı girişlerini yakalayamazsın bu sleepi 5 saniye ve üzerinde olursa windows tarafında not respondinge düşersin
Yorumları: 950
Konuları: 152
Kayıt Tarihi: 29-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.135 Uzman
23-05-2019, Saat: 13:21
(Son Düzenleme: 23-05-2019, Saat: 13:30, Düzenleyen: Mr.Developer.)
(23-05-2019, Saat: 09:16)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
@crowlin in belirttiği hususlara katılıyorum. Maksat bir timer kullanmaksa bunu bir kanal açarak, ana thread'dan bağımsız çalışmasını gerçekleştirebilirsiniz.
Bunun için daha önce paylaştığım bir konuya (Belli Periyotlarla Bir Metodun İşletilmesi) göz atabilirsiniz.
Procedure veya function'ların bir bileşen yerine kullanılması veya bir bileşenin herhangi bir olayı işimizi görüyorsa yalnızca bu olay için o bileşenin kullanılması pek mantıklı değil.
Procedure ve function'ların asıl amacı işleri kategorize etmektir.
Örneğin,
Firmanıza ait bir deponuz var.
Sorumlu personele: "Bana depodan 2 adet bilgisayar getir. Bu bilgisayarların RAM'lerini yükselteceğiz, bunun için de eski bilgisayarlardan 2 Adet RAM sök, getir."
Yada: "Bugün tüm malzemeleri sayalım."
İlk olayda, bir istek yapılıyor. Sonuç olarak 2 adet PC ve 2 adet RAM isteniyor. Function'ların amacı da tıpkı böyledir; parametre gönderiyorsunuz (olmayabilir de) ve bir sonuç bekliyorsunuz. Sonucu alıp ihtiyacınızı gideriyorsunuz.
İkinci olayda, bir iş isteği yapılıyor. Sonuç alınabilir veya sonra değerlendirilebilir. Procedure'lerin amacı ana işlerden bağımsız bir işi gerçekleştirmektir.
Peki bileşen ile bu Procedure veya function'lar arasındaki fark nedir?
Bileşen bu firmadır.
Çalışanları (her biri ayrı bir thread olarak düşünebilirsiniz), her çalışanın kendine özgü özel becerileri (bunları da bileşenin property'lerine benzetebiliriz), sabahları yapılacak işler (initilization veya create), akşam firmayı kapatmadan son kontroller ve son işler (finalization veya destroy), yönetimin verdiği talimatlar ve istekleri (procedure, function) gibi daha bir çok işlevi barındırır.
Procedure veya function'lar bileşenin ayrılmaz bir üyesidir. Bileşenler ise bir sektörden sorumlu komplike yapılardır.
Detaylı, Örnekli ve Güzel anlatım için çok teşekkürler hocam.
İnsan, kitapta da olsun istiyor böyle bir anlatım tarzı
(23-05-2019, Saat: 12:06)yhackup Adlı Kullanıcıdan Alıntı: Normalde hazır kod vermeyi sevmem ama bu kodu incele biraz vcl uygulaması ama kullanım hakkında çok fikir verecek 
Aşağıdaki linkte formun çalışma videosu var onu da izle.
https://blog.yakupulutas.com/uzak-masaus...ygulamasi/
unit UpdateForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, dxGDIPlusClasses, Vcl.ExtCtrls, cxGraphics, cxLookAndFeels,
cxLookAndFeelPainters, Vcl.Menus, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee,
dxSkinDarkRoom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans,
dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin,
dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue,
dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue,
dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, System.math,
dxSkinOffice2016Colorful, dxSkinOffice2016Dark, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp,
dxSkinSharpPlus, dxSkinSilver, dxSkinSpringTime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
dxSkinTheBezier, dxSkinsDefaultPainters, dxSkinValentine, dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark,
dxSkinVisualStudio2013Light, IdComponent, Zip, dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue, Vcl.StdCtrls, cxButtons, shellapi,
IdHTTP, Vcl.ComCtrls, clMultiDC, clSingleDC, clDownLoader, clResourceState;
type
TMyHTTP = class(TIdHTTP)
public
FileSize: Int64;
end;
TFrmUpdate = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Label1: TLabel;
btn_sil: TcxButton;
cxButton1: TcxButton;
Image4: TImage;
Image5: TImage;
LabelVersion: TLabel;
Prg1: TProgressBar;
Label2: TLabel;
whatisnew: TcxButton;
procedure cxButton1Click(Sender: TObject);
procedure IndirAnimation;
procedure Start;
procedure StartDownload(Url, FileName, FilePath: String);
procedure FormCreate(Sender: TObject);
procedure btn_silClick(Sender: TObject);
procedure doVisibile;
procedure whatisnewClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmUpdate: TFrmUpdate;
BlogUrl: String = 'https://blog.yakupulutas.com/uzak-masaustu-baglantisi-remote-desktop-connection-uygulamasi/';
DownloadUrl: String = 'https://blog.yakupulutas.com/wp-content/uploads/Uzakv3.zip';
Animation: TThread;
Terminated: boolean = False;
implementation
{$R *.dfm}
uses MainForm;
procedure TFrmUpdate.btn_silClick(Sender: TObject);
begin
doVisibile;
btn_sil.Enabled := False;
cxButton1.Enabled := False;
Start;
StartDownload(DownloadUrl, 'Uzakv3.zip', ExtractFileDir(Application.ExeName) + '\');
end;
procedure TFrmUpdate.cxButton1Click(Sender: TObject);
begin
Close;
end;
procedure TFrmUpdate.doVisibile;
begin
LabelVersion.Visible := not LabelVersion.Visible;
Image3.Visible := not Image3.Visible;
Label1.Visible := not Label1.Visible;
whatisnew.Visible := not whatisnew.Visible;
Image4.Visible := not Image4.Visible;
Image5.Visible := not Image5.Visible;
end;
procedure TFrmUpdate.FormCreate(Sender: TObject);
begin
Animation := TThread.CreateAnonymousThread(
procedure
var
i: integer;
begin
while Terminated do
begin
TThread.Queue(nil,
procedure
begin
IndirAnimation;
end);
Sleep(250);
end;
end);
end;
procedure TFrmUpdate.IndirAnimation;
var
lbl: TLabel;
begin
lbl := TLabel.Create(Self);
lbl.Parent := Image1.Parent;
lbl.Left := RandomRange(160, 240);
lbl.Top := 200;
lbl.Width := 31;
lbl.Height := 13;
lbl.Caption := Inttostr(Random(2));
TThread.CreateAnonymousThread(
procedure
var
i: integer;
ilbl: TLabel;
begin
ilbl := lbl;
for I := ilbl.Top to 410 do
begin
TThread.Queue(nil,
procedure
begin
ilbl.Top := i;
if i > 408 then
ilbl.Visible := False;
end);
Sleep(10);
end;
end).Start;
end;
procedure TFrmUpdate.Start;
begin
if Terminated = False then
begin
Terminated := True;
Animation.Start;
end
else
begin
Terminated := False;
end;
end;
procedure TFrmUpdate.StartDownload(Url, FileName, FilePath: String);
var
Down: TclDownLoader;
begin
Down := TclDownLoader.Create(nil);
try
try
Down.Url := StringReplace(Url, '\', '/', [rfReplaceAll]);
Down.LocalFile := FilePath + FileName;
Down.Start(False);
if FileExists(FilePath + FileName) then
begin
TThread.CreateAnonymousThread(
procedure
var
Zip: TZipFile;
begin
Sleep(500);
Zip := TZipFile.Create;
if FileExists(ExtractFileDir(Application.ExeName) + '\' + Application.ExeName + '_old') then
Deletefile(ExtractFileDir(Application.ExeName) + '\' + Application.ExeName + '_old');
RenameFile(Application.ExeName, Application.ExeName + '_old');
Zip.Open(ExtractFileDir(Application.ExeName) + '\' + 'Uzakv3.zip', zmRead);
Sleep(500);
Zip.ExtractAll(ExtractFileDir(Application.ExeName) + '\');
if FileExists(ExtractFileDir(Application.ExeName) + '\' + 'Uzakv3.zip') then
Deletefile(ExtractFileDir(Application.ExeName) + '\' + 'Uzakv3.zip');
Terminated := False;
TThread.Queue(nil,
procedure
begin
ShowMessage('Güncelleme tamamlandı, bir sonraki açılışta güncel uygulama açılacak');
Close;
end);
if Assigned(Zip) then
Zip.Free;
end).Start;
end
else
begin
ShowMessage('Güncelleme esnasında hata meydana geldi.');
end;
except
on E: Exception do
begin
ShowMessage(E.Message);
end;
end;
finally
Down.Free;
end;
end;
procedure TFrmUpdate.whatisnewClick(Sender: TObject);
begin
ShellExecute(Handle, 'open', PWideChar(BlogUrl), nil, nil, SW_SHOW);
end;
end.
(23-05-2019, Saat: 02:14)crowlin Adlı Kullanıcıdan Alıntı: Hayır bir sıkıntı yaşamazsınız o konuda timer le de yapsanız aynı işlevi görücektir. Ama bi ayrıntı
Delphi de bilmiyorum ama c# da TThread.Sleep komutu çalışırken programın tüm fonksiyonları devre dışı kalır yani programı komple donduruyor diye biliyorum timer ise programı dondurmadan çalışıyor diye biliyorum.
aynen öyle MainThreadı durduruyorsun bu durumda kullanıcı girişlerini yakalayamazsın bu sleepi 5 saniye ve üzerinde olursa windows tarafında not respondinge düşersin
Hocam eklediğiniz kütüphane kadar kod yazmışlığım var mı diye şüphe ettim doğrusu
Ve HAZIR KOD için de sağolun
İlk başta benim için kafa karıştırıcı görünüyor ama zamanla daha iyi oturacaktır yerine
Yorumları: 2.153
Konuları: 259
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.659 Uzman
Yorumları: 950
Konuları: 152
Kayıt Tarihi: 29-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.135 Uzman
Yorumları: 859
Konuları: 9
Kayıt Tarihi: 17-11-2016
Rep Puanı: 1.774 Programcı
timer kullanmak daha kolay ve sorunsuz sanarım timer de zahmeti çalıştırma durdur gibi zorlukları var ama tek satırlık bekletme de ayrı sorunları var gibi görünüyor
Yorumları: 950
Konuları: 152
Kayıt Tarihi: 29-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.135 Uzman
(23-05-2019, Saat: 17:04)nguzeller Adlı Kullanıcıdan Alıntı: timer kullanmak daha kolay ve sorunsuz sanarım timer de zahmeti çalıştırma durdur gibi zorlukları var ama tek satırlık bekletme de ayrı sorunları var gibi görünüyor
Projemdeki timer'ları çoktan procedure'lerle değiştirdim hocam. bundan sonrası Allah kerim diyelim.
|