Zitat von
Sidorion:
@FreeAndNil: Probier doch mal anstelle FreeAndNil(Obj); lieber Obj.Free; Obj:=Nil; zu schreiben.
FreeAndNil heisst nämlich falsch. Es müsste NilAndFree heissen, weil innerhalb dieser funktion wird das übergebene Objekt erst gemerkt, dann der übergebene Zeiger genilt und danach erst das Objekt freigegeben. Hat bei mir in der Firma schon zu langen debugorgien geführt.
Und was sollte das für einen Unterschied machen? Hintergrund ist einfach nur, dass die Variable definitv auf NIL gesetzt wird, auch wenn der Destructor Aufruf eine
Exception hervor bringt. Der Code ist in der Implementierung einer Sicherheitsfrage geschuldet, aber ich erkenne keinen Grund, warum dies in "Debugorgien" enden sollte bzw. was daran falsch sein sollte...