我怎样才能获得记录字段值

时间:2011-02-19 09:35:44

标签: delphi delphi-2007

我怎样才能获得记录字段值?例如,

抱歉,我的描述不清楚,我有这样的大记录

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,你有其他方法吗?

块引用

3 个答案:

答案 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;

这是你想要的吗?