レコード型→文字列

解決


  2006-06-28 22:51:31  No: 22318

固定長ファイルの入出力プログラムを作成しています。
入力時、レコード型を定義し、moveして固定長の各フィールドの値を取得しています。
出力時、レコード型のフィールドをバッファ文字列にプラスで結合して代入しておりますが、
せっかくのレコード型を一括でバッファ文字列に代入して出力する方法はないでしょうか。
また、固定長テキストファイルを出力する場合の王道(?)とはどのような方法なのでしょうか。

・読込処理
var
  INPRec: record
    INP1: array[0..1] of Char;
    INP2: array[0..3] of Char;
  end;
  buf:String; //読込バッファ
begin
  //読込−−−−
  Move(buf[1],INPRec,SizeOf(INPRec));
  ShowMessage(INPRec.TEST1 + '/' + INPRec.TEST2);
end;

・書込処理
var
  OUTRec: record
    OUT1: String[2];
    OUT2: String[4];
  end;
  buf:String; //読込バッファ
begin
  OUTRec.OUT1 := '11';
  OUTRec.OUT2 := '2222';
  Buf := OUTRec.OUT1 + OUTRec.OUT2;
  //出力−−−−
end;


  2006-06-28 23:16:10  No: 22319

char定義で統一すれば、一括代入できることは、わかりました。

・書込処理
var
  OUTRec: record
   OUT1: array[0..1] of Char;
   OUT2: array[0..3] of Char;
  end;
  buf: Array[0..6] of Char; //読込バッファ
  Str: String;
begin
   Str := '11';
   Move (Str[1],TESTRec.TEST1,SizeOf(TESTRec.TEST1));
   Str := '2222';
   Move(UsStr[1],TESTRec.TEST2,SizeOf(TESTRec.TEST2));
   Move(TESTRec,UsChr,SizeOf(UsChr));
  //出力−−−−
end;


  2006-06-28 23:19:16  No: 22320

訂正

char定義で統一すれば、一括代入できることは、わかりました。

・書込処理
var
  OUTRec: record
   OUT1: array[0..1] of Char;
   OUT2: array[0..3] of Char;
  end;
  buf: Array[0..6] of Char; //読込バッファ
  Str: String;
begin
   Str := '11';
   Move(Str[1],TESTRec.OUT1,SizeOf(TESTRec.OUT1));
   Str := '2222';
   Move(Str[1],TESTRec.OUT2,SizeOf(TESTRec.OUT2));
   Move(TESTRec,UsBuf,SizeOf(UsBuf));
  //出力−−−−
end;


ん?  2006-06-29 00:50:39  No: 22321

> var
>   OUTRec: record
>    OUT1: array[0..1] of Char;
>    OUT2: array[0..3] of Char;
>   end;

こんなんじゃないの?
type
  TOUTRec= packed record
   OUT1: array[0..1] of Char;
   OUT2: array[0..3] of Char;
  end;
var
  OUTRec: TOUTRec;
begin
  Move(OUTRec, UsBuf, SizeOf(TOUTRec));
end;


  2006-06-29 02:19:08  No: 22322

本末転倒してますね...
レコード型を文字列に代入するには、

var UsBuf: String;

Move(OUTRec, UsBuf[1], SizeOf(TOUTRec));

でした.....


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加