Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Count Wert von Array (https://www.delphipraxis.net/81326-count-wert-von-array.html)

b1zZ 12. Sep 2007 08:21

Re: Count Wert von Array
 
Delphi-Quellcode:
var 2DStrArr: Array of Array of String;
begin
  // Der Linke Index 1. Dimension
  // Der Rechte Index 2. Dimension
  // 2DStrArr[0][0]
 
  // Höchster Index der 1. Dimension
  High(2DStrArr);

  // Höchster Index der 2. Dimension
  High(2DStrArr[0]);

end;

Matze 12. Sep 2007 08:33

Re: Count Wert von Array
 
Zitat:

Zitat von Corpsman
Delphi-Quellcode:
for i := 0 to High(a) do

Da würde ich das nutzen, ob es unbedingt besser ist, kann ich nicht sagen:

Delphi-Quellcode:
for i := Low(a) to High(a) do

WIng2005 12. Sep 2007 08:39

Re: Count Wert von Array
 
@Matze: deine Version funktioniert nur bei mehrdimensionalen Arrays nicht.

@b1zZ: Danke, werde ich mal probieren

MFG
Steffen

b1zZ 12. Sep 2007 08:43

Re: Count Wert von Array
 
Zitat:

Zitat von WIng2005
@Matze: deine Version funktioniert nur bei mehrdimensionalen Arrays nicht.

Doch funktioniert auch da.

Delphi-Quellcode:
for i := Low(a) to High(a) do
...
Damit wirst du aber nur die 1. Dimension durchlaufen.
Um z.B. in der 2. Dimension durchzulaufen musst du

Delphi-Quellcode:
for i := Low(a[1]) to High(a[1]) do
Damit wirst die 2t Dimension von a[1] durchlaufen.

WIng2005 12. Sep 2007 08:56

Re: Count Wert von Array
 
Ja, mein ich doch. Funktioniert bei mir nicht...wäre wohl besser gewesen.
Ich hatte Zugriffsverletzungen, da ich den Index Überschritten habe.
Hatte demnach den Index der falschen Dimension als Laufvariable.

MFG
Steffen

leddl 12. Sep 2007 09:40

Re: Count Wert von Array
 
Delphi-Quellcode:
Var max,count : Integer;
    aArray : Array of Array of ...;

[...]

//Anzahl der Arrays im Array
count := length(aArray);

//maximale Anzahl an Einträgen im "inneren" Array
max := 0;
for i := low(aArray) to high(aArray) do
  if max < length(aArray[i]) then max := length(aArray[i]);
Warum sollte das nicht funktionieren? :zwinker: Eigentlich kann man dabei auch keine Indizes durcheinanderbringen :gruebel: Schließlich hat man nur einen...
Erst wenn du auf die Werte zugreifen möchtest, brauchst du 2 Indizes:
Delphi-Quellcode:
//maximaler Wert in einem Array of Array of Integer
max := 0;
for i := low(aArray) to high(aArray) do
  for j := low(aArray[i]) to high(aArray[i]) do
    if max < aArray[i][j] then max := aArray[i][j];
//Edit:
:shock: :wall: Eben les ich mirs nochmal durch... Hatte die Frage vorher so verstanden, dass der höchste Index der inneren Arrays gesucht ist. Mea Culpa, sorry. Aber mit dem 2. Codestückchen passt ja dann wieder alles :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.
Seite 2 von 2     12   

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