Delphi-PRAXiS

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)

bundy 24. Nov 2006 23:53


Count Wert von Array
 
Hi :hi:

Könnte mir jemand sagen, wie ich die Anzahl der Zeilen, von einem Array auslesen kann ?

mr47 24. Nov 2006 23:56

Re: Count Wert von Array
 
Delphi-Quellcode:
Length(arrayxyz);

gruß

Daniel G 24. Nov 2006 23:58

Re: Count Wert von Array
 
Delphi-Quellcode:
High(Array)+1
:mrgreen:

//Edit: :oops:

mr47 25. Nov 2006 00:05

Re: Count Wert von Array
 
Falls das ernst gemeint war: Falsch! High() gibt den höchsten Index zurück, was bei einem dynamischen Array Anzahl der Elemente -1 ist!

bundy 25. Nov 2006 00:06

Re: Count Wert von Array
 
:thumb: dank euch


lg Bundy

bundy 25. Nov 2006 00:11

Re: Count Wert von Array
 
hmm length :gruebel:

ich will aber nicht die länge des Strings im array , sondern die Anzahl der Strings im array

Corpsman 25. Nov 2006 06:53

Re: Count Wert von Array
 
length macht genau das

wenn du hast

Delphi-Quellcode:
var a:array of String;
    i:Integer;
begin

..

i := length(a); // Anzahl der Strings in a

// Für das Ablaufen des Arrays ist High aber besser da

for i := 0 to High(a) do begin // Du kannst das -1 dann nie Vergessen. weil du das hier natürlich net brauchst :)
..
end;

xZise 25. Nov 2006 09:38

Re: Count Wert von Array
 
Zitat:

Zitat von bundy
hmm length :gruebel:

ich will aber nicht die länge des Strings im array , sondern die Anzahl der Strings im array

Dann frage das richtige ab ;)

Delphi-Quellcode:
var
  strArr : array of string;

// Stringlänge
Length(strArr[<Item>]);

// Arraylänge
Length(strArr);

Daniel G 25. Nov 2006 14:35

Re: Count Wert von Array
 
Zitat:

Zitat von mr47
Falls das ernst gemeint war: Falsch! High() gibt den höchsten Index zurück, was bei einem dynamischen Array Anzahl der Elemente -1 ist!

:oops: Nicht dran gedacht. Ich war gerade bei for - Schleifen. :wall: Da bietet sich High nämlich an, weil man eben die "-1" weglassen kann.

WIng2005 12. Sep 2007 08:03

Re: Count Wert von Array
 
Hallo,

wie aber bestimme ich die höchsten Indexe bei mehrdimensionalen Array?


MFG
Steffen

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 09:31 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