テキストを改行するには?


NORI  2009-09-18 00:18:46  No: 35710

取得したデータをWORD型で
テキスト形式にして取り出したのですが、
改行の仕方がわからず困っております。

312個の区切りで横に改行し、エクセル等のソフトで
解析したいのですが、どうしたらよろしいですか?

またこの場合、カンマを挿入しCSVで開く方法と
データそのものを改行する方法が思いつくのですが、
どちらが簡単にできますか?

var
   data : WORD;

begin
  //data取得
    ・・・・・
   Memo1.Lines.Add(Format('%5d', [data]));
end


HOta  2009-09-18 05:07:10  No: 35711

Memo1.Lines.textで改行は入っていないでしょうか?
カンマ区切りは、Memo1.Lines.Commmatextで取得できます。


NORI  2009-09-29 20:21:00  No: 35712

ご返答ありがとうございます。

勉強して試みたのですが、
Memo1.Lines.Addとしないと表示させることもできません。

dataは16bitの画像バイナリデータ(312×240)
を読み込んだものです。
読み込みの段階で、312個ずつ読み込む方法に
変更しなければなりませんか?

var
   data : WORD;
   cnt: WORD;
   i,j: WORD;
   cbuff: WORD;
begin
    i :=0 ;j :=0;
  with TFileStream.Create('filename.dat', fmOpenRead) do try
   // 2Byte単位で読み込み
   // Position := 0;

   // textへの書き込み
    Memo1.Font.Name := 'MS ゴシック';

   while True do begin
    cnt := Read(data, Sizeof(data));
    if cnt < Sizeof(data) then break;

    //得られたデータを表示
    Memo1.Lines.Add(Format('%5d', [data]));

    if i=312 then
     begin
      Inc(j);
      i := 0;
   end;

   inc(i) ;

     end;

    finally
   Free;
    end;


monaa  2009-09-29 20:37:46  No: 35713

エクセルのセルの横区切りはタブですんで
str := '123' + Char(VK_TAB) + '456';
Memo1は張り付けただけではタブ入力できないのでプロパティを変更してください。
wanttabsだっけ?そんな感じの何かです。


manbon  2009-10-01 17:57:24  No: 35714

今ひとつ良く分かってないのですが、

//得られたデータを表示
Memo1.Lines.Add(Format('%5d', [data]) + ',');

とか、

//得られたデータを表示
Memo1.Lines.Add(Format('%5d', [data]));
Memo1.Lines.Add('');

ではだめでしょうか?


ぽむぽむ  2009-10-01 18:34:14  No: 35715

このようなことでいいのだろうか?
手抜きなので、動作するとこまでしか見ていません。

var
  data: array[0..311] of WORD;
  fs: TFileStream;
  cnt, i,j: Integer;
  lineText: String;
begin
  //FileStream
  fs := TFileStream.Create('Efilename.dat', fmOpenRead);
  Memo1.Lines.BeginUpdate;
  try
    // 2Byte単位で読み込み
    fs.Position := 0;
    //クリア
    Memo1.Lines.Clear;
    //読み込み
    cnt := fs.Read(data, Sizeof(data));
    while cnt > 0 do begin
      lineText := '';
      //読み取ったデータ個数
      j := Trunc(cnt / SizeOf(WORD));
      for i := 0 to j - 1 do begin
  //lineText := lineText + Format('%5d', [data[i]]) + ',';
  lineText := lineText + IntToHex(data[i], 4) + ',';
      end;
      //得られたデータを表示
      Memo1.Lines.Add(lineText);
      //次読み込み
      cnt := fs.Read(data, Sizeof(data));
    end;
  finally
    fs.Free;
    Memo1.Lines.EndUpdate;
  end;
end;

普通に、バイナリエディタを使うというのは、選択肢にないのだろうか?


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

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






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