2008-09-29 4 views

Antwort

14

Wie knight_killer oben ausgeführt, verwenden Sie die Assert() Funktion, zu behaupten, dass Assigned(obj)true ist. Wie in den meisten kompilierten Sprachen werden Assertions natürlich nicht ausgeführt (oder sogar in der Compiler-Ausgabe enthalten), es sei denn, Sie haben sie speziell aktiviert. Sie sollten sich daher nicht auf Assertions für Release-Modus-Builds verlassen.

Sie können natürlich einfach gegen nil, a la Assert(obj <> nil) überprüfen. Allerdings erzeugt Assigned() die exakt gleiche Compiler-Ausgabe und hat den zusätzlichen Vorteil, dass es auch auf Zeiger auf Klassenmethoden wirkt (die in der Realität ein Zeigerpaar sind, eins für die Methode und das andere für die Klasseninstanz) Assigned() ist eine gute Angewohnheit, aufzuheben.

+2

Eigentlich sind in Delphi Assertions standardmäßig aktiviert und müssen speziell deaktiviert werden. –

10

Nicht sicher, was Sie meinen, aber Assert(Assigned(MyObject)); ist ziemlich kurz und einfach zu bedienen.

3

wenn Assigned (MyObject) dann ...

7

Zugewiesen (AObject) wird Ihnen sagen, ob ein Objekt Null ist oder nicht.

Vielleicht erwähnenswert ist die Tatsache, dass, wenn Sie ein Objekt mit AObject.Free freigeben, die Assigned immer noch wahr zurückgibt. Stellen Sie also sicher, dass Sie das Objekt mit FreeAndNil (AObject) freigeben.