在同一过程中,局部变量的声明顺序有关系???(100分)

  • 主题发起人 主题发起人 siking
  • 开始时间 开始时间
S

siking

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
i:Integer;
c:Pchar
//先声明i再声明c就没问题
begin
i:=Integer(c);
SendMessage(Edit1.Handle,WM_GETTEXT,Length(edit1.Text)+1,i);
s:=StrPas(c);
ShowMessage(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
c:pchar;
i:Integer
//先声明c再声明i,运行时出错
begin
i:=Integer(c);
SendMessage(Edit1.Handle,WM_GETTEXT,Length(edit1.Text)+1,i);
s:=StrPas(c);
ShowMessage(s);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
c:pchar;
i:Integer
//先声明c再声明i,运行时出错
begin
GetMem(c,Length(edit1.Text)+1);
i:=Integer(c);
SendMessage(Edit1.Handle,WM_GETTEXT,Length(edit1.Text)+1,i);
s:=StrPas(c);
ShowMessage(s);
end;
声明顺序没关系。是你自己没分配内存就使用指针。函数体内的局部变量没有初始化时其值是随机的。
 
楼上的正解,变量申明的顺序与你的出错没有任何关系,出了问题肯定是在代码上
 
对,初始很重要,这一点很容易被疏忽
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
583
import
I
I
回复
0
查看
599
import
I
I
回复
0
查看
663
import
I
后退
顶部