指针问题,谢谢 在线等待。。。 (50分)

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

celkelly

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button2Click(Sender: TObject);
var
ExcelBook:variant;
SN,MODEL,VNAME:string;
PI:PSTRING;
I,J:INTEGER;
begin
ExcelBook:=CreateOleobject('Excel.application');
SN :='I00001';
MODEL:='SQB';
if opendialog1.Execute then
ExcelBook.workbooks.open(opendialog1.FileName);
ExcelBook.visible:=true;
for i:=1 to 10 do
for j:=1 to 10 do
begin
vfield:=ExcelBook.worksheets[1].cells[i,j];
if copy(vfield,1,1)='&' then
begin
vname:=copy(vfield,2,length(vfield)-1);
PI:=@VNAME;
EDIT1.Text:=PI^;
END;
end;

我想EDIT1.TEXT结果是 I00001 OR SQB
而现在结果是 SN OR MODEL

我还怎么指一下??
 
VNAME:='SN';
应该是
VNAME:=SN;

 
是啊,可你看我更改后的帖子....

vname是动态来的
 
指针不是这么用的。
对于 Delphi 来讲,变量名只是在编译的时候有效。
你无法在运行时指定一个字符串类型的变量名来访问它,指针也不行。
不过你可以这样做:

VNAME:='SN';
换成
VNAME:=SN;

就 OK 了,不过你也没必要用指针了。

如果你想实现在运行时根据一个变量名来访问它的值,可以这样写

procedure TForm1.Button2Click(Sender: TObject);
var
L : TStringList;
PI:PSTRING;
VNAME : string;
begin
L := TStringList.Create;
L.Values['SN'] :='I00001';
L.Values['MODEL']:='SQB';
VNAME:='SN';
EDIT1.Text:=L.Values[VNAME]; // VNAME 的值可以在运行时任意指定
L.Free;

end;

 
后退
顶部