Hmm.. musste es doch nochmal ändern.
Es funktioniert nur beim ersten mal wird die gleiche Funktion nochmals aufgerufen dann kracht es mit invaliden Pointer.
Delphi-Quellcode:
{ linked List freigeben }
while LineStart <> nil do begin
FPBuffer := LineStart;
LineStart := FPBuffer.Ptr;
{ Bei Dispose kümmert sich der Compiler um das Finalize }
Dispose(FPBuffer);
end;
{ keine dangling Pointer hinterlassen }
FPBuffer := nil;
FToPBuffer := nil;
so geht's.
Delphi-Quellcode:
Count := LineStart.Max;
for i := 0 to Count do
begin
FPBuffer := LineStart;
LineStart := FPBuffer.Ptr;
Dispose(FPBuffer);
end;
Dispose(LineStart);
FPBuffer := nil;
FToPBuffer := nil;
LineStart := nil;
finde den Fehler bei deiner Variante leider nicht.
gruss