![]() |
AW: Generic Proc nutzen
Zitat:
Delphi-Quellcode:
Damit ist Delphi auch nicht einverstanden: Typparameter bei globalen Proceduren oder Funktionen nicht zulässig.
procedure BeforeLoadProc<TData>(
const Arg: TData); begin // end; |
AW: Generic Proc nutzen
Wie AuronTLG schon schrieb musst du ohne Generics arbeiten. Die Signatur muss lediglich zu TProc<TData> passen:
Delphi-Quellcode:
Procedure BeforeLoadData(arg : TData);
|
AW: Generic Proc nutzen
Verflixt, geht auch nicht.
Die Procedure in der unit wird jetzt akzeptiert.
Delphi-Quellcode:
Bei der Übergabe
procedure BeforeLoadProc(
const Arg: TData); begin // end;
Delphi-Quellcode:
bekomme ich jetzt die Meldung: Inkompatible Typen: System.Sysutils.TProc<TData> und Procedure.
LoadData(BeforeLoadProc);
Die aufrufende Procedure ist so definiert:
Delphi-Quellcode:
procedure LoadData(const BeforeLoad: TProc<TData> = nil)
|
AW: Generic Proc nutzen
prozedur-zeiger
Delphi-Quellcode:
TBeforeLoadProc<TData> = procedure(Arg: TData);
method- oder class-prozedur-zeiger
Delphi-Quellcode:
TBeforeLoadProc<TData> = procedure(Arg: TData) of object;
Erstes geht natürlich nur für reine Prozeduren oder statische Class-Proceduren, aka procedure BeforeLoadData: TBeforeLoadProc<TData>; oder class procedure {TYoureClass.}BeforeLoadData: TBeforeLoadProc<TData>; static; Oder eben das Zweite ohne static. also procedure {TYoureClass.}BeforeLoadData: TBeforeLoadProc<TData>; oder class procedure {TYoureClass.}BeforeLoadData: TBeforeLoadProc<TData>; |
AW: Generic Proc nutzen
TProc<T> erwartet einen Parameter ohne
Delphi-Quellcode:
!
const
|
AW: Generic Proc nutzen
Perfekt, genau so funktioniert es. ich muss
Delphi-Quellcode:
entfernen
const
Vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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