Yazdığımız programda CallerId (2 hatlı ve 4 hatlı ) sürekli olmasa da arada bir programda kilitlenme yaşıyorum. Caller id kullanılmadığı zamanlarda herhangi bir kilitlenme olmuyor. Bu konuda yardımcı olabilir misiniz?
Program şu şekilde çalışıyor: caller id dinleme olayı bir timera bağlı ve her saniye sorguluyor. telefon çaldığında arayan numaranın görüntülendiği minik bir pencere programın sağ altında çıkıyor ve oradaki butona tıklandığında bu ekran kapanıp başka ekran açılıyor ve bilgiler oraya aktarılıyor.
Her türlü fikire açığım arkadaşlar bu sorunu acilen çözmem gerekiyor yardımlarınızı bekliyorum.
Caller id ile ilgili kullandığım kodlar şu şekildedir:
Kod: Tümünü seç
var
CIDnesne: TCIDv5;
procedure TGirisEkran.CallerIdKontroluTimer(Sender: TObject); // Timer kodları
var
model, serialnum: string;
begin
if not assigned(CIDnesne) then
exit;
end;
//arama geldiğinde aşağıdaki procedure tetkikleniyor ve ilgili kaydı calleridEkran formuna yazıp gösteriyor.
procedure TGirisEkran.CID_olay(ASender: TObject;
const DeviceID, Line, PhoneNumber, DateTime, OtherText: WideString);
var
QMusteriKontrol, QSonArayanlar, QSonArayanSil: TMyQuery;
numara: string;
begin
// memo1.Lines.Add(timetostr(now) + ' : ' + ' Hat' + Line + ' Arayan: ' + PhoneNumber);
if GirisEkran.calleridcalissin = 1 then
begin
numara := PhoneNumber; // #9 + PhoneNumber;
QMusteriKontrol := TMyQuery.Create(Nil);
QMusteriKontrol.Connection := Dm.MyCon;
QMusteriKontrol.SQL.Clear;
QMusteriKontrol.SQL.Add
('select * from musteriler where tel1 = :tel or tel2=:tel or gsm=:tel and aktif=1');
QMusteriKontrol.Params.ParamByName('tel').Value := trim(numara);
QMusteriKontrol.Open;
QMusteriKontrol.First;
// Form1.memo1.Lines.Add('Device: ' + DeviceSerial + #9 + 'Line: ' + Line + #9 + 'Caller ID: ' + PhoneNumber + #9 + 'Date - Time: ' + DateTime);
if QMusteriKontrol.RecordCount > 0 then
begin
if assigned(calleridEkran) = true then // form açık mı
begin
calleridEkran.Close;
end;
Application.CreateForm(TcalleridEkran, calleridEkran);
calleridEkran.lblisim.Caption := QMusteriKontrol.FieldByName
('isim').AsString;
calleridEkran.lbltelefon.Caption := trim(numara);
calleridEkran.lbladres.Caption := QMusteriKontrol.FieldByName
('adres').AsString;
calleridEkran.musterinosu := QMusteriKontrol.FieldByName('id').AsInteger;
calleridEkran.yenimusteri := 0;
calleridEkran.il := QMusteriKontrol.FieldByName('il').AsString;
calleridEkran.ilce := QMusteriKontrol.FieldByName('ilce').AsString;
QSonArayanlar := TMyQuery.Create(Nil);
QSonArayanlar.Connection := Dm.MyCon;
QSonArayanlar.SQL.Clear;
QSonArayanlar.SQL.Add
('select * from calleridson order by id desc LIMIT 10');
QSonArayanlar.Open;
QSonArayanlar.First;
if QSonArayanlar.RecordCount = 10 then
begin
QSonArayanSil := TMyQuery.Create(Nil);
QSonArayanSil.Connection := Dm.MyCon;
QSonArayanSil.SQL.Clear;
QSonArayanSil.SQL.Add
('delete from calleridson order by id asc LIMIT 1');
QSonArayanSil.ExecSQL;
QSonArayanSil.Close;
FreeAndNil(QSonArayanSil);
end
else
begin
QSonArayanlar.Append;
QSonArayanlar.FieldByName('musteriadi').AsString :=
QMusteriKontrol.FieldByName('isim').AsString;
QSonArayanlar.FieldByName('telefon').AsString := trim(numara);
QSonArayanlar.FieldByName('tarih').AsDateTime := Now();
QSonArayanlar.Post;
end;
QSonArayanlar.Close;
FreeAndNil(QSonArayanlar);
calleridEkran.Show;
end
else
begin
if assigned(calleridEkran) = true then // form açık mı
begin
calleridEkran.Close;
end;
Application.CreateForm(TcalleridEkran, calleridEkran);
calleridEkran.lblisim.Caption := 'Kayıtsız Müşteri';
calleridEkran.lbltelefon.Caption := trim(numara);
calleridEkran.lbladres.Caption := '';
calleridEkran.musterinosu := 0;
calleridEkran.yenimusteri := 1;
QSonArayanlar := TMyQuery.Create(Nil);
QSonArayanlar.Connection := Dm.MyCon;
QSonArayanlar.SQL.Clear;
QSonArayanlar.SQL.Add
('select * from calleridson order by id desc LIMIT 10');
QSonArayanlar.Open;
QSonArayanlar.First;
if QSonArayanlar.RecordCount = 10 then
begin
QSonArayanSil := TMyQuery.Create(Nil);
QSonArayanSil.Connection := Dm.MyCon;
QSonArayanSil.SQL.Clear;
QSonArayanSil.SQL.Add
('delete from calleridson order by id asc LIMIT 1');
QSonArayanSil.ExecSQL;
QSonArayanSil.Close;
FreeAndNil(QSonArayanSil);
end
else
begin
QSonArayanlar.Append;
QSonArayanlar.FieldByName('musteriadi').AsString :=
QMusteriKontrol.FieldByName('isim').AsString;
QSonArayanlar.FieldByName('telefon').AsString := trim(numara);
QSonArayanlar.FieldByName('tarih').AsDateTime := Now();
QSonArayanlar.Post;
end;
QSonArayanlar.Close;
FreeAndNil(QSonArayanlar);
calleridEkran.Show;
end;
QMusteriKontrol.Close;
FreeAndNil(QMusteriKontrol);
end;
end;