在DELPHI环境下把多种记录变量按字节流读入同一段开辟的内存中,记录里的字段包
含的数据类型有:Byte,char,Word,Integr,string等。可以不用Tmemorystream,
而是自己象C里面那样定义一个8位无符号指针,指向一段内存。好象DELPHI里面类型转换
没有C方便,如CHAR 和BYTE同时8位无符号的类型,之间转换就很困难。哪位大侠就这方面
的使用谈谈经验。

解决方案 »

  1.   

    刚学到的,呵呵
    procedure TForm1.Button1Click(Sender: TObject);
    var
      data: array[1..3] of byte;
    begin
      data[1]:=97;
      data[2]:=98;
      data[3]:=99;
      ShowMessage(copy(PChar(@Data[1]),1,3));
    end;
      

  2.   

    你可以用指针来实现。
    先写几个函数
    如读Byte,Word,string;
    读byte:
    function GetbyteFromArr(var pstr:pchar):byte;
    var
        ch1:char;
    begin
         ch1 :=char(pstr^);
         inc(pstr);
         result:=byte(ch1);
    end;
    读word
    function GetWordFromarr(var pstr:pchar):word;
    var Highbyte,lowbyte:byte;
    begin
    highbyte:=GetbyteFromArr(var pstr:pchar);
    lowbyte:=GetbyteFromarr(var pstr:pchar);
    result:=(word(highbyte) shr 8 ) or word(lowbyte);
    end;读string;
    function GetstrFromarr(var pstr:pchar):string;
    var  strlen:word;
    begin
         strlen := Getwordfromarr(pstr);
         result := pstr;
         Inc(pstr, strlen);
    end;