![]() |
Assigned(MyObject) gibt falsches Ergebnis zurück?
Moin,
ich habe bei heute morgen eine Sache die ich ganz und gar nicht verstehe. Folgendes:
Delphi-Quellcode:
Die Antwort in meinem Programm auf das Assigned ist True, sollte es aber nicht False sein?
procedure TMyForm.MeineProzedur;
var MyObject: TMyObject; begin ShowMessage('is assigned: ' + BoolToStr(Assigned(MyObject), True)); MyObject:= TMyObject.Create; ... end; Das Objekt, lokale Variable, ist doch noch gar nicht erzeugt. Das Programm kann auch nicht ausversehen ein globales Objekt genommen haben, lösche ich MyObjetct, so findet er die Variable nicht. |
Re: Assigned(MyObject) gibt falsches Ergebnis zurück?
es gibt schon das richtige Ergebnis zurück.
Assigned prüft nur ob MyObject <> nil und da eine Objektinstanzvariable nicht selber initialisiert wird, mußt du es machen! Und der lokale Variablenspeicher wird auch nicht geNullt ... sowas gibt es nur bei den Globalen und dem Objektvariable (denen im Objekt).
Delphi-Quellcode:
MyObject := nil;
ShowMessage('is assigned: ' + BoolToStr(Assigned(MyObject), True)); MyObject:= TMyObject.Create; |
Re: Assigned(MyObject) gibt falsches Ergebnis zurück?
Danke.
Schräg nur, dass die Funktion mit der Überprüfung bis heute funktioniert hat. |
Re: Assigned(MyObject) gibt falsches Ergebnis zurück?
ja, wenn du Glück hast, dann wurde die Variable vorher von anderen Dingen (z.B. einem Constructor) initialisiert und es klappt.
wenn Delphi jetzt alle Variablen selber nochmal initialisieren (auf 0 setzen) würde, dann täte die Performance stark drunter leiden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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 by Thomas Breitkreuz