Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Assigned(MyObject) gibt falsches Ergebnis zurück? (https://www.delphipraxis.net/138263-assigned-myobject-gibt-falsches-ergebnis-zurueck.html)

Brainshock 6. Aug 2009 09:06


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:
procedure TMyForm.MeineProzedur;
var
  MyObject: TMyObject;
begin
  ShowMessage('is assigned: ' + BoolToStr(Assigned(MyObject), True));
  MyObject:= TMyObject.Create;
  ...
end;
Die Antwort in meinem Programm auf das Assigned ist True, sollte es aber nicht False sein?
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.

himitsu 6. Aug 2009 09:16

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;

Brainshock 6. Aug 2009 09:25

Re: Assigned(MyObject) gibt falsches Ergebnis zurück?
 
Danke.

Schräg nur, dass die Funktion mit der Überprüfung bis heute funktioniert hat.

himitsu 6. Aug 2009 09:34

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 03:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz