Record保存数据纪录来自非计算机系统
TxData=Record
buff:array[0..4] of char;   //读来的数据保存
dType:String[10];           //数据的类型......end;
通过指令获取到buff,然后将一系列这样的数据存放到TList里面。
buff里面的内容可能是整数,浮点数,布尔类型,字符的一种,这些数据还需要能显示到界面上是不是在TxData增加
intVal:integer;
floatVal:Single;
boolVal:Boolean;
displayStr:String[20];
这样感觉上Record结构上冗长了。工作方式:读取系列数据到TxData数组的buff,buff翻译成dType制定的数据类型的数据,文本框随需要显示数据
有什么好的实现方法吗?

解决方案 »

  1.   

    type
      TxData = record
        dType: string[10];
        case Integer of
          1:(A: integer);
          2:(B: boolean);
          3:(C: char);
          4:(D: double);
      end;
      

  2.   

    type
      TxData = record
        dType: string[10];
        case Tag: Integer of
          1:(A: integer);
          2:(B: boolean);
          3:(C: char);
          4:(D: double);
      end;procedure TForm1.Button1Click(Sender: TObject);
    var
      X, Y: TxData;
      P: Pointer;
    begin
      X.dType := 'X';
      X.Tag := 1;
      X.A := 55;  Y.dType := 'Y';
      Y.Tag := 3;
      Y.C := 'k';  {以下是看一下记录变量的实际内存结构}
      P := @X.dType[1];
      integer(P) := integer(P)+15;
      Showmessage(InttoStr(PInteger(P)^)); {5}  P := @Y.dType[1];
      integer(P) := integer(P)+15;{与X同样的偏移量}
      Showmessage(PChar(P)^); {k}
    end;