我使用指针来传递数组时碰到问题了:
本想按BUTTON1时,LABEL1显示‘tttt...’可是达不到。谢谢。type
ppp = ^char; //没有直接用PCHAR
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
array2: array [0..27] of char;
begin
getp(@array2);
label1.Caption := '';
for i := 0 to 27 do
label1.Caption := label1.Caption + array2;
end;procedure TForm1.getp(p1: ppp);
var
i: integer;
mybytearray: array [0..27] of char;
begin
for i := 0 to 27 do
mybytearray := 't';
p1 := @mybytearray;
end;
本想按BUTTON1时,LABEL1显示‘tttt...’可是达不到。谢谢。type
ppp = ^char; //没有直接用PCHAR
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
array2: array [0..27] of char;
begin
getp(@array2);
label1.Caption := '';
for i := 0 to 27 do
label1.Caption := label1.Caption + array2;
end;procedure TForm1.getp(p1: ppp);
var
i: integer;
mybytearray: array [0..27] of char;
begin
for i := 0 to 27 do
mybytearray := 't';
p1 := @mybytearray;
end;
----------------------------------------------------
type
ppp = ^char; //没有直接用PCHAR
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure getp(var p1:ppp);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
array2: array [0..27] of char;
p:ppp;
begin
getp(p);
for i:=0 to 27 do
begin
array2[i]:=p^;
inc(p);
end;
label1.Caption := '';
for i := 0 to 27 do
label1.Caption := label1.Caption +array2[i];
end;procedure TForm1.getp(var p1:ppp);
var
i: integer;
mybytearray: array [0..27] of char;
begin
for i := 0 to 27 do
mybytearray[i] := chr(integer('a')+i);
p1 := @mybytearray;
end;
mybytearray := 't';
// p1 := @mybytearray;////这里不对,mybytearray是函数的局部变量,函数返回,变量会释放.而这里的赋值是把指针p1指向了mybytearray。改成下面这样把变量mybytearray的内容拷贝到指针p1指向的空间里,就可以了。
copymemory(p1,@mybytearray,27);
end;