Zitat von
negaH:
Wenn High(DynArray=mil) < 0 ist und Index ein unsigned Typ ist
if Integer <= Word then ?
Aber liefert nicht high() seinen definierten (auch wenn es Compilermagic ist) Rückgabetyp zurück? Also würde er doch immer -1 liefern
können. Oder passt er den Typ dann durch die Compilermagic an, dass er immer den Typ zurück gibt mit dem er vergleicht? Aber ich denke mal, da habe ich wieder was falsch verstanden.
Zitat von
negaH:
Low(DynArray=nil) liefert 0 statt wie bei High(DynArray=nil) = -1, dafür gibt es einen Grund.
Anderes schönes Beispiel dazu wäre eine For Schleife:
for i := low() to high() do
Da wird die For Schleife niemals ausgeführt, wenn der Endwert vor dem Anfangswert liegt. Somit darf High() niemals 0 liefern bei array = nil und auch darf low() bei array = nil niemals -1 liefern, weil sonst würde einmal entweder ein Durchlauf mit 0 durchgeführt und im zweiten genannten Fall ein Durchlauf mit -1.
Siehe auch die üblichen Listenschleifen (handgemacht, also kein For-In-Do):
for i := 0 to pred(count) do
bzw. alternativ:
for i := 0 to count-1 do
.
Nur mal so als Ergänzung...