Einzelnen Beitrag anzeigen

razer91

Registriert seit: 17. Aug 2009
20 Beiträge
 
#1

Interface Problem

  Alt 22. Mär 2013, 17:37
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!
Flo
  Mit Zitat antworten Zitat