![]() |
In einem dyn. Array Werte verschieben
Moin,
habe mal ne Nachfrage, so einfach ist es nicht gelle ? Ich muss also das gesammte Array "durchkauen".
Delphi-Quellcode:
var
a: array of array of integer; procedure A; var i: integer; begin for i := 0 to High(a)-1 do a[i] := a[i+1]; end; |
Re: In einem dyn. Array Werte kopieren
Hi Matti,
ich glaube die "-1" bei dir ist überflüssig/falsch. Hast du es mal mit ![]() ![]() Edit: Da du das nicht 1:1 kopierst, sondern verschiebst (wenn ich's richtig sehe), passt es doch mit der "-1". Eigentlich ist das ja kein richtiges Kopieren, was du möchtest. :gruebel: Grüße, Matze |
Re: In einem dyn. Array Werte kopieren
Ja, Verschieben trifft's eher.
ich wollte mir die zweite For-Schleife ersparen:
Delphi-Quellcode:
wo ich wohl nicht herum kommen werde. Leider ist mir entfallen wie ich auf das zweite Array im Array ;)
procedure A;
var i, n: integer; begin for i := 0 to High(a)-1 do for n := 0 to 2 do a[i, n] := a[i+1, n]; end; per High() zugreifen kann. :gruebel: |
Re: In einem dyn. Array Werte verschieben
Delphi-Quellcode:
High(a[i])
|
Re: In einem dyn. Array Werte kopieren
Zitat:
Da du aber nach High gefragt hast, ist das wohl hier nicht der Fall. Bei verschieden langen inneren Arrays wäre das direkte Verschieben zwar auch möglich, aber da muss man viel genauer schauen was man dabei tut. |
Re: In einem dyn. Array Werte kopieren
Zitat:
Das ginge nur bei einem statischen Array, bei dynamischen, mehrdimensionalen Arrays ist nicht gegeben, dass die zweite Dimension hintereinander im Speicher liegt, da die erste nur aus Zeigern besteht. |
Re: In einem dyn. Array Werte verschieben
Zitat:
Eine zweite Schleife sollte aber auch nicht nötig sein, das sollte eigentlich gehen. (Wenn die Prozedur nicht A heißen würde. :D) Zitat:
|
Re: In einem dyn. Array Werte verschieben
Zitat:
Zitat:
|
Re: In einem dyn. Array Werte verschieben
Zitat:
Delphi-Quellcode:
procedure TForm164.Button1Click(Sender: TObject);
var a: array of array of Integer; i, j: Integer; tmp: String; begin SetLength(a, 3); SetLength(a[0], 2); SetLength(a[1], 4); SetLength(a[2], 5); for i := 0 to High(a) do for j := 0 to High(a[i]) do a[i, j] := i + j shl 4; a[0] := a[2]; tmp := ''; for i := 0 to High(a) do begin for j := 0 to High(a[i]) do tmp := tmp + ', ' + IntToStr(a[i, j]); tmp := tmp + #13#10; end; ShowMessage(tmp); end; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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 by Thomas Breitkreuz