AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Interface Problem

Ein Thema von razer91 · begonnen am 22. Mär 2013 · letzter Beitrag vom 25. Mär 2013
Antwort Antwort
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
razer91

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

AW: Interface Problem

  Alt 24. Mär 2013, 19:45
Keiner eine Idee? Braucht es noch mehr Informationen?
Flo
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Interface Problem

  Alt 24. Mär 2013, 23:01
Am Besten du erstellst davon ein kleines Demo Projekt und stellst uns hier den Quellcode zur Verfügung.

Mit Interfaces kann das ganz schnell wigelich werden, weil der Debgugger da einem auch nicht mehr so zur Seite steht.

Es scheint aber, als würde sich eine Interface Instanz freigeben wollen, die jedoch schon zuvor freigeben wurde (so als ob man zwei mal .Free() ) aufruft.
Sebastian
  Mit Zitat antworten Zitat
razer91

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

AW: Interface Problem

  Alt 25. Mär 2013, 09:38
Am Besten du erstellst davon ein kleines Demo Projekt und stellst uns hier den Quellcode zur Verfügung. [...]
Bevor ich das mache, präzisiere ich meine Frage: Der Aufbau der Methode "Something1()" führt zu einer Verschachtelung zweier For-Schleifen, in denen jeweils "GetSets()" aufgerufen wird:

Delphi-Quellcode:
  for Set1 in SetList.GetSets() do
  begin
    //[...]

    somestring := Something2();
  end;
Das entspricht:

Delphi-Quellcode:
  for Set1 in SetList.GetSets() do
  begin
    //[...]
    
    for Set2 in SetList.GetSets() do
    begin
      //...
    end;

  end;
Wenn man die innere Schleife weglässt tritt der Fehler nicht auf. Das könnte bedeuten, dass gerade diese Verschachtelung mit dem zweimaligen Aufruf von GetSets() damit zu tun hat. Nur warum?

Wenn diese Überlegung nichts hilft, dann erstelle ich gerne ein Beispiel-Projekt. Ich weiß nur nicht, ob das hilft, weil ich JCL-Komponenten benutzte.
Flo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz