Autor Beitrag
Stoffel1984
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 219

Win NT, Win 2000
D6 Prof
BeitragVerfasst: Mi 18.02.04 10:46 
Hallo,

ich benötige in einer Schleife die Abfrage ob High(Array) leer bzw. keine Werte enthält (also nach SetLength).
Wie frag ich das denn ab?


Danke schonmal...

Stoffel

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 18.02.04 14:52 
Titel: Wie meinst Du das?
Hallo!

Mir ist nicht ganz klar, wie Du das meinst!

Wenn Length(array)=0 ist, dann hat es keine Einträge. Das gleiche gilt für High(array)=-1. Mit array ist hier ein dynamisches Array gemeint, wie Du es ja sicherlich auch verwendest.

Wenn Du also eine Schleife verwenden willst, kannst Du einfach folgendes machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var YourArray: array of Integer;
begin
  for i:=0 to High(YourArray) do begin
    //(...)
  end;
end;


Wenn YourArray keine Elemente enthält läuft die Schleife einfach gar nicht ab, sondern wird sozusagen übersprungen.

MfG,
S.J.
Stoffel1984 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 219

Win NT, Win 2000
D6 Prof
BeitragVerfasst: Mi 18.02.04 16:03 
Hallo,

ja hab mich etwas unverständlich ausgedrückt.
Ich meinte einfach welcher Default Wert die einzelnen Array Einträge nach dem setzen der Länge annehmen. Hätte ja im Debugger geschaut aber der will heut nich so richtig. String Array haben Standardmäßig '' drin.

Hab aber mittlerweile rausbekommen das default 0 ist.

Korrigiert mich wenn ich mich täusche :wink:
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Mi 18.02.04 16:50 
Stoffel1984 hat folgendes geschrieben:
Korrigiert mich wenn ich mich täusche :wink:
Nun denn, schau mal in die OH:
OH hat folgendes geschrieben:
Bei einer langen String- oder einer dynamischen Array-Variable weist SetLength dem mit S referenzierten String oder Array die angegebene Länge zu. Dabei bleiben die Zeichen im String oder die Elemente im Array erhalten, jedoch ist der Inhalt des neu zugewiesenen Speicherbereichs nicht definiert.

Gruß, teebee