Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamische Mehrdimensionalige Arrays (https://www.delphipraxis.net/28486-dynamische-mehrdimensionalige-arrays.html)

smash 25. Aug 2004 12:06


Dynamische Mehrdimensionalige Arrays
 
Hallo,

ich komme aus der PHP- Branche, und würde gerne wissen wie man folgendes in Delphi realisiert.
Bitte mit Deklaration der Variablen:

Delphi-Quellcode:
<?php
   $arr = array(
   "abc" => "def",
   "123" => "jkl",
   "anotherOne" => "lol"
   );
   
   foreach($arr AS $key => $val)
   {
      showMessage($key);
      showMessage($val);
   }
?>

Nikolas 25. Aug 2004 12:15

Re: Dynamische Mehrdimensionalige Arrays
 
Könntest du vielleicht kurz sagen, was der Code bewirkt?

smash 25. Aug 2004 12:54

Re: Dynamische Mehrdimensionalige Arrays
 
Es wird ein Array in dieser Form erstellt:

Array:
Schlüssel|Wert
abc|def
123|jkl
anotherOne|lol

Anschließend wird das Array Stück für Stück durchlaufen, wobei jeweils der Schlüssel und der Wert in einer Variable zur Verfügung stehen.

xineohp 25. Aug 2004 13:18

Re: Dynamische Mehrdimensionalige Arrays
 
moin,

würde ich wie folgt machen:

Delphi-Quellcode:
type
  Eintrag = record
    key,
    val: string;
  end;
var
  arr: array of Eintrag;
  i: integer;
begin
  setlength(arr, 4);

  arr[0].key := 'aa';
  arr[0].val := '11';
  // ...

  For i:=0 to high(arr) do
    showmessage( arr[0].key +' --> '+ arr[0].val );
end;
alternativ ginge auch:

Delphi-Quellcode:
var
  arr: array of array[1..2] of string;
  i: integer;
begin
begin
  setlength(arr, 4);

  arr[0,1] := 'aa';
  arr[0,2] := '11';
  // ...

  For i:=0 to high(arr) do
    showmessage( arr[0,1]+' --> '+ arr[0,2] );
end;
Die direkte Zuweisung funktioniert afaik nur bei statischen arrays:

Delphi-Quellcode:
var
  arr: array[0..3,1..2] of string = (('aa','11'),('bb','22'),('cc','33'),('dd','44'));
  i: integer;
begin
  For i:=0 to high(arr) do
    showmessage( arr[0,1]+' --> '+ arr[0,2] );
end;

Noinini 26. Aug 2004 06:36

Re: Dynamische Mehrdimensionalige Arrays
 
Hallöchen,

wenns nicht unbedingt ein Array sein muss, würde sich auch eine Stringliste anbieten.
Du kannst zwei Strings miteinander verknüpfen und bist deutlich flexibler. Müsstest mal in der Hilfe schaun.

Hier ein Beispiel:

Delphi-Quellcode:
var
  strList: TStringlist;
  i: Integer;
begin
  strList := TStringlist.Create;
  strList.Add('abc=def');
  strList.Add('123=456');
  for i := 0 to strList.Count - 1do
  begin
    showmessage(strList.Names[i]);
    showmessage(strList.ValueFromIndex[i]);
  end;
  strList.Free;
end;
Gruß

Iris

nailor 26. Aug 2004 14:18

Re: Dynamische Mehrdimensionalige Arrays
 
das ist ein typischer hash. gibt in delphi von hause aus nicht (anders als bei php, c#...). aber du kannst mal auf diversen komponenten-sammlungs-seiten (torry, delphi super page...) schauen, das hat bestimmt schon mal wer gemacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 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