type
    TMyBuffer = record
        name :array[0..9] of char;
        sex  :char;
        email:array[0..30] of char;
end;我怎样才能将一个定义为:
buf :Array[0..11] of char;数据转换为TMyBuffer类型的。
比如:
buf:='Jhon [email protected]'那么
var
   mybuf :TMyBuffer;
begin
...
mybuf.name --> 'Jhon Kitty'
mybuf.sex --> 'F'
mybuf.email-->'[email protected]'
...
end;

解决方案 »

  1.   

    TMyBuffer中可能有整数成员,如:
    回复贴子: 
     yopeng(鹏鹏) 回复于2001-11-27 14:31:54   
    ??????????  
     Happyledian(伍志勇) 回复于2001-11-27 14:34:30   
    type
        TMyBuffer = record
            name :array[0..9] of char;
            sex  :char;
            age  :integer;
            email:array[0..30] of char;
    end; 
    能否用TStream来实现?
      

  2.   

    with TMemoryStream do try
      Write(MyBuffer, SizeOf(MyBuffer));
    finally
      Free;
    end;
      

  3.   

    type
      TMyBuffer = record
        rName: array[0..9] of Char;
        rSex: Char;
        rEMail: array[0..30] of Char;
      end;procedure TForm1.Button1Click(Sender: TObject);
    var
      MyBuffer: TMyBuffer;
      Buf: array[0..SizeOf(TMyBuffer)] of Char;
    begin
      Buf := 'Jhon [email protected]';
      with TMemoryStream.Create do try
        Write(Buf, SizeOf(TMyBuffer));
        Position := 0;
        Read(MyBuffer, SizeOf(TMyBuffer));
      finally
        Free;
      end;
      ShowMessage(Format(
    'MyBuffer.rName:%s'#13#10 +
    'MyBuffer.rSex:%s'#13#10 +
    'MyBuffer.rEMail:%s'#13#10,
        [MyBuffer.rName, MyBuffer.rSex, MyBuffer.rEMail]));
    end;
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}type
      TMyBuffer = record
        rName: array[0..9] of Char;
        rSex: Char;
        rAge: Integer;
        rEMail: array[0..30] of Char;
      end;procedure TForm1.Button1Click(Sender: TObject);
    var
      MyBuffer: TMyBuffer;
      Buf: array[0..SizeOf(TMyBuffer)] of Char;
    begin
      Buf := 'Jhon [email protected]';
      with TMemoryStream.Create do try
        Write(Buf, SizeOf(TMyBuffer));
        Position := 0;
        Read(MyBuffer, SizeOf(TMyBuffer));
      finally
        Free;
      end;
      ShowMessage(Format(
    'MyBuffer.rName:%s'#13#10 +
    'MyBuffer.rSex:%s'#13#10 +
    'MyBuffer.rAge:%d'#13#10+
    'MyBuffer.rEMail:%s'#13#10,
        [MyBuffer.rName, MyBuffer.rSex, MyBuffer.rAge,MyBuffer.rEMail]));
    end;end.
    行不行?
      

  5.   

    不行呀Integer的内存格式不一样
      

  6.   

    type
      TMyBuffer = packed record
        rName: array[0..9] of Char;
        rSex: Char;
        rAge: array[0..2] of Char;
        rEMail: array[0..30] of Char;
      end;procedure TForm1.Button1Click(Sender: TObject);
    var
      MyBuffer: TMyBuffer;
      Buf: array[0..SizeOf(TMyBuffer)] of Char;
    begin
      Buf := 'Jhon [email protected]';
      with TMemoryStream.Create do try
        Write(Buf, SizeOf(TMyBuffer));
        Position := 0;
        Read(MyBuffer, SizeOf(TMyBuffer));
      finally
        Free;
      end;
      ShowMessage(Format(
    'MyBuffer.rName:%s'#13#10 +
    'MyBuffer.rSex:%s'#13#10 +
    'MyBuffer.rAge:%s'#13#10 +
    'MyBuffer.rEMail:%s'#13#10,
        [string(MyBuffer.rName),
         string(MyBuffer.rSex),
         string(MyBuffer.rAge),
         string(MyBuffer.rEMail)]));
    end;