arrays - Delphi 5.0 Pascal 中数组从 0 或 1 开始?

标签 arrays delphi pascal

我想在 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/

相关文章:

arrays - 是否可以从引用中获取(静态/动态)数组的长度?

c - 帕斯卡到 C 转换器

javascript - 非常简单的数组、循环和逻辑比较问题

javascript - jQuery-根据多个条件计算百分比

javascript - 将对象数组更改为带有图表坐标的数组

delphi - 在 Delphi 2010 上使用 HIDController

delphi - 在Delphi 7中使用ADO Connection连接到excel 2007文件

delphi - 如何在 Delphi 7 中使用现有表单作为选项卡

delphi - 为什么 C 到 Pascal 的转换会崩溃?

python - 使用 Python 将对象数组转换为数组数组