如何获得指针指向的浮点值?

时间:2010-04-05 14:09:01

标签: delphi pointers floating-point delphi-2009

在我的应用程序中,我创建了TList类型列表,其中我将指针存储为1个字符串,每3个项目存储2个浮点(实际)值。

aList.Add(@sName); //string
aList.Add(@x1); //float
aList.Add(@x2); //float

然后,我想从列表中获取值,但我只能为字符串

执行此操作
sStr := string(lList.items[i]);

但我无法获得浮点值,因为a := real(lList...)会导致无效的类型转换错误。

那么我该如何获得浮动值呢? 当然我有一个问题,如果字符串转换实际上会给我字符串值。我不擅长指针,所以我不知道怎么做。

2 个答案:

答案 0 :(得分:5)

我建议您创建一条记录:

TMyRecord = record
  sName: String
  x1: Double;
  x2: Double;
end;

然后创建该类型的通用列表:

var
  MyRecordList: TList<MyRecord>;

从那里,您应该能够轻松访问列表中的数据。

尝试将数据存储在TList中,并将特定数据类型存储在特定位置,这样就更麻烦了。

答案 1 :(得分:2)

我同意尼克。但无论如何,你可以做你正在做的事情。

如果'a'属于'Real'类型,

a := Real(aList.Items[i]^);

或者如果'a'是指向Real(^ Real)的指针,

a := aList.Items[i];

对于字符串,存储第一个元素的地址(当然你需要测试空字符串),

s := 'Hello World';
aList.Add(@S[1]);
[...]
s1 := string(aList[i]);

或使用'PChar'并存储指向的地址,

s := 'Hello World';
aList.Add(@s^);
[...]
s1 := PChar(aList[i]);