Type
TRps=packed record
rpsNa:String;
rpsId:String;
end;
PRps=^TRps; TAryRps=Array of TRps;//下面声明一个全局的结构体数组var
Ar:TAryRps;procdure Add(na,id:String);
begin
setlength(ar,length(ar)+1);
ar[length(ar)+1].rpsNa:=na;
ar[length(ar)+1].rpsID:=id;
end;//取数据看看
procedure.....
var
i:integer;
begin
for i:=Low(ar) to High(ar) do
Memo1.Lines.add(ar[i].rpsNa+'>>>'+ar[i].rpsid);
end;结果却只有>>>这个符号输出,无论怎么ADD,都没有将值加进去,是个空值,解释一下为什么?
再有一个是不是声明的结构体共用了一个内存块,也就是我第二次ADD的值会把第一次的值复盖,如果我不想复盖,用结构体数组如何实现,不要跟我说用什么TLIST,之类,哪个简单。
TRps=packed record
rpsNa:String;
rpsId:String;
end;
PRps=^TRps; TAryRps=Array of TRps;//下面声明一个全局的结构体数组var
Ar:TAryRps;procdure Add(na,id:String);
begin
setlength(ar,length(ar)+1);
ar[length(ar)+1].rpsNa:=na;
ar[length(ar)+1].rpsID:=id;
end;//取数据看看
procedure.....
var
i:integer;
begin
for i:=Low(ar) to High(ar) do
Memo1.Lines.add(ar[i].rpsNa+'>>>'+ar[i].rpsid);
end;结果却只有>>>这个符号输出,无论怎么ADD,都没有将值加进去,是个空值,解释一下为什么?
再有一个是不是声明的结构体共用了一个内存块,也就是我第二次ADD的值会把第一次的值复盖,如果我不想复盖,用结构体数组如何实现,不要跟我说用什么TLIST,之类,哪个简单。
解决方案 »
- 发个贴赚分
- 郁闷,这个汉字限制的功能怎么就实现得这么艰难呢?
- 我是新手几个简单的问题[Error] Unit1.pas(24): Unsatisfied forward or external declaration: 'TForm1.Button2Click'
- 我是新来得!!!问一下名字旁边的三角和星星是靠什么升的?怎么升的?
- 找工真的那么难吗?
- 为什么每次打开database desktop时会有显示directory is busy
- 注册的实现方式
- 哎!又是dbgrid!
- Kingron主页更新中.........
- 怎么用Delphi做一个既能在 Win9x又能在Unix下运行的软件?
- wsdl 不能装载dll
- 我也买入笔记本了!兴奋ing
ar[High(ar)].rpsNa:=na;
ar[High(ar)].rpsID:=id;
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
setlength(a,length(a)+1);
a[length(A)-1] := INttostr(high(A));
showMessage(A[high(A)]);
end;
setlength(ar,length(ar)+1); // 当1+1成2时
ar[length(ar)+1].rpsNa:=na; // 这里就成了 3 超出了
ar[length(ar)+1].rpsID:=id; 除上面写的,还可以下面这样写,你就容易明白了procdure Add(na,id:String);
var
i: integer;
begin
i:= length(ar);
setlength(ar,i+1);
ar[i].rpsNa:=na;
ar[i].rpsID:=id;
end;
begin
setlength(ar,length(ar)+1);
ar[length(ar)-1].rpsNa:=na; //+1-->-1
ar[length(ar)-1].rpsID:=id;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;type TRps=packed record
rpsNa:String;
rpsId:String;
end;
PRps=^TRps; TAryRps=Array of TRps; TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1; Ar:TAryRps;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
L: integer;
begin
L := length(ar);
setlength(ar,L+1);
ar[L].rpsNa:= IntToStr(L) + 'na';
ar[L].rpsID:= IntToStr(L) + 'id';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
memo1.Lines.Clear;
for i:=Low(ar) to High(ar) do
Memo1.Lines.add(ar[i].rpsNa+'>>>'+ar[i].rpsid);
end;end.