我怎样才能获得记录字段值?例如,
抱歉,我的描述不清楚,我有这样的大记录type
myRec=record
a:byte;
c:single;
//// a lot of fields
end;
var
nowmyrec:myrec;
tmystr:TMemoryStream;
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
tmystr:tmemerystream.create;
tmystr.LoadFromFile(ExtractFilePath(Application.exename)+'1.data');
tmstr.Position:=0;
tmstr.readbuffer(nowmyRec,sizeof(myRec));
end;
如果nowmyRec的字段是1000,我怎么能得到字段值的dll到1000 form.edits,请不要使用记录点,我想使用记录的rtti,但delphi2007不支持。如果我不使用delphi2010,你有其他方法吗?
块引用
答案 0 :(得分:2)
您可以像这样声明记录
type
TmyRec = record
a: byte;
b: array [0 .. 35] of widechar;
c: single;
end;
并像这样使用
var
myRec1, MyRec2: TmyRec;
ms: TMemoryStream;
x: single;
begin
ms := TMemoryStream.Create;
try
// Create a record
myRec1.a :=1;
myRec1.c :=1.50;
// Save record to TMemoryStream
ms.WriteBuffer(myRec1, SizeOf(TmyRec));
// Read one record from TMemoryStream
ms.Position := 0;
ms.ReadBuffer(myRec2, SizeOf(TMyRec));
// Get a value
x := MyRec2.c;
ShowMessage(FloatToStr(x));
finally
ms.Free;
end;
end;
答案 1 :(得分:2)
您的问题是“我如何使用RTTI访问Delphi 2007中的记录字段?”答案是你不能,你需要Delphi 2010。
答案 2 :(得分:1)
您需要首先声明记录变量,如Rec1: myRec;
var
Rec1: myRec;
myValue: Single;
begin
myValue := Rec1.c
end;
这是你想要的吗?