memoの内容をStringgridにレコード長指定してコピーするには?

解決


ド初心者  2010-07-28 01:37:30  No: 38873

プログラミングの基礎を知らない初心者です。

フォームには
memoとstringgridを用意しました。
memoに表示された文字列(数十行の改行)には固定長のデータなのですが、
このデータをstringgridに文字数を揃えてセル分けしたいのです。

例文)AAAAAA1111120100727bbbbb
上記を、AAAAAA  11111  20100727  bbbbb  と表示。
レイアウトは  6文字、5文字、8文字(日付)、5文字で区切りたい。

文字数の指定だと例えば  
varに
A:string[5];
なんて標記になるのか?
とも考えましたが、これから後が思いつかないのです。
で?Aはどうするの?と・・・

サンプルでも、参考URLでも構いません。
どこのWEBでも
「文字数を調べる」と「memoからstringgridへコピーする」
は有っても、
「memoからstringgridへ文字数をレイアウトどおりに区切って表示する」
というサンプルが無いのです。
少しでもお教え戴ければ、自分で理解し、解釈します!

文章、伝わりにくいかと思いますが、
どうぞ宜しくご教示くださいますよう、お願いいたします。


ぽむぽむ  2010-07-28 01:48:26  No: 38874

簡単に書くとこんなことなのかな?

for i := 0 to Memo1.Lines.Count -1 
  StringGrid1.Cell[1, i+1] :=  Copy(Memo1.Lines[i], 1, 6);
  StringGrid1.Cell[2, i+1] :=  Copy(Memo1.Lines[i], 7, 5);
  StringGrid1.Cell[3, i+1] :=  Copy(Memo1.Lines[i], 12, 8);
  StringGrid1.Cell[4, i+1] :=  Copy(Memo1.Lines[i], 20, 5);
end;


KHE00221  2010-07-28 01:52:01  No: 38875

こんな感じ?

procedure TForm1.Button1Click(Sender: TObject);
var
    I,J: Integer;
    S: String;
begin
    for I:=0 to Memo1.Lines.Count -1 do
    begin
      S := Memo1.Lines[I];
      StringGrid1.Cells[1,I+1] := Copy(S, 1,6);
      StringGrid1.Cells[2,I+1] := Copy(S, 7,5);
      StringGrid1.Cells[3,I+1] := Copy(S,12,8);
      StringGrid1.Cells[4,I+1] := Copy(S,20,5);
    end;
end;


KHE00221  2010-07-28 01:52:42  No: 38876

作ってる間に書き込まれてた・・・・


ド初心者  2010-07-28 02:28:11  No: 38877

ぽむぽむさま、KHE00221さま、早々に有難う御座います!

ちょっと、自宅で頑張ってきます!
理解もしてきます!
結果と解決チェックはまたご報告させて頂きます。


ド初心者  2010-08-05 19:54:29  No: 38878

解決チェックが遅くなり、すみません。
お二人のお陰で
思ったとおりの結果を得ることが出来ました。
また、コードも理解出来ました。
(なんとなくですが・・・これからもっと勉強します!^^;)

本当に有難う御座いました。


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

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






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