![]() |
Überprüfen ob ein Objekt existiert aber wie?
Wie kann ich feststellen ob ein Bestimmtes Button oder TPanel existiert?? :gruebel:
Ich erstelle die Komponenten zur Laufzeit. Mein Problem ist das ich ein Panel.hide machen will --> aber wenn noch nicht erstellt --> Fehlermeldung |
Re: Überprüfen ob ein Objekt existiert aber wie?
hi,
Delphi-Quellcode:
Aenogym
if assigned(myButton) then
//existiert else //existiert nicht |
Re: Überprüfen ob ein Objekt existiert aber wie?
Objekte sind generell Pointer. Deshalb ist ein nicht erstelltes Objekt immer nil ;)
Einfach mit if Objekt <> nil oder ![]() |
Re: Überprüfen ob ein Objekt existiert aber wie?
Moin Dax,
Zitat:
Wenn das Objekt mit
Delphi-Quellcode:
freigegeben wird, oder lokal deklariert wird, stimmt die Aussage nicht, da dann der Pointer immer noch einen Wert enthält, aber nicht mehr (zumindest zwingend) auf das Objekt verweist.
Objekt.Free;
|
Re: Überprüfen ob ein Objekt existiert aber wie?
Zitat:
Du sprichst von einer Variable die eine Objektreferenz beinhaltet. Zitat:
Mit Assigned und/oder nil kannst du nur eine Variable prüfen, ob sie eine Objektreferenz beinhaltet oder halt nicht. Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringList; begin if Assigned(List) then begin List.Add('So kann man nicht prüfen, ob ein Objekt existiert.'); List.Free; end; end; |
Re: Überprüfen ob ein Objekt existiert aber wie?
Vergesst, was ich gesagt habe :roll:
|
Re: Überprüfen ob ein Objekt existiert aber wie?
oha, okay. dann muss ich micha uch entschuldigen :roll:
Aenogym |
Re: Überprüfen ob ein Objekt existiert aber wie?
Vielleicht können die Beiträge im Thread
![]() |
Re: Überprüfen ob ein Objekt existiert aber wie?
Is zwar nich der beste Style aber funktionieren müsste das auch so:
Delphi-Quellcode:
denn das sollte in diesem Fall schon ausreichen oder?
try
Panel.hide except end; Greetz Boombuler |
AW: Überprüfen ob ein Objekt existiert aber wie?
Hallo Gemeinde,
ich greife dieses Thema nochmal auf, da ich irgendwie hier nicht weiterkomme: Ich möchte eine Art Toggle erstellen, der per Button ein Objekt erzeugt oder, wenn es schon vorhanden ist freigibt. Eigentlich ging ich davon aus, dass ich dies mit:
Delphi-Quellcode:
erreichen könnte. Jedoch bekomme ich schon beim 1. Aufruf im Else-Zweig eine Zugriffsverletzung. Dabei ist mir nur nicht ganz klar, warum Assigned schon beim 1. Prüfen das Objekt als erzeugt erkennt (?). Wo liegt hier mein Denkfehler?
var mPlayer:TMPlayer;
begin if not assigned(mPlayer) then mPlayer:=TMPlayer.create else freeandnil(mplayer); end; Danke für eure Hilfe!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 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