Arrays Delphi 5.0 Pascal中的数组从0或1开始?
我想在Delphi5.0中做一个ArrayList。因此,我找到了一个解决方案,执行以下代码:Arrays Delphi 5.0 Pascal中的数组从0或1开始?,arrays,delphi,pascal,Arrays,Delphi,Pascal,我想在Delphi5.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 :=
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一无所知。我总是听说帕斯卡指数从1开始,而不是从0开始。在上面的过程中,由于0索引开始,我执行arr[len-1]
有比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;
字符串的索引以一开头
var
c: String;
begin
c := 'Zap!';
c[1] := 'W';
ShowMessage(c); /// shows 'Wap!'
无论如何,您始终可以使用Low()和High()函数,它们返回数组的较低索引和较高索引
对于处理字符串列表,最常用的类是TStringList,它位于unitClasses中,您使用的称为a,它不同于Pascal经典数组。动态数组大小可变,索引基于0 经典的Pascal数组不是基于0或1的。。。索引从哪里开始或结束取决于程序员。编译器唯一的限制是索引必须是序号类型。你可以申报
procedure x;
var
IntArr: array[50..75] of Integer;
StrArr: array[0..49] of string;
DblArr: array[1..10] of Double;
Delphi Pascal还有一个很好的功能,可以帮助迭代任何维度的数组: 仅用于
i:=Low(数组)到High(数组)do…
这对起始偏移量是完全透明的,即0、1或5或其他任何值。我试图编辑上述答案以改进它,但编辑一直拒绝我的帖子。数组可以有负索引 它们都是相同的,一个包含20个整数的数组,但编译器不会将它们视为相同的数组,因为索引范围不同。允许您使数据适合问题域,而不是相反
现在,像
vars:string[200]这样的字符串
在技术上等同于char的var s:packed array[0..200]
其中字节0是长度,除非您使用的字符串没有长度或指定的长度大于255,那么该字符串是1到当前大小的任意值。因为字符串可以是动态的,所以依赖第0个元素来包含长度是不好的。当您使用SetLength(array,length)
时,值得一提的是,它的索引从0开始,一直到length-1。在pascal中,数组上的索引也可以是ANSI表中的字符。因此,您可以定义整数的数组,如a:array['a'..'Z']。当您需要计算字符串或字符数组中的所有字符时,这很方便。您确定“简短声明”吗?也许您可以添加一个带有枚举类型索引的数组,如Array[TAlign]of…
@Ulrich:您是对的。。。我从记忆中说的那句话根本无法编译。我的答案现在更新了。。。。甚至字符串=('False','True')的数组[boolean]代码>@MikeJ-UK几年前,当我遇到它时,它让我大吃一惊。您还可以执行array[byte]
,array[word]
等操作。。在我看来相当酷。我很久没有使用Pascal了,但是如果内存正常,那么字符串索引从1开始的原因是因为第一个元素是字符串长度,您可以直接编辑以更改长度+JachGrate为什么当问题是关于“Delphi 5.0 Pascal”时,这个答案已经过时了?:-)
var
A:array[-20..9] of integer;
B:array[-30..-10] of integer;