Einzelnen Beitrag anzeigen

Ykcim

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

Procedure-Aufruf mit Reference

  Alt 16. Jan 2021, 09:57
Hallo Zusammen,

ich habe wieder ein Brett vor dem Kopf...

Ich muss Proceduren in einer bestimmten Reihenfolge aufrufen und muss daher mit CallBacks arbeiten...

Delphi-Quellcode:
type
   TDataRecievedCallback = reference to procedure;
   TDataRecieved_JSResult = reference to procedure(JSResult: string);
   TDataRecieved_JSBoolean = reference to procedure(JSBoolean: Boolean);


procedure TMySQL.xData_Main_ConnectConnect(Sender: TObject);
var Design: TDesign_App;
begin
   Design:= TDesign_App.create;
   Try
      Get_Sprachen(nil);
      Get_Land(nil);
      Get_Company_Details( //TDataRecievedCallback
         @Get_CustProperties( //TDataRecievedCallback
            @Check_login_code( //TDataRecieved_JSBoolean ......... Diese Zeile markiert der Compiler und meint wahrscheinlich @Design.Create_Form_TVApp
               @Design.Create_Form_TVApp
            )
         )
      );
   Finally
      Design.Free;
   End;
end;
Beim Compilieren bekomme ich die Fehlermeldung:
Code:
[Fehler] TTVA_Data_ModuleUnit.pas(188): Incompatible type arg no. 1: Got "procedure(TDataRecieved_JSBoolean) of Object", expected "reference to procedure()"
Das sind die relvanten Procedure:
Delphi-Quellcode:
procedure TMySQL.Get_Company_Details(AOnDataRecieved: TDataRecievedCallback);
   procedure OnResponse(Response: TXDataClientResponse);
   begin
      //Daten verarbeiten
      if Assigned(AOnDataRecieved) then begin
         AOnDataRecieved();
      end;
   end;
begin
   //Aufruf eines Service
end;


procedure TMySQL.Get_CustProperties(AOnDataRecieved: TDataRecievedCallback);
   procedure OnResponse(Response: TXDataClientResponse);
   begin
      //Daten verarbeiten
      if Assigned(AOnDataRecieved) then begin
         AOnDataRecieved();
      end;
   end;
begin
   //Aufruf eines Services
end;

//Hier scheint etwas nicht zu stimmen - oder mit der angegebenen AOnDataRecieved Procedure, die danach folgt
procedure TMySQL.Check_login_code(AOnDataRecieved: TDataRecieved_JSBoolean);
   procedure OnResponse(Response: TXDataClientResponse);
   var JSObj: TJSObject;
         Ergebnis: boolean;
   begin
      JSObj:=TJSJSON.parseObject(Response.ResponseText);
      Ergebnis:= StrToBool(String(JSObj['value']));
      if (Assigned(AOnDataRecieved)) then begin
         AOnDataRecieved(Ergebnis);
      end;
   end;
begin
   //Aufruf eines Services
end;


procedure TDesign_App.Create_Form_TVApp(login_valid: boolean);
begin
   if login_valid=false then
      Create_LogIn;
   if Assigned(Form_TheVisitApp) then begin
      Form_TheVisitApp.WIC_Logo.URL:=MySQL.xWDS_Customerlogo_image.AsString;
   end;
end;
Könnt ihr mir helfen, das Ding zum Fliegen zu bringen?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat