Zitat:
OpenForm selbst gibt das Objekt nur an das entsprechende Formular weiter und tut selbst nichts damit.
Warum dann VAR, wenn es nur durchgereicht aber nicht
geändert wird?
Bei VAR muß ein Wert rein, also mußt du cObjekt im ActionExecute auch initialisieren.
Wenn diese Funktion etwas sucht und dann zurück gibt, dann wäre OUT vielleicht eher deine Wahl?
Der Cast TObjekt(cObjekt)
ist nicht notwendig.
Bei einem IN-Parameter stimmt das, aber bei einem VAR/OUT-Parameter?
Delphi stellt eigentlich sicher, dass immer mindestens der definierte Typ drin ist, aber hier kann nur TObjekt sichergestellt werden. Darum würde ich vermuten, dass die Variable auch nur genau dem TObjekt entsprechen darf.
function TOpenForm.Liste(const pcFormulartyp: TFormulartyp; var pcObjekt): Boolean;
In der Funktion mußt du dann selber böse casten,
aber von extern darfst du ALLES rein geben.
Wegen dem ALLES kommt war Böses heraus, wenn jemand kein Objekt da rein gibt.
Ich würde eher zu Generics raten.
function TOpenForm.Liste<T>(const pcFormulartyp: TFormulartyp; out pcObjekt: T): Boolean;
function TOpenForm.Liste<T: object>(const pcFormulartyp: TFormulartyp; out pcObjekt: T): Boolean;