Ich habe eine Prozedur wie folgt deklariert:
%Vor% Ich möchte wissen, wie überprüft werden kann, ob der Parameter List
leer ist.
Zum Beispiel:
%Vor%Wie kann ich das machen?
Leere Arrays sind gleich nil
:
(Das bedeutet auch SetLength(List, 0)
und List := nil
sind äquivalente Befehle.)
Leere Arrays haben einen letzten Index, der kleiner ist als der erste Index, der für das offene Array in Ihrem Beispiel einen negativen letzten Index bedeutet:
%Vor%Das bedeutet, dass Sie nichts Spezielles tun müssen, wenn Sie vermeiden möchten, dass eine Schleife in einem leeren Array ausgeführt wird. Schreiben Sie einfach die Schleife wie gewohnt:
%Vor%Persönlich schreibe ich immer
%Vor%statt
%Vor%weil ich glaube, dass es besser liest, und nicht nur für dynamische Arrays.
Dies beantwortet die Frage nach dynamischen Arrays, aber Ihr Beispiel ist ein offenes Array, daher gibt es hier zwei mögliche Fragen.
Bei offenen Arrays würde ich Length()
oder high()
verwenden, um basierend auf der Größe des Arrays eine Entscheidung zu treffen. Ich würde nicht von Argumenten verführt werden, dass Pointer(List)<>nil
schneller ist als Length(List)<>nil
. Der Geschwindigkeitsunterschied zwischen diesen Optionen ist nicht erkennbar und Sie sollten daher die klarste und lesbarste Option verwenden.