在我的应用程序中,我创建了TList类型列表,其中我将指针存储为1个字符串,每3个项目存储2个浮点(实际)值。
aList.Add(@sName); //string
aList.Add(@x1); //float
aList.Add(@x2); //float
然后,我想从列表中获取值,但我只能为字符串
执行此操作sStr := string(lList.items[i]);
但我无法获得浮点值,因为a := real(lList...)
会导致无效的类型转换错误。
那么我该如何获得浮动值呢? 当然我有一个问题,如果字符串转换实际上会给我字符串值。我不擅长指针,所以我不知道怎么做。
答案 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]);