Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Programm-Aufbau bei asynchronem DB-zugriff

  Alt 26. Nov 2019, 16:55
So, ich habe natürlich weiter probiert und gelesen und bin auf die Frage gestoßen, wann die CallBack Procedure ausgeführt wird und ob eine andere Funktion auf das Ergebnis wartet?

Delphi-Quellcode:
procedure TForm_LogIn.WebFormCreate(Sender: TObject);
begin
   if Data_Module.xConnection_connect then begin
      Data_Module.Get_Sprache;
      Label_LoginTitel.DataSource:=Data_Module.DSC_Sprache;
      Label_LoginTitel.DataField:='login_Titel';
      Label_LogInUser.DataSource:=Data_Module.DSC_Sprache;
      Label_LogInUser.DataField:='login_lable_username';
      Label_LogInPasswort.DataSource:=Data_Module.DSC_Sprache;
      Label_LogInPasswort.DataField:='login_label_passwort';
   end;
end;
Hier rufe ich als erstes die Funktion xConnection_connect auf, die ein booloean als Result hat.

Delphi-Quellcode:
function TData_Module.xConnection_connect: boolean;
   procedure OnConnect;
   begin
      Result:= true;
   end;
   procedure OnError(Error: TXDataWebConnectionError);
   begin
      Result:= false;
      ShowMessage('XData server connection failed with error: ' +
      Error.ErrorMessage);
   end;
begin
   Result:= false;
   if xConnection.Connected then begin
      Result:= true;
   end
   else begin
      xConnection.Open(@OnConnect, @OnError);
   end;
end;
In dieser Funktion prüfe ich ab, ob die Connection eine Verbindung hat oder nicht. if xConnection.Connected
Wenn nicht soll sie hergestellt werden. xConnection.Open(@OnConnect, @OnError);
In den CallBacks wird dann der Result-Wert der Function xConnection_connect gesetzt.
Delphi-Quellcode:
procedure OnConnect;
   begin
      Result:= true;
   end;
Delphi-Quellcode:
procedure OnError(Error: TXDataWebConnectionError);
   begin
      Result:= false;
      ShowMessage('XData server connection failed with error: ' +
      Error.ErrorMessage);
   end;
Da die CallBacks ja erst im Falle einer Antwort seitens der xConnection aufgerufen werden, dachte ich, dass ich meine Anwendung solange "anhalte". Ist das so? Bleibt die Anwendung in der procedure TForm_LogIn.WebFormCreate(Sender: TObject); stehen, bis der Result-Wert von Data_Module.xConnection_Connect kommt?

Vielen Dank
Patrick
Patrick

Geändert von Ykcim (26. Nov 2019 um 16:57 Uhr)
  Mit Zitat antworten Zitat