Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Objekt = leer? (https://www.delphipraxis.net/136047-objekt-%3D-leer.html)

youuu 22. Jun 2009 20:09


Objekt = leer?
 
Hi,

ich wie kann man testen ob ein Objekt leer ist?

Delphi-Quellcode:

if CustomerPos.ID = '' then
funktioniert leider nicht, es gibt eine Exception.

mkinzler 22. Jun 2009 20:10

Re: Objekt = leer?
 
Was meinst du mit leer?
Delphi-Quellcode:
if not Assigned( <Object>) then ...

DeddyH 22. Jun 2009 20:10

Re: Objekt = leer?
 
Was ist CustomerPos und was ist ID?

webcss 22. Jun 2009 20:11

Re: Objekt = leer?
 
Delphi-Quellcode:
if assigned(CustomerPos) then
oder
Delphi-Quellcode:
if CustomerPos<>nil then

himitsu 22. Jun 2009 20:14

Re: Objekt = leer?
 
das funktioniert aber nur, wenn explizit NIL zugewiesen wurde.

z.B. mit
Delphi-Quellcode:
X := nil;
initialisiert (außer die "Variable" liegt zufällig in einer anderen Klasse, wo anfangs alles per Standard schon mit 0 aka NIL gefüllt ist)


oder per
Delphi-Quellcode:
FreeAndNil(X);

// bzw.
X.Free;
X := nil;
freigegeben

youuu 22. Jun 2009 20:16

Re: Objekt = leer?
 
Zitat:

Zitat von DeddyH
Was ist CustomerPos und was ist ID?

Delphi-Quellcode:
 
  TCustomerPositionen = class
  public
    ID: String;
  End;

CustomerPos: TCustomerPosition;

DeddyH 22. Jun 2009 20:18

Re: Objekt = leer?
 
Dann siehe obige Antworten.

himitsu 22. Jun 2009 20:23

Re: Objekt = leer?
 
Was die Exception betrifft:

stell dir ein Objekt wie einen Pointer vor (ist es intern ja auch)

Delphi würde quasi sowas draus machen
Code:
if CustomerPos[color=#ff0000][b]^[/b][/color].ID = '' then
und wenn die Objektvariable nun auf NIL steht oder nur irgendeinen zufälligen Wert hat, dann wird praktisch auf etwas nicht Exisierendes zugegriffen und dann knallt es natürlich ganz laut. :stupid:

youuu 22. Jun 2009 20:38

Re: Objekt = leer?
 
Ich setze CustomerPos:= nil;

Teste dann per Button

Delphi-Quellcode:
if not assigned(CustomerPos) then
    Showmessage('PosAdd')
  else
    Showmessage('PosUpdate');
und er geht in else rein, sollte doch normal nicht?

mkinzler 22. Jun 2009 20:41

Re: Objekt = leer?
 
Eigentlich nicht :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.
Seite 1 von 2  1 2      

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