Einzelnen Beitrag anzeigen

Antonov

Registriert seit: 11. Apr 2014
21 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Inhalt TStringList in andere TStringList kopieren

  Alt 25. Jun 2015, 12:35
Wie sieht es denn mit dem Übergeben einer Stringlist am ende einer Funktion aus?
Ich knobel schon den ganzen Vormittag damit, einen Zeiger-Fehler zu beheben, der scheinbar durch leere Listen verursacht wird.

mein Code ist etwa so:
Delphi-Quellcode:
function TForm1.ManipulateList(ThatList: TStringlist): TStringlist;
   var
      I: Integer;
      TempString: String;
      TempStringlist: TStringlist;
begin
   TempStringlist:= Thatlist;
   [... manipulate TempStringList ...]
   Result:= Tempstringlist;
   TempstringList.free;
Der Fehler wird verursacht, weil meine MyList, die ich anderer Stelle aus dem Result kriege ManipulatedList:= ManipulateList(MyList); einfach verschwindet.
Das Problem liegt wohl an dem TempStringlist.free; , wo ich die TempStringlist lösche. Das weiß ich, weil ich durch Probieren genau hier den Grund dafür gefunden habe. Mit .Free kriege ich leere Listen und damit Fehlermeldungen vom Typ "Listenindex überschreitet Maximum", und ohne das .Free läuft alles super.
Jetzt zwei Fragen:
1)Brauche ich das Löschen mit .Free hier?
2) Wie kriege ich meine Liste als Funktionsrückgabe kopiert und nicht als Zeiger?
Methoden wie Result.Assign(TempStringlist); haben nicht funktioniert.

Geändert von Antonov (25. Jun 2015 um 12:39 Uhr)
  Mit Zitat antworten Zitat