Ich möchte eine ArrayList in Delphi 5.0 machen. Also habe ich eine Lösung für diesen Code gefunden:
%Vor%OK, aber jedes Mal, wenn ich etwas hinzufüge, mache ich das:
%Vor%Ich bin ein C ++ - Programmierer, und ich weiß nichts über Pascal. Ich habe immer gehört, dass ein Pascal-Index von 1, nicht 0, beginnt. Wie in der obigen Prozedur bin ich arr [len-1] wegen 0 index begin.
Gibt es einen besseren Weg als Pascal-Arrays? Wie bei C ++ std::vector
?
Die Indizes dynamischer Arrays beginnen mit null
%Vor%Statische Arrays können beliebige Indizes haben
%Vor%Die Indizes der Strings beginnen mit einem
%Vor%Wie auch immer, Sie können immer Low () und High () Funktionen verwenden, die den unteren und oberen Index eines Arrays zurückgeben.
Für die Behandlung einer Liste von Strings ist die am häufigsten verwendete Klasse TStringList , die in der Einheit Klassen gefunden wird.
Was Sie verwenden, ist als dynamisches Array bekannt, das sich von einem klassischen Pascal-Array unterscheidet. Dynamische Arrays sind in der Größe variabel und der Index ist 0 basiert.
Klassische Pascal-Arrays sind nicht 0 oder 1 ... Es liegt am Programmierer, wo der Index beginnt oder endet. Die einzige Compiler-Einschränkung ist, dass der Index ein ordinaler Typ sein muss. Sie können
deklarieren %Vor%Ich habe versucht, die obige Antwort zu bearbeiten, um sie zu verbessern, aber der Redakteur lehnt mein Posting ab. Arrays können negative Indizes haben.
%Vor%Diese sind beide gleich, ein Array von 20 ganzen Zahlen, wird aber vom Compiler nicht gleich behandelt, da der Indexbereich unterschiedlich ist. Ermöglicht Ihnen, die Daten an die Problemdomäne anzupassen und nicht umgekehrt.
Nun ist eine Zeichenkette wie var S:string[200];
technisch äquivalent zu var s:packed array[0..200] of char
, wobei Byte 0 die Länge ist, außer wenn Sie eine Zeichenkette ohne Länge verwenden oder die angegebene Länge größer als 255 ist, dann ist die Zeichenkette 1 gleich welcher Stromstärke Größe ist es. Da Strings dynamisch sein können, ist es nicht gut, vom 0. Element abhängig zu sein, das die Länge enthält.
Wenn Sie SetLength(array, length)
verwenden, ist es erwähnenswert, dass es Indizes beginnend von 0 bis zu Länge 1 gibt. Auch in Pascal-Index für Array kann Zeichen aus ANSI-Tabelle sein. Sie können also ein Array wie a:array['A'..'Z'] of integer
definieren. Dies ist praktisch, wenn Sie alle Zeichen in Ihren Strings oder Char Arrays benötigen.