Dynamisches Array kopieren - AV ?
Hi.
Ich möchte ein dynamisches Array kopieren. Allerdings gibt er mir direkt im ersten Durchlauf eine AV. Der Code hier ist vereinfacht, aber ansonsten genauso. output ist ein funktionierendes dynamisches Array, vom selben Typ wie buf. Beim Start ist Output bereits gefüllt und hat eine gewisse Länge / Größe
Delphi-Quellcode:
Wieso gibts da ne AV? (da = bei "buf[i,j].Zeichen := ....")
var
buf : TOutput; // array of array of -> record -> Zeichen : Char i,j : integer; begin SetLength(buf,length(Output)); for i := 0 to length(Output) - 1 do begin SetLength(buf[i],length(Output[i])); for j := 0 to length(Output[i]) - 1 do begin Output[i,j].Zeichen := chr(1); buf[i,j].Zeichen := Output[i,j].Zeichen; end; end; end; Btw, wie würdet ihr ein dynamisches Array am schnellsten kopieren? Mit CopyMemory (Bsp. wäre nett ;-) ) ? Thx, Flips |
Re: Dynamisches Array kopieren - AV ?
Hallo,
hast Du dir schon einmal die Prozedur move angeschaut. Die sollte das auf einfache weise erledigen. In der Hilfe ist auch ein Beispiel. Grüße Klaus |
Re: Dynamisches Array kopieren - AV ?
Der Code selber scheint OK zu sein.
wie hast du denn "Output" befüllt? (wenn "buf" leer ist, könnte ich mir akuell nur einen Zugriffsfehler auf "Output" vorstellen)
Delphi-Quellcode:
Buf := Copy(Output);
wenn du mehr, als nur "Zeichen", im Record hast, wovon auch nichts dynamisch ist, dann gingt etwas in Richtung CopyMemory ... wie sieht den der record komplett aus? So (nur mi dem einem Char drin) wäre CopyMemory/Move nur bremsend. PS: CopyMemory ruft auch nur Move auf, also egal :angel: |
Re: Dynamisches Array kopieren - AV ?
Aah....wie würde mein Englischlehrer jetzt sagen? You can't see the wood for the trees...
Um ehrlich zu sein habe ich da nur zur Vereinfachung record angegeben. Es ist ne Klasse...und die will schön initialisiert werden ;-) Da es mir ja nur um einen Wert aus der Klasse geht, spare ich mir das Create und Free und erstelle ein dyn. Array, in welches ich die benötigten Werte reinschreibe. Brauche ja nicht die ganzen Objekte zu kopieren. Danke euch allen :hi: |
Re: Dynamisches Array kopieren - AV ?
*axt überreich*
war also (doch) ein Zugriffsproblem :angel: gut, bei einer Klasse wäre etwas mit CopyMemory/Move schon schwerer, da man dort ja meist keinen direkten Zugriff auf die Variablen hat (Getter/Setter). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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