![]() |
Delphi-Version: 7
Delphi - Mehrdimensionale Arrays
Guten Tag,
vorab möchte ich erwähnen, dass ich mich bisher noch nicht so lange mit Delphi beschäftigt habe (ca. 1 Monat)... Wie der Titel schon verrät, habe ich ein Problem mit mehrdimensionalen Arrays. Mein Vorhaben: Ich möchte in einem Array ein weiteres Array speichern. Mein Idee:
Delphi-Quellcode:
Auf die Daten sollte dann so zugegriffen werden:
var
Arr: Array of Array; SetLength(Arr, 3); Arr[0]:=Array[0..1] of String = ('x', 'y', 'z'); Arr[1]:=Array[0..1] of Byte = (10, 20, 30); Arr[2]:=Array[0..1] of Boolean = (True, False, True); Arr[0][0] ==> x Arr[0][1] ==> 10 Arr[0][2] ==> True Vielleicht kann mir jemand dabei helfen... Wie gesagt, bin ich noch ein Anfänger in Delphi. Mit freundlichen Grüßen |
AW: Delphi - Mehrdimensionale Arrays
Das geht mit
Delphi-Quellcode:
.
array of array of Typ
Ein ![]() Datenstrukturen aus unterschiedliche Typen nennt man
Delphi-Quellcode:
oder Klasse, kann deren unterschiedliche enthaltene Typen jedoch nicht per Index ansprechen.
record
Delphi-Quellcode:
type TMeinTyp = record
MeinString: string; MeinInteger: Integer; MeinBoolean: Boolean end; var MeinArray: array[0..1] of TMeinTyp; ... MeinArray[0].MeinString := 'Hallo'; |
AW: Delphi - Mehrdimensionale Arrays
Vielen Dank für deine Antwort.
Ich hätte zu diesem Thema noch folgende Frage: Kann man ein ganzes Array direkt zuweisen?
Delphi-Quellcode:
Ich habe hierzu schon ein paar Beispiele gefunden, jedoch fand ich keine aussagekräftige Antwort.
var
Arr: Array of Array of String; SetLength(Arr, 2); SetLength(Arr[0], 2); SetLength(Arr[1], 2); Arr[0]:=('x', 'y'); Arr[1]:=('y', 'z'); MfG |
AW: Delphi - Mehrdimensionale Arrays
Nein, Arrays kann man nicht zuweisen. Man kann sie auch nicht einander zuweisen oder sie mit einer Funktion zurückgeben (das Übergeben an eine Funktion funktioniert hingegen). Einige der Einschränkungen kann man umgehen, indem man einen Typ definiert (da bin ich mir aber nicht ganz sicher). Der bekannteste dieser Arraytypen ist TBytes, der in Delphis RTL allgegenwärtig ist.
|
AW: Delphi - Mehrdimensionale Arrays
Okay.
Also muss ich die vordefinierten Daten manuell zuweisen? 1. Arr[0].Strings := 'xy'; Arr[1].Strings := 'yz'; oder 2. var Arr: Array[0..1] of String = ('xy', 'yz'); MfG |
AW: Delphi - Mehrdimensionale Arrays
Unabhängig von der Sinnhaftigkeit meines Beispiels, sowas geht:
Delphi-Quellcode:
program Test;
type tArrayOfInteger = Array of Integer; tArrayOfArrayOfInteger = Array of tArrayOfInteger; var EinMalEins : tArrayOfArrayOfInteger; i,k: Integer; begin SetLength(EinMalEins,11); for i := low(EinMalEins) to high(EinMalEins) do SetLength(EinMalEins[i],11); WriteLn('EinmalEins berechnen:'); for i := low(EinMalEins) to high(EinMalEins) do begin for k := low(EinMalEins[i]) to high(EinMalEins[i]) do begin EinMalEins[i][k] := i * k; end; end; WriteLn('EinmalEins ausgeben:'); for i := low(EinMalEins) to high(EinMalEins) do begin for k := low(EinMalEins[i]) to high(EinMalEins[i]) do begin WriteLn(Format('i: %.3d, k: %.3d => %.3d',[i,k,EinMalEins[i][k]])); end; end; WriteLn('Irgendwas zuweisen'); EinMalEins[0] := [100,200,300,400,500,600,700,800,900,000,110,120,130,140,150,160,170,180,190,200]; WriteLn('Irgendwas ausgeben:'); for i := low(EinMalEins) to high(EinMalEins) do begin for k := low(EinMalEins[i]) to high(EinMalEins[i]) do begin WriteLn(Format('i: %.3d, k: %.3d => %.3d',[i,k,EinMalEins[i][k]])); end; end; end. |
AW: Delphi - Mehrdimensionale Arrays
Vielen Dank! :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 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