Forum: Programmieren allgemein
by himitsu,
1. Sep 2014
if Assigned(object) then verwenden wirklich Viele, auch wenn es im Grunde genommen nichts Anderes macht, als ein if object <> nil then.
Gut, ich finde Assigned verständlicher, also dessen Funktion anhand des Namens, und bei sowas wie Methodenzeigern macht Assigned noch mehr, denn diese Zeiger bestehen ja aus zwei Zeigern, welche man sonst einzeln prüfen müsste.
Forum: Programmieren allgemein
by himitsu,
1. Sep 2014
x is TObject fragt das, was in x verlinkt ist, ob es mindestens ein TObject ist und dabei wird nur das nil vorher abgefangen.
Wenn es auf "Schrott" zeigt, dann macht es das Selbe wie Assigned.
Der einzige richtige Weg ist, daß der Zeiger von DIR auf nil gesetzt wird, wenn du die Instanz freigibst. (entweder selber oder durch FreeAndNil)
Die Adresse auf einem Briefumschlag wird ja auch...
Forum: Programmieren allgemein
by himitsu,
31. Aug 2014
Weil man das nicht macht?
Ja macht es, also auf nil prüfen, aber Free setzt nichts auf nil.
Und nein, das ist nicht nur ein Lazarusproblem.
Wenn man nach dem Free nochmal auf den Instanzzeiger zugreifen will/muss, dann sollte man FreeAndNil verwenden.
Probleme haben viele, aber wo ist das "Free" im Titel?
PS: Das ist kein Problem vom Lazarus, sondern vom Compiler, also FreePascal, und...