向指针变量的内容赋值。。。谢谢(100分)

  • 主题发起人 主题发起人 lileisea
  • 开始时间 开始时间
L

lileisea

Unregistered / Unconfirmed
GUEST, unregistred user!
我实在是找不到问题怎么说好。自己也搞不定,我直接写代码了
Var
test1: TList;
a,b: Integer;
c,d: String;
procedure TForm1.btn1Click(Sender: TObject);
begin

if not Assigned(test1) then
test1 := Tlist.Create;
test1.Clear;
test1.Add(@a);
test1.Add(@b);
test1.Add(@c);
test1.Add(@d);
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
Integer(test1[0]^) := 123;
String(test[3]^) := '132';
end;
这样写可以把值写进去,问题是我怎么知道test1[0] 是INTEGER类型,test[3] 是STRING类型呢, 我是想在程序自己判断他的类型然后把对应的值给进去。
比如 if test1[0] 等整型指针
则:Integer(test1[0]^) := 123;
或用其他的方法也行。只要能自己去判断。各位大虾帮忙啊!
 
用一个结构吧
TDataType = (dtInt, dtString, dtDouble, ....);

TData = record
DataType: TDataType;
Data: Pointer;
end;

Var
test1: TList;
a,b,c,d: TData;
procedure TForm1.btn1Click(Sender: TObject);
begin
if not Assigned(test1) then
test1 := Tlist.Create;
test1.Clear;
test1.Add(@a);
test1.Add(@b);
test1.Add(@c);
test1.Add(@d);
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
case test1[0]^.DateType of
dtInt: Integer(test1[0]^.Data^) := 123;
end;

....
end;
 
这样的写发确实可达到目的。我也是这样写的,如果能不要IF就好了,
因为,类型里面有24种确实这样写有带太什么了点。。。
不过谢谢你。
 
接受答案
 
看了你的代码发现我们很像
用QQ交个朋友吧,告诉我你的号
 

Similar threads

I
回复
0
查看
709
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
421
import
I
后退
顶部