Das ZeroMemory ist hier wohl eher schädlich, da es die Referenzzählung der Strings umgeht. Ein Finalize(FPBuffer^) sollte da verträglicher sein.
Was mir auffällt ist, daß für jede Zeile im AppendToLinkedList ein New() aufgerufen wird, es aber nur ein einziges Dispose() gibt.
Könntest du mir bitte an Hand meines Codes das korrigieren wenn du zeit dazu findest?
Zitat:
Außerdem vermisse ich die Initialisierung von nReading mit 0.
FPBuffer^.Nr := nReading;
Nun das ist schon gegeben..
nReading ist 0 beim start.
Aber ich kann es noch ändern wobei ich aber denke das es nicht nötig ist.
Wenn ich eine Variable als integer definiere dann ist automatisch wenn nichts anderes angegeben wird der erste wert = 0 oder liege ich da falsch?
In dem Fall muss ich nReading nicht extra 0 zuweisen.
Aber wenn das für dich besser ist? Kein Problem.
Delphi-Quellcode:
try
try
nReading := 0;
while not eof(ParseFile)
do
begin
ReadLN(ParseFile, sBuffer);
AppendToLinkedList(nReading, sBuffer);
inc(nReading);
end;
except
raise Exception.Create(SysErrorMessage(GetLastError));
end;
finally
CloseFile(ParseFile);
end;
gruss