Delphi Can
edit1 change işlem yapma - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Delphi (http://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (http://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: edit1 change işlem yapma (/showthread.php?tid=3901)

Sayfalar: 1 2


edit1 change işlem yapma - erdogan - 22-08-2019

Arkadaşlar,

Edit text'e cihazdan kart okutuyorum kart id si edit change ile müşterileri bulup log ekliyor.

Cihaz çin malı bir cihaz neden anlamadım ama kartı iki defa okuyor id iki defa atıyor böylece bir işlemi iki defa yapıyor

ilk okumadan sonra 3 sn. beklesin öyle işlem yapsın bir zaman döngüsü ile  acaba bu konuda yardımcı olabilirmisiniz.

procedure TForm1.Edit1Change(Sender: TObject);
begin
    işlemler
end;


Teşekkürler.


edit1 change işlem yapma - adelphiforumz - 22-08-2019

@erdogan zaman süresi kontrolü yerine aynı kart arka arkaya geliyorsa kabul etmesen daha pratik olmazmı


edit1 change işlem yapma - erdogan - 22-08-2019

aynı kart arka arkaya gelebilir ama, burada ki amaç hem yanlışlıkla kartı iki defa da okutmasın


edit1 change işlem yapma - meko - 22-08-2019

kartı notepad'te okutuncada mı iki ID geliyor?


edit1 change işlem yapma - erdogan - 22-08-2019

hayır gelmiyor tüm kod burası zaten

procedure TForm1.OnReceiveText(ASender: TObject; const Reader: IReader; ReaderId: Byte; const Data: WideString);
begin
EditKART_NO.Text := Data;
end;


edit1 change işlem yapma - adelphiforumz - 22-08-2019

global bir x : cardinal türünde değişken tanımla
bu değişkene OnReciveText altında x := gettickcount; ile değer ata
OnReciveText içerisinde
if (gettickcount - x) > 3000 /// bu değer milisaniye cinsindendir 3000 = 3 sn demek
begin
   EditKART_NO.Text := Data;
end;
şeklinde kullan 
Tabi şunuıda atlama aynı kart no ise zaman kontrolünü uygula


edit1 change işlem yapma - serdar - 22-08-2019

Şöyle bir denermısınız. madem ıkı defa gelıyor bızde ıkıye bolerızSmile
procedure TForm1.OnReceiveText(ASender: TObject; const Reader: IReader; ReaderId: Byte; const Data: WideString);
begin 
EditKART_NO.Text := Copy(Data, 1, length(data)/2); ; 
end;



Cvp: edit1 change işlem yapma - erdogan - 22-08-2019

(22-08-2019, Saat: 18:14)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.global bir x : cardinal türünde değişken tanımla
bu değişkene OnReciveText altında x := gettickcount; ile değer ata
OnReciveText içerisinde
if (gettickcount - x) > 3000 /// bu değer milisaniye cinsindendir 3000 = 3 sn demek
begin
   EditKART_NO.Text := Data;
end;
şeklinde kullan 
Tabi şunuıda atlama aynı kart no ise zaman kontrolünü uygula

hocam bunu biraz detaylandırabilirmisin acaba

çok teşekkür ederim

(22-08-2019, Saat: 18:15)serdar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Şöyle bir denermısınız. madem ıkı defa gelıyor bızde ıkıye bolerızSmile
procedure TForm1.OnReceiveText(ASender: TObject; const Reader: IReader; ReaderId: Byte; const Data: WideString);
begin 
EditKART_NO.Text := Copy(Data, 1, length(data)/2); ; 
end;

yani iki defa yazmıyor Smile


Cvp: edit1 change işlem yapma - meko - 22-08-2019

forma memo nesnesi koyup

procedure TForm1.OnReceiveText(ASender: TObject; const Reader: IReader; ReaderId: Byte; const Data: WideString);
begin 
  memo1.Lines.Insert(0,data);
end;
denermisin bakalım memo'ya nasıl gelecek


Cvp: edit1 change işlem yapma - adelphiforumz - 22-08-2019

Bence biraz akış algoritmaları üzerinde dursanız iyi olur düşüncesindeyim.
Her zaman hazır kod bulamazsınız. Idea

...
...
...

var
SonGelisZamani : Cardinal;
SonGelenKartNo : WideString;

implementation

{$R *.dfm}


procedure TForm1.OnReceiveText(ASender: TObject; const Reader: IReader; ReaderId: Byte; const Data: WideString);
begin
  if (Data = SonGelenKartNo) then
  begin
      if (GetTickCount - SonGelisZamani) > 3000 then
      begin
        EditKART_NO.Text := Data;
        SonGelenKartNo := Data;
        SonGelisZamani := GetTickCount;
      end;
  end
  else
  begin
      EditKART_NO.Text := Data;
      SonGelenKartNo := Data;
      SonGelisZamani := GetTickCount;
  end;
end;

...
...
...