Delphi Can
dll'ye FDConnectionu bağlama - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7)
+--- Konu Başlığı: dll'ye FDConnectionu bağlama (/showthread.php?tid=4167)



dll'ye FDConnectionu bağlama - BGNew - 10-11-2019

Merhaba, 

Kendi özel dll oluşturdum. Bu dll'den farklı zamanlarda db kontrolü yapılacak. 
dll'de Create edilen TFDQueryi, uygulamadaki FDConnectiona nasıl bağlaya bilirim?


Procedure DllMesaj; Export; // Kullanılacak Dll fonksiyonun kendisi
begin
  TThread.CreateAnonymousThread(
    procedure
    var
      xFDQ: TFDQuery;
    begin
      TThread.Synchronize(Nil,
        procedure
        begin
          xFDQ := TFDQuery.Create(Nil);
          try
            xFDQ.Connection :=  Form1.FDConnection;
            xFDQ.Active := False;
            xFDQ.Close;
            xFDQ.SQL.Clear;
            xFDQ.SQL.Add('Select * From USERS');
            xFDQ.Prepared := True;
            xFDQ.Open;
          finally
            xFDQ.Free;
          end;
        end);
    end).Start;
end;



dll'ye FDConnectionu bağlama - uparlayan - 10-11-2019

FDConnection'ı DLL'indeki metodlarına parametre olarak ver.


Cvp: dll'ye FDConnectionu bağlama - Tuğrul HELVACI - 10-11-2019

(10-11-2019, Saat: 13:40)BGNew Adlı Kullanıcıdan Alıntı: Merhaba, 

Kendi özel dll oluşturdum. Bu dll'den farklı zamanlarda db kontrolü yapılacak. 
dll'de Create edilen TFDQueryi, uygulamadaki FDConnectiona nasıl bağlaya bilirim?


Procedure DllMesaj; Export; // Kullanılacak Dll fonksiyonun kendisi
begin
  TThread.CreateAnonymousThread(
    procedure
    var
      xFDQ: TFDQuery;
    begin
      TThread.Synchronize(Nil,
        procedure
        begin
          xFDQ := TFDQuery.Create(Nil);
          try
            xFDQ.Connection :=  Form1.FDConnection;
            xFDQ.Active := False;
            xFDQ.Close;
            xFDQ.SQL.Clear;
            xFDQ.SQL.Add('Select * From USERS');
            xFDQ.Prepared := True;
            xFDQ.Open;
          finally
            xFDQ.Free;
          end;
        end);
    end).Start;
end;

Daha önce uyarmış olmama rağmen hâla thread’i hatalı kullanıyorsunuz. Şu anda yazdığınız bu kod, main thread içinde çalışır. Thread oluşturmanızın hiç bir anlamı ve faydası yok şu aşamada.


Cvp: dll'ye FDConnectionu bağlama - BGNew - 11-11-2019

(10-11-2019, Saat: 16:45)uparlayan Adlı Kullanıcıdan Alıntı: FDConnection'ı DLL'indeki metodlarına parametre olarak ver.


Anlamadım, sizden ricam biraz daha anahtar kelime verir misiniz.

(10-11-2019, Saat: 18:15)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(10-11-2019, Saat: 13:40)BGNew Adlı Kullanıcıdan Alıntı: Merhaba, 

Kendi özel dll oluşturdum. Bu dll'den farklı zamanlarda db kontrolü yapılacak. 
dll'de Create edilen TFDQueryi, uygulamadaki FDConnectiona nasıl bağlaya bilirim?


Procedure DllMesaj; Export; // Kullanılacak Dll fonksiyonun kendisi
begin
  TThread.CreateAnonymousThread(
    procedure
    var
      xFDQ: TFDQuery;
    begin
      TThread.Synchronize(Nil,
        procedure
        begin
          xFDQ := TFDQuery.Create(Nil);
          try
            xFDQ.Connection :=  Form1.FDConnection;
            xFDQ.Active := False;
            xFDQ.Close;
            xFDQ.SQL.Clear;
            xFDQ.SQL.Add('Select * From USERS');
            xFDQ.Prepared := True;
            xFDQ.Open;
          finally
            xFDQ.Free;
          end;
        end);
    end).Start;
end;

Daha önce uyarmış olmama rağmen hâla thread’i hatalı kullanıyorsunuz. Şu anda yazdığınız bu kod, main thread içinde çalışır. Thread oluşturmanızın hiç bir anlamı ve faydası yok şu aşamada.


Thread ilgili bilgilendirmenizden sonra bir çok kod inceledim. Fakat İnternet ortamında Thread database ile ilgili örnek yok. 
Maalesef bu konuda İnternet tam bir çöplük durumunda.


dll'ye FDConnectionu bağlama - uparlayan - 11-11-2019

(11-11-2019, Saat: 11:12)BGNew Adlı Kullanıcıdan Alıntı:
(10-11-2019, Saat: 16:45)uparlayan Adlı Kullanıcıdan Alıntı: FDConnection'ı DLL'indeki metodlarına parametre olarak ver.
Anlamadım, sizden ricam biraz daha anahtar kelime verir misiniz.

"Metod" dediğimiz zaman kastettiğimiz şey duruma göre "Fonksiyon" veya "prosedür"dür. Hazırladığınız DLL'de, "DLLMesaj" adlı bir metodunuz var. O metoda kullanmak istediğiniz Connection için bir parametre tanımlayın ve sonra o parametreyi o metodun içinde kullanın.

Thread konusunda da @Tuğrul HELVACI Beyin tavsiyelerini de göz ardı etmeyin.