易截截图软件、单文件、免安装、纯绿色、仅160KB

关于Delphi中二维数组的声明和大小调整

这是一个实例:
procedure TMainForm.Button1Click(Sender: TObject);
var
  arr:array of array of string;
begin
  setlength(arr,2,3);
  arr[1,2]:='this is a test';
  setlength(arr,0,0);
  setlength(arr,4,5);
  showmessage(arr[1,2]);
end;
声明一个二维数组的方法是用 array of array of 类型 这很贴近人们的思维方式。同理可推出三维数组的声明方法为 array of array of array of  类型
对二维数组大小的调整仍然使用SetLength函数,第一个参数是数组名称,第二个参数是最靠近数组名称那个维度的大小,第三个参数是远离数组名称的维度的大小,以此类推。
在以上的例子中还有一个特别之处。就是声明了一个大一点范围的二维数组以后,如果对数组重新分配大小,并且这个新的大小是小于原来数组的,那么,大的二维数组与小的二维数组之间相差的部分将会被清除。即便是马上将数组大小调整回来甚至更大,都不能使这些数据回来。这个和Delphi中提供的TStringGrid控件不一样。对TStringGrid的行列数量进行调整后,原来的数据都不会丢失,除非使用TStringGrid.Rows.Clear;
另外,Delphi中还允许设置非矩阵型的动态数组。以下是一个例子
procedure TMainForm.Button1Click(Sender: TObject);
var
  arr:array of array of string;
begin
  setlength(arr,10);
  setlength(arr[2],5);
  arr[2,4]:='this is a test';
  showmessage(arr[2,4]);
  showmessage(arr[3,1]);
end;
这里面声明了一个二维字符串数组arr,首先对这个数组的第一维度(按照习惯,称之为“列”)进行设置,大小为10个。然后将这个数组的第三列(下标是2,但实际却是第三列)的行数进行单独设置,大小为5个。这样就构成了下图这样的矩阵
N N X N N N N N N N
N N X N N N N N N N
N N X N N N N N N N
N N X N N N N N N N
N N * N N N N N N N
(“X” 代表可用 “N”代表不可用 “*”代表arr[2,4]元素)
然后对arr[2,4]进行赋值“this is a test”。先要求显示arr[2,4]的值,OK,完全没有问题,但到了arr[3,1]的时候却报错,原因就是这个二维数组不是矩阵形式,除了第三列,其他地方都是不存在的,尽管已经声明了。


相关文档:

Delphi用WebBrowser编程 自动登录操作

Delphi用WebBrowser编程-自动登录操作
2009年08月18日 星期二 00:39
利用Delphi的Olevariant类型
--------------------------------------------------------------------------------
单个frames的输入
var
o : Olevariant;
begin
o := WebBrowser.OleObject.document.all.item('LoginUserID',0);  &nbs ......

[delphi组件] Webbrowser的使用

delphi中Webbrowser的使用
1.获得网页中变量值
     htm中<script> var currID=123</script>
     程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID
     值得说明的是,变量可以是javascript定义的,也可以是vbs ......

怎么用delphi向网页提交登陆信息

procedure TForm1.Button2Click(Sender: TObject);
var  
o : Olevariant;
begin  
  webbrowser1.Navigate('http://www.163.com');  
  delay(2000);
  o :=   WebBrowser1.OleObject.document.all.item('username',0);
  o.value := 'username';  
  o := W ......

delphi如何設實現如下界面

這個界面是用PB做的,delphi如何設實現呢,想用dbControlGrid來實現(好像也做不到),
問題是如何實現不同生產類別顯示出來的方式不一樣
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号