var
  writedata   : array[1..8] of byte;
  dlmc:string;
  i:integer;
begin
    dlmc:='system';
    for i:=1 to length(dlmc) do
    begin
      writedata[i]:=ord(dlmc[i]);
    end;
    while i<9 do
    begin
      writedata[i]:= 32;
      inc(i);
    end;
end;现在要反过来,也就是说我现在知道 writedata数组值(即可为述值),如何返回值为‘system'呢?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      WriteData: array[1..8] of byte;
      dlmc: string;
    begin
      dlmc := 'system';
    //存
      FillChar(WriteData, SizeOf(WriteData), #32);
      Move(dlmc[1], WriteData[1], Length(dlmc));//取
      Caption := Copy(PChar(@WriteData[1]), 1, 8); //..TrimRight();..
    end;
      

  2.   

    你上面的程序可能有问题,在循环外部i是没有意义的,可以改成var
      writedata   : array[1..8] of byte;
      dlmc:string;
      i:integer;
    begin
        dlmc:='system';
        dlmc:=dlmc+StringOfChar(' ', 8-Length(dlmc));
        for i:=1 to length(dlmc) do
          writedata[i]:=ord(dlmc[i]);
    end;反过来可以这么做:
    for i:=1 to 8 do
      dlmc[i]:=char(writedata[i]);
    dlmc:=TrimRight(dlmc);