Hallo Leute,
herzlichen Dank für die vielen Tips. Ich bin gerade noch dabei, diese durchzutesten. Bisher nur mit wenig Erfolg. Damit gehe sehr stark davon aus, das das Problem wo anders ist. Da ich es bis noch nicht geblickt habe, poste ich einfach mal den restlichen Code. Ist echt Mist, wenn man den Wald vor lauter Bäumen nicht mehr sieht.
Besten Dank!
Delphi-Quellcode:
type TStreamlist= class (TObject)
private
FStreamObjectList:TObjectlist;
function Get(Index: Integer): TStringstream;
procedure Put(Index: Integer; const Value: TStringstream);
public
constructor Create;
destructor Destroy;override;
function add: integer;
function Additem(Item:TStringstream):integer;
property items[Index: Integer]: TStringstream read Get write Put;
function count: integer;
procedure delete (index:integer);
procedure clear;
end;
implementation
constructor TStreamlist.create;
begin;
inherited create;
FStreamObjectList:=TObjectList.Create(true);
end;
destructor TStreamlist.destroy;
var i:Integer;
begin;
for i:= 1 to FStreamObjectList.Count do
begin
FStreamObjectList.Items[i-1].free // jedes einzelne Objekt expl. freigeben
end;
FStreamObjectList.Clear(); // jetzt duerften nur noch nils da sein
inherited Destroy; // und zum Schluss noch das Basisdestroy
end;
function TStreamlist.add: integer;
var TagType: TStringstream;
begin
TagType:=TStringstream.Create('');
Result:= FStreamObjectList.add(TagType);
end;
function TStreamlist.Additem(Item: TStringstream): Integer;
var TagType: TStringstream;
begin
TagType:=TStringstream.Create('');
TagType:=Item;
Result:= FStreamObjectList.add(TagType);
end;
function TStreamlist.Get(Index: Integer):TStringstream;
begin;
result:= TStringstream(FStreamObjectList.Items[Index]);
end;
procedure TStreamlist.Put(Index: Integer; const Value: TStringstream);
begin
FStreamObjectList[Index]:=Value;
end;
function TStreamlist.count: integer;
begin
result:=FStreamObjectList.count;
end;
procedure TStreamlist.Delete(index:integer);
begin
FStreamObjectList.Delete(index);
FStreamObjectList.Capacity := FStreamObjectList.Count; //Speicher Freigeben
end;
procedure TStreamlist.clear;
begin
while FStreamObjectList.Count >0 do
begin
FStreamObjectList.Delete(0);
end;
end;
end.