Autor Beitrag
neuling82
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mi 30.07.03 09:41 
Hey Leute, ich glaube meine Delphi spinnt (oder bin ich es...?! :shock: )
ich habe folgenden if abfrage:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
begin
   if assigned(global_protokoll) then
   begin
     global_protokoll.add(text);

     if (status=10then
      begin
      global_protokoll.free;
      end;
   end;
end;


diese durchläuft des Programm ständig, da diese Procedure extern aufgerufen wird. wenn nun die Procedure aufgerufen wird und status 10 ist, wird global_protokoll.free ausgeführt. beim nächsten Aufruf der Procedure und der Abfrage

ausblenden Delphi-Quelltext
1:
2:
3:
if assigned(global_protokoll) then
   begin
     global_protokoll.add(text);


ist assigned(global_protokoll) true obwohl ich es doch bei status 10 mit free freigegeben habe?!
dann Läuft der Compiler weiter UND !!überspringt!! mir einfach die if abfrage nach status 10??!! Wie geht das denn bitte??
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Mi 30.07.03 09:53 
Hast Du überprüft, ob Status tatsächlich 10 wird, bzw. global_protokoll wirklich zerstört wird?

Ciao, teebee
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 30.07.03 09:59 
Ein Objekt ist ein Pointer... mit:
ausblenden Delphi-Quelltext
1:
global_protokoll.free					

Gibst du das Objekt zwar frei, aber der Pointer auf das Objekt ist immer noch gespeichert - global_protokoll enthält also immer noch die Referenz auf das nun nicht mehr existierende Objekt! Lösung - die Objekt-Referenz manuell auf nil setzen oder FreeAndNil verwenden:
ausblenden Delphi-Quelltext
1:
2:
global_protokoll.free;
global_protokoll := nil;

ausblenden Delphi-Quelltext
1:
FreeAndNil(global_protokoll)					

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
neuling82 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mi 30.07.03 11:23 
danke, aber warum springt er mir über die Abfrage

ausblenden Delphi-Quelltext
1:
2:
3:
4:
id status = 10 then
begin
...
end;


und geht, egal ob true oder false sofort in .... rein??