![]() |
Delphi-Version: 10.2 Tokyo
Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Ich habe eine Funktion, welcher ich eine TForm-Variable übergebe. Es existiert nicht zwangsweise bereits eine Instanz dieses Formulars.
Damit mein Code schön sauber bleibt, packe ich alles in Prozeduren. Eine davon speichert die Fenstergröße und -position. Einziger Parameter ist die Form-Instanzenvariable, die aber wie gesagt auch nil sein kann. Bin ich jetzt gezwungen ein if Assigned(formxyz) then da drum zu packen oder geht das auch direkt im Funktionsaufruf irgendwie? |
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Hallo,
die richtige Position der NIL-Auswertung ist in der Prozedur selbst. |
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Dann bleibt ja nichts anderes übrig als ein if vor die Funktion zu setzen in diesem Falle. Denn der Parameter ist die Instanz selbst.
|
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Zeig doch mal deinen bestehenden Code.
|
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Zitat:
Du kannst auch in der Funktion selbst prüfen, ob der übergebene Wert assigned ist. Kurzes Beispiel:
Delphi-Quellcode:
function MeineFunktion(aForm : TForm) : Boolean;
begin Result := Assigned(aForm); if Result then begin // Position der Form setzen end; end; |
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
So ist das zwar defensiv programmiert, aber schlechter Stil. Für einen Form, den es gar nicht gibt, die Position speichern zu wollen, ist nicht sauber. Ich würde das Problem an der Stelle lösen, wo es auftritt: beim Aufruf bzw noch vorher in der Logik, die auswählt, für welchen Form die Position gespeichert werden soll.
|
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Zitat:
Delphi-Quellcode:
procedure MeineFunktion(const aForm : TForm);
begin Mach etwas mit aForm end; // Kein Problem if Assigned(aForm ) then MeineFunktion(aForm); // Problem (egal ob man Assigned in MeineFunktion hat oder nicht) MeineFunktion(aForm); |
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Zitat:
Es könnte aber sein, daß aForm nicht NIL ist sondern einen undefinierten Zustand hat. Das solltest du mit dem Debugger mal kontrollieren. |
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Zitat:
Zitat:
|
AW: Assigned + TForm-Instanzenvariable in Funktionsübergabe möglich?
Auch in der Starter gibt es den Debugger, nur die Hover-Anzeige funktioniert halt nicht - aber über die überwachten Ausdrücke kommst du ja trotzdem dran.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 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