构造过程(100分)

  • 主题发起人 主题发起人 crpp0602
  • 开始时间 开始时间
C

crpp0602

Unregistered / Unconfirmed
GUEST, unregistred user!
PROCEDURE SHOW(VAR ST:Array of string);
VAR
S:Array of string;
BEGIN
s[1]:=copy(st[1],1,3);
为什么会出错,说是S,ST没有初始化,不知道是什么意思
或者是CHAR 与 STRING 不匹配
有哪个高手给个答案
 
应该是提示吧?
PROCEDURE SHOW(VAR ST:Array of string);
为什么要var?好像不需要啊!
 
不用VAR 下面的的程序就不能用它返回的值了,
 
你在程序中定义的动态数组,动态数组需要分配空间,你可以试试下面这段代码:
procedure TForm1.Button1Click(Sender: TObject);
var s:array of string;
begin
SetLength(s,1);
s[0]:='10000';
SetLength(s,2);
s[1]:='11000';
showms(s);
end;

procedure TForm1.showms(ST:array of string);
var s:array of string;
begin
SetLength(s,1);
s[0]:=copy(st[0],1,3);
ShowMessage(s[0]);
SetLength(s,2);
s[1]:=copy(st[1],1,3);
ShowMessage(s[1]);
end;
 
你写的代码有问题。
还没初始化就调用。仔细想想吧
 
先用Setlength(S,n)来初始化动态数组就可以拉!
 
在它之前加上一句
setlength(S,2),就不会出错啦!2可以改成大于2的其它整数啦!
还有ST在其它地方,也要这样做啦!
 
我要的二维数组,如S[1,2],ST[2,4] 等,请问如果初始化二维数组
procedure TForm1.showms(ST:array of string);
var s:array of string;
begin
SetLength(s,5);
s[0,1]:=copy(st[0,1],1,3);成 //二维数组
ShowMessage(s[0,1]);
SetLength(s,2);
s[1,1]:=copy(st[1,1],1,3); //二维数组
ShowMessage(s[1,1]);
end;
 
type
TMyString=array of string;

procedure TForm1.showms(ST:array of TMyString);
var
s:array of TMyString ;
i,j:Integer;
begin
SetLength(s,6);
for i:=0 to 5 do
begin
SetLength(s,5);
end;
for i:=0 to 5 do
begin
for j:=0 to 4 do begin
s[i,j]:=Copy(st[i,j],4,2);
ShowMessage(s[i,j]);
end;
end;
end;
 
PROCEDURE SHOW(VAR ST:Array of string);
VAR
S:string;//试试
BEGIN
s[1]:=copy(st[1],1,3);
 
接受答案了.
 
后退
顶部