Um alle Tokens freigeben zu können hab ich eine zweite Liste (*** Stack) mitlaufen. Das geht aber doch auch anders (ist doch so ein verkette Listen Zeugs). Wie macht denn nochmal sowas?
Delphi-Quellcode:
procedure TDxfTokenizer.LoadFromFile(const FileName: string);
begin
if FileExists(FileName) then
begin
..
SL := TStringList.Create;
try
SL.LoadFromFile(FileName);
..
while I < SL.Count - 1 do
begin
...
NewToken := TDxfToken.Create;
NewToken.Group := IntSectionGroupCode;
NewToken.Name := StrSectionName;
FList.Add(NewToken); // ***
destructor TDxfTokenizer.Destroy;
begin
Clear;
FList.Free;
Tokens.Free;
inherited Destroy;
end;
procedure TDxfTokenizer.Clear;
var
I: integer;
Token: TDxfToken;
begin
for I := FList.Count - 1 downto 0 do // ***
begin
Token := TDxfToken(FList[I]);
Token.Free;
end;
FList.Clear;
Tokens.Clear;
end;