![]() |
Re: feststellen ob Object existiert!
Zitat:
Der Operator is nützt Dir an dieser Stelle gar nix. So wirst Du nie
Delphi-Quellcode:
erreichen, denn StringList : TStringList ist immer vom Typ TStrings.
StringList := TStringList.Create;
Der Operator is dient nur der Klassentypüberprüfung einer Variable. Um zu prüfen, ob eine Instanz von StringList existiert, musst Du dich an die obige Antwort halten. |
Re: feststellen ob Object existiert!
ich würde es so machen:
Delphi-Quellcode:
Dabei jedoch die Variable StringList vom Typ TStrings deklarieren, aber als eine TStringList erzeugen. Also so:
if (not (StringList is TStringsList)) then
begin StringList := TStringList.Create; end;
Delphi-Quellcode:
Das müsste funktionieren.
var StringList: TStrings; // so deklarieren
{...} proecedure TForm1.FormCreate(Sender: TObject); begin StringList := TStringList.Create; // so erzeugen end; |
Re: feststellen ob Object existiert!
leider nein,
*/meineantwortkopier/* |
Re: feststellen ob Object existiert!
Hallo Puhbaehr,
man sollte sich angewöhnen, Objekte, welche dynamisch erzeugt werden, immer mit nil zu initialisieren. Jetzt ist natürlich wichtig, wo deine Variable des Typs TStrings definiert ist. Gehört sie global zur Unit des Forms, so sollte man das im Constructor mit: StringList := nil; erledigen. Die Prüfung mit Assigned(StringList) ist üblich und funktioniert, solange man das Freigeben der Stringlist, wie schon im Thread erläutert, mit FreeAndNil(StringList) erledigt. Ist StringList eine lokale Variable in einer Procedure, so ist eine Prüfung auf die Existenz dieser eh unsinnig. Also musst du nur die richtige Stelle für die Initialisierung auf nil finden! Gruß, Frank |
Re: feststellen ob Object existiert!
Vielleicht hilft Dir der Thread
![]() |
Re: feststellen ob Object existiert!
@malo:
wenn ich aber jetzt auf ein noch nicht initialisiertes Objekt (in 'ner lokalen Variable) prüfen lassen, dann bekomm ich aber einen netten Fehler und dat Programm verreckt.
Delphi-Quellcode:
var StringList: TStringList;
begin // StringList := Pointer($12314564); // notfalls könnte man ja auch seber mal einen undefinierten Wert einfügen if (not (StringList is TStringList)) then begin StringList := TStringList.Create; end; StringList.Free; end; |
Re: feststellen ob Object existiert!
Zitat:
Ich hab aber leider nicht immer die Möglichkeit den Constructor aufzurufen. Ich könnte ja auch eine typungebundene Funktion haben die beliebig aufgerufen werden kann und die das Objekt benutzt. Ich möchte halt nur prüfen ob das Objekt das ich gleich erstelle schonmal erstellt wurde. Der Operator is funktioniert dahingehend schoneinmal. Bis jetzt zumindest. Aber es muss doch etwas geben, dass hunderprozentig sicherstellt, dass das Objekt existiert. In JavaScript kann ich das mit ![]() Wie mach ich das in Delphi? Gruß, Robert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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