固定長の改行について教えてください

解決


yu  2010-10-30 01:09:21  No: 39445

クライアントデータセットの中身を固定長で書き出を実行しているのですが、改行コードが自動的にLFで入ってしまっているようです  改行コードをCRLFに変更したいのですがどうすればよいでしょうか?
var
 f:textfile;
str: string;
pas:string;
begin
 pas:='c:\csv\'+'データ'+'.txt';

    DeleteFile(pas);

 AssignFile(f,pas);
rewrite(f);

 while not cds2.eof do
    begin
  str:=format('%1d%-4s%-15s%3s%-15s%-4s%1d%-7s%-30s%-10s%1d%20s%1d%8s',
      [2,
   trim(cds2BANK_CODE2.asstring),

   trim(cds2GINKOU2.asstring),
   trim(siten),
   trim(cds2SITEN2.asstring),
   cds2BRA.asstring,
    syu2,
   kouza,
   chr,
     kin2,
      cds2SINKI_F.asinteger,
      kocode,
      0,
      cds2BRA.asstring,
      '        '
     ]);
      Writeln(f,str);

   
     cds2.next;
    end;

    closeFile(F);

   //---------------------

end;


ほんとに?  2010-10-30 02:38:41  No: 39446

>改行コードが自動的にLFで入ってしまっているようです
Writeln は、行マーカーの終点として CRLFを書き込むはずだけど?


yu  2010-10-30 02:57:08  No: 39447

実は、私自身改行コードがどのように入っているかわからないのです。
テキストで開いてもわからないです。改行コードが、どのように入っているか
確認の方法はありますか?


tor  2010-10-30 03:21:23  No: 39448

> 実は、私自身改行コードがどのように入っているかわからないのです。
ではどうして「LFで入っている」と判断したのでしょうか……
改行コード判定の機能があるエディタ(秀丸とか)を使うか、バイナリエディタに放り込んでみれば確認はできると思いますけれど。

もし本当に行末がLFになっているのなら、SetLineBreakStyleやDefaultTextLineBreakStyleで変更できるようです。
(ヘルプでWriteLnをひいて、そこから「参照」をたどっていけば色々と見つかります)

ついでですが、Rewriteはファイルがすでにあれば削除して新しいファイルを作成するので、あらかじめDeleteFileしておく必要はないですよ。


yu  2010-10-30 06:02:02  No: 39449

皆様有難うございました。  無事解決いたしました。
改行コードは正しかったのですが、固定長が、違っていたようです。


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

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






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