Harici Şartın gerçekleşmesini bekleyen fonksiyon

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Harici Şartın gerçekleşmesini bekleyen fonksiyon

Mesaj gönderen Lost Soul »

Birşey için lazım oldu yazdım birinin işine yarar diye paylaşayım.
Bu metod işaret edilen boolean değişkeni timeout süresince kontrol eder (bekler) , eğer değişken değer true olursa method sonlanır ve true döndürür timeout olursa gene sonlanır ve false değer döndürür.

Kod: Tümünü seç

uses SysUtils,Forms, DateUtils;

Kod: Tümünü seç

Function WaitForCondition(_Condition : Pointer; _TimeOut : Integer =30000) : Boolean;
var
   aThen : TDateTime;
   aBool : ^Boolean;
begin
  Result := False;
  aThen := Now;
  aBool := _Condition;
  while ( (not aBool^) and (MilliSecondsBetween(Now,aThen)<_TimeOut)) do
  Begin
    Sleep(150);
    Application.ProcessMessages;
  End;
  if aBool^ then
  Result := True;

end;
Test etmesi

Kod: Tümünü seç

type
  Tform1= class(TForm)
    ...
    ...
    ...
    Button1: TButton;
    Button2: TButton;
  private
    aBool : Boolean;
    ...
    ...
    ...
  end;

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  aBool := false;
  ShowMessage('Kontrol başlıyor...');
  if WaitForCondition(@abool) then
  ShowMessage('Şart gerçekleşti')
  else
  ShowMessage('Zaman aşımı');

  ...
  ...
  diğer işlemler. 
end;

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
  aBool := True;
end;
E ben bunu Nerde kullanırım derseniz..
Zaten ihtiyacınız yokmuş demektir :)
Soft22
Üye
Mesajlar: 4
Kayıt: 01 Nis 2014 02:29

Re: Harici Şartın gerçekleşmesini bekleyen fonksiyon

Mesaj gönderen Soft22 »

Güzel bir örnek. Teşekür ederiz :)
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Harici Şartın gerçekleşmesini bekleyen fonksiyon

Mesaj gönderen mkysoft »

Yazılan örnekte değer ataması yapılan bir değişkene aynı anda erişilme ihtimali var. Bu ihtimal gerçekleştiğinde sistem hata alacaktır, dikkat edilmesi gerekir.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Harici Şartın gerçekleşmesini bekleyen fonksiyon

Mesaj gönderen Lost Soul »

Amaç da bu zaten. Değişkene aynı anda erişebilmek. :)
Cevapla