格式天下 发表于 2012-7-15 09:28:03

关于delphi的low()和High()问题

本帖最后由 乐yi忘忧 于 2012-7-16 14:09 编辑

这是改代码运行前的样子

这是运行后的样子




我想知道为什么使用Low()和High()后返回值是0,-1……不理解,求指点

代码如下:




unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
    edt1: TEdit;
    btn1: TButton;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    btn2: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;
var
Form1: TForm1;
Num:array of string;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
   k,i:Integer;
begin
edt1.Text:=' ';
for i:=0 to 5 do
begin
    k:=Random(90);
    edt1.Text:=IntToStr(k)+','+edt1.Text;
end;
edt1.Text:=copy(edt1.Text,0,Length(edt1.Text)-2);
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
   lbl1.Caption:=IntToStr(Low(Num));
lbl2.Caption:=IntToStr(High(Num));
lbl3.Caption:=IntToStr(Length(Num));
end;
end.

小甲鱼 发表于 2012-7-15 09:28:04

low() 返回在一定范围内的最低值, 或者序数最低值。
high() 则相反。
这里哥们的问题是,忘记给 Num 复制了。。。。。。

这是 Delphi 帮助文档中的栗子:

function Sum( var X: array of Double): Double;

var
I: Word;
S: Real;
begin
S := 0; { Note that open array index range is always zero-based. }
for I := 0 to High(X) do S := S + X;
Sum := S;
end;

procedure TForm1.Button1Click(Sender: TObject);

var
List1: array of Double;
List2: array of Double;
X: Word;
S, TempStr: string;
begin
for X := Low(List1) to High(List1) do
      List1 := X * 3.4;
for X := Low(List2) to High(List2) do
      List2 := X * 0.0123;
Str(Sum(List1):4:2, S);
S := 'Sum of List1: ' + S + #13#10;
S := S + 'Sum of List2: ';
Str(Sum(List2):4:2, TempStr);

S := S + TempStr;
MessageDlg(S, mtInformation, , 0);

end;

格式天下 发表于 2012-7-15 15:39:42

小甲鱼 发表于 2012-7-15 14:43 static/image/common/back.gif
low() 返回在一定范围内的最低值, 或者序数最低值。
high() 则相反。
这里哥们的问题是,忘记给 Num 复制 ...

对哦,嘿嘿,谢谢鱼哥:lol
页: [1]
查看完整版本: 关于delphi的low()和High()问题