Hallo Leute,
ich habe folgendes Problem:
Eine eine von mir geschriebene (mit Hilfe der JCL
) Listenklasse kann das:
Delphi-Quellcode:
function TSetList.GetSets(): ISetArray;
var
Iter: IJclIterator;
begin
Result := TSetArray.Create(DefaultContainerCapacity, False);
Iter := FMap.Values.First();
while Iter.HasNext do
Result.Add(Iter.Next());
end;
ISetArray = interface(IJclList)
end;
TSetArray = class(TJclArrayList, ISetArray)
protected
function CreateEmptyContainer: TJclAbstractContainerBase; override;
end;
Im Hauptprogramm ergibt sich folgende Situation:
Delphi-Quellcode:
procedure Something1();
function Something2():
string;
var
Set2: TSetType;
// Verträglich mit ISetArray/TSetArray...
begin
for Set2
in SetList.GetSets()
do
begin
//...
end;
end;
var
somestring:
string;
Set1: TSetType;
begin
//[...]
for Set1
in SetList.GetSets()
do
begin
//[...]
somestring := Something2();
end;
//[...]
end;
// Something1 end und hier knallts (EAccesViolation in der Unit "System" in der Methode "@IntfClear"
Wenn ich die Zeile mit Funktion "Something2" weglasse, passiert nichts. Hat jemand eine Idee woran das liegen kann?
Scheint ja irgendwas beim Aufräumen des Methoden-Stacks oder so nicht ganz glatt zu laufen.
Danke schon mal im Voraus!