So prüfen Sie, ob ein dynamisches Array leer ist

8

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?

    
DelphiNewbie 28.04.2011, 05:24
quelle

3 Antworten

22

Sie können die Funktion Length verwenden

%Vor%     
RRUZ 28.04.2011, 05:26
quelle
7

Leere Arrays sind gleich nil :

%Vor%

(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%     
Rob Kennedy 28.04.2011 06:10
quelle
3

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.

    
David Heffernan 28.04.2011 12:09
quelle

Tags und Links