![]() |
Procedure-Aufruf mit Reference
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:
Beim Compilieren bekomme ich die Fehlermeldung:
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;
Code:
Das sind die relvanten Procedure:
[Fehler] TTVA_Data_ModuleUnit.pas(188): Incompatible type arg no. 1: Got "procedure(TDataRecieved_JSBoolean) of Object", expected "reference to procedure()"
Delphi-Quellcode:
Könnt ihr mir helfen, das Ding zum Fliegen zu bringen?
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; Vielen Dank Patrick |
AW: Procedure-Aufruf mit Reference
Ohne jetzt alles im Detail zu prüfen ...
Auch habe ich null Erfahrung mit "reference to X" ... Aber Im Kommentar steht, dass Get_Company_Details vom Typ TDataRecievedCallback sein soll. Nur TDataRecievedCallback hat keine Übergabeparameter. Das dürfte schon das Problem sein. Die Typen für die Prozeduren/Funktionen, die definiert sind, passen nicht zur Verwendung. Das geht nicht:
Delphi-Quellcode:
Das geht:
type TMyProc = procedure;
Procedure DoSomething(theProc : TMyProc); Begin theProc('Hallo'); End;
Delphi-Quellcode:
Ich hoffe das hilft schon.
type TMyProc = procedure(const sText : String);
Procedure DoSomething(theProc : TMyProc); Begin theProc('Hallo'); End; MfG Incocnito |
AW: Procedure-Aufruf mit Reference
PS: Die ganzen Typen muss man nicht selbst definieren, es gibt in System.SysUtils schon
Delphi-Quellcode:
und
TProc = reference to procedure()
Delphi-Quellcode:
TProc<T> = reference to procedure(arg: T)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz