![]() |
Objektliste "kopieren"
Hallöchen,
kurze Frage...wie übergibt man Items von einer TTokenListe (TObjectList) zu einem Funktionsresult TTokenListe (TObjectList)? Also kopiere alle Items von Index bis Count aus der TTokenListe und gib es wieder.
Delphi-Quellcode:
MfG Alaitoc
function CopyToken(TokenList:TTokenList;Index,Count:Integer):TTokenList;
begin end; |
Re: Objektliste "kopieren"
.Assign()
|
Re: Objektliste "kopieren"
Würde ich etwa so machen:
Delphi-Quellcode:
procedure CopyToken(const Dest, Src: TTokenList;Index,Count:Integer);
var i: integer; begin for i := Index to Count do Dest.Add(Src.Items[i]); end; |
Re: Objektliste "kopieren"
Sollen die Objekte in der Liste geklont werden oder willst Du nur die Referenzen duplizieren? Hat die TObjectList die Eigenschaft 'OwnsObjects' auf 'True' gesetzt?
@DeddyH: Bei OwnsObjects=True ergibt das ja schonmal Probleme, wenn eine der Listen freigegeben wird... |
Re: Objektliste "kopieren"
Zitat:
|
Re: Objektliste "kopieren"
So mal zum allgemeinen Verständnis mal mein Programm, ich markier hier mal die relevanten Stellen.
Delphi-Quellcode:
procedure TMathParser.Parsen(TokenList:TTokenList;BinaryNode:PTBinaryNode);
begin if TokenPos(tkAdd,TokenList)>0 then begin BinaryNode:=CreateBinNode(TokenList,TokenPos(tkAdd,TokenList),BinaryNode); Parsen(SubTokenA(TokenList,tkAdd),BinaryNode);//!!!!!!!! Parsen(SubTokenB(TokenList,tkAdd),BinaryNode);//!!!!!!!! end else if TokenPos(tkSub,TokenList)>0 then begin ... ... ... ... ...
Delphi-Quellcode:
function SubTokenA(TokenList:TTokenList;Token:TTokens):TTokenList;
begin result:=CopyToken(TokenList,0,TokenPos(Token,TokenList)); end; function SubTokenB(TokenList:TTokenList;Token:TTokens):TTokenList; begin result:=CopyTokenEnd(TokenList,TokenPos(Token,Tokenlist)+1) end;
Delphi-Quellcode:
Im ersten Teil durchsucht er die Liste nach Tokens um daraus dann einen binären Baum zu erstellen, dabei teilt er immer durch SubTokenA und SubTokenB die Liste in zwei Hälften, dieses "Teilen" soll CopyToken übernehmen...indem es alle Items von Index bis Count kopiert und als Liste wiedergibt.
function CopyToken(TokenList:TTokenList;Index,Count:Integer):TTokenList;
begin end; Ich muss hier halt wissen wie ich den Teil der Liste kopiere ohne mir ein Speicherloch zu kreieren, denn das hab ich bisher ganz gut hingekriegt auch wenn das Programm grundsätzlich geklappt hat. |
Re: Objektliste "kopieren"
Bei:
Delphi-Quellcode:
Ist es das Problem..das mein Ziel "result" ist.
procedure CopyToken(const Dest, Src: TTokenList;Index,Count:Integer);
var i: integer; begin for i := Index to Count do Dest.Add(Src.Items[i]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz