我想在 Delphi 5.0 中做一个 ArrayList。所以我找到了执行此代码的解决方案:
var arr: array of String;
好的,但是每次我添加一些东西时我都会这样做:
var
Form1: TForm1;
var arr : array of String;
procedure TForm1.Button1Click(Sender: TObject);
var aux :string;
var len:integer;
begin
len := Length(arr) + 1;
SetLength(arr, len);
arr[len-1] := 'abc' + IntToStr(len);
Button1.Caption := arr[len-1]; // just to writeout something
end;
我是一名 C++ 程序员,对 Pascal 一无所知。我总是听说 Pascal 索引从 1 开始,而不是 0。正如在上面的过程中,我执行 arr[len-1] 因为 0 索引开始。
还有比 Pascal 数组更好的方法吗?就像 C++ 的 std::vector
一样?
最佳答案
动态数组的索引从零开始
var
a: array of Integer;
begin
SetLength(a, 500);
a[0] := 0;
静态数组可以有任意索引
var
i: Integer;
b: array [50..100] of Integer;
c: array[-10..10] of Integer;
begin
for i := 50 to 100 do b[i] := i * i;
// Note negative starting index above in declaration
for i := -10 to 10 do c[i] := i * i;
字符串的索引以 1 开头
var
c: String;
begin
c := 'Zap!';
c[1] := 'W';
ShowMessage(c); /// shows 'Wap!'
无论如何,您始终可以使用 Low() 和 High() 函数来返回数组的较低和较高索引。
为了处理字符串列表,最常用的类是TStringList,它可以在Classes单元中找到。
关于arrays - Delphi 5.0 Pascal 中数组从 0 或 1 开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4083356/