Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Existiert Eintrag in dynamischem Array?


Calculon - Do 11.09.08 13:51
Titel: Existiert Eintrag in dynamischem Array?
Hi zusammen,

wie kann ich festellen, ob ein gültiger array Eintrag existiert? Also in anderen Worten: Wurde für diesen Index bereits Speicher angefordert?

Wenn ich


Delphi-Quelltext
1:
2:
  if data[i] = nil then
    ShowMessage('NIL');

ausführe, dann kommt immer eine Zugriffsverletzung bevor auf nil geprüft werden kann...

Gruß
--


Gausi - Do 11.09.08 13:53

length(myArray) < i ?


Calculon - Do 11.09.08 14:02

Thx! :idea:

Gruß
--


Marc. - Do 11.09.08 14:48

Muss es nicht korrekterweise high(myArray) < i heißen? :gruebel:


elundril - Do 11.09.08 14:49

ich glaube es geht beides.


wazup - Do 11.09.08 14:53

So weit ich das weis ist das so:

(High(MyArray)) = (Length(MyArray) - 1) Bessere erklärung fiel mir jetzt nicht ein *LOL*


baka0815 - Do 11.09.08 14:56

Nicht ganz richtig.

Man kann ein Array von [5..20] definieren, dann wäre High()=20, Low()=5, aber Length()=16.


Xentar - Do 11.09.08 15:00


Delphi-Quelltext
1:
2:
3:
4:
if i in [low(MyArray)..high(MyArray)] then
begin

end;

Geht nur, wenn das Array weniger als 255 Werte hat.

Sonst:

Delphi-Quelltext
1:
if (i >= low(MyArray)) and (i <= high(MyArray)) then