Stringgridへの浮動少数の表示方法?を教えてください。

解決


超初心者  2010-08-18 17:49:54  No: 39000  IP: 192.*.*.*

お世話になります。
どうしても分からないので教えてください。

ズラッと一行の、いわばノベタンのデータを固定のレコード長で区切って、
Stringgridに表示させるようにしています。
《下記》
    StringGrid1.cells[1,l] := Copy(Memo2.Lines[l],1,5);
    StringGrid1.cells[2,l] := Copy(Memo2.Lines[l],6,20);
    StringGrid1.Cells[3,l] := Copy(Memo2.Lines[l],26,11);

例えば上記の3行目の11桁が、9桁が整数で2桁が小数点以下2位の場合、
どのようなコードになるのでしょうか?

素人で本当にすみません。
どうぞ宜しくお願いいたします。

編集 削除
なな  2010-08-18 20:14:02  No: 39001  IP: 192.*.*.*

何を言ってるのかわからないけど、ただの文字列操作だから、
小数点だのなんだのっていう概念はないよ。

なにがしたいの?

編集 削除
igy  2010-08-18 20:42:36  No: 39002  IP: 192.*.*.*

>例えば上記の3行目の11桁が、9桁が整数で2桁が小数点以下2位の場合、
>どのようなコードになるのでしょうか?

StringGrid1.Cells[3,l]に小数点を付けて格納したいのですか?
それとも、11桁のまま格納して、StringGridに表示するときのみ、小数点を付けたいのですか?

編集 削除
Quest  2010-08-19 01:20:02  No: 39003  IP: 192.*.*.*

頭に0があるのかスペースがあるのか等、何も考えずにベタにやるなら
var
  s: string;
begin
  ・
  ・
  s := Copy(Memo2.Lines[l],26,11);
  Insert('.', s, 10);
  StringGrid1.Cells[3,l] := s;
  ・
  ・
end;

編集 削除
TS  2010-08-19 09:01:09  No: 39004  IP: 192.*.*.*

>例えば上記の3行目の11桁が、9桁が整数で2桁が小数点以下2位の場合、
カンマが無いけど数値の格納位置は分かっていると言うigyさん、Questさんと
同じ解釈で文字を整数部と少数部に分けて数値化し後は下記ホームページ
を参照されてFormatを使って好きな様に表示して下さい。

http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/faq/00149.htm

編集 削除
超初心者  2010-08-19 15:43:50  No: 39005  IP: 192.*.*.*

《補足》
すみません、記述時慌てていたので説明が不十分でした。
皆様早々のご回答を有難う御座います。
本文補足させていただきます。


igyさま、
「StringGrid1.Cells[3,l]に小数点を付けて格納したい」のです。

0000000001234  ⇒  000000012.34


以下のように記述したのですが、
では
l= Integer;を浮動少数型(singleやdouble、currencyも試しました。)
にすればいいのではないかと考えましたが、

for l :=0 to Memo1.Lines.Count - 1 do
の行でコンパイルエラーになってしまいます。
このエラーは何故なのでしょうか?
for l :=0 が整数だからですか?

度々で恐縮です。
なにとぞ宜しくお願いいたします。

−−−−−−−−−−−−−−−−−−−−−−−−
var
  l: INTEGER;
begin
  StringGrid1.ROWcount := Memo2.Lines.Count - 1;
  for l :=0 to Memo2.Lines.Count - 1 do
  begin
    StringGrid1.cells[1,l] := Copy(Memo2.Lines[l],1,5);
    StringGrid1.cells[2,l] := Copy(Memo2.Lines[l],6,20);
    StringGrid1.Cells[3,l] := Copy(Memo2.Lines[l],26,11);



  end;
end;

編集 削除
HOta  2010-08-19 16:26:15  No: 39006  IP: 192.*.*.*

TStringGridのcellsは文字型です。
単純に文字列の右から2番目の前に[.]を入れればその形になります。

エラーの件は、単純にMemo1とMemo2の間違いでは?
シンタックスは問題ないように見えます。

編集 削除
通りすがり  2010-08-19 16:45:33  No: 39007  IP: 192.*.*.*

こうですか?

procedure TForm1.Button1Click(Sender: TObject);
var
  l: Integer;
begin
  Memo2.Lines.Clear;
  Memo2.Lines.Add('123456789012345678901234567890123456');
  Memo2.Lines.Add('123451234567890123456789000000001234');

  StringGrid1.RowCount := Memo2.Lines.Count; //-1;

  for l:=0 to Memo2.Lines.Count - 1 do
  begin
    StringGrid1.Cells[1,l] := Copy(Memo2.Lines[l],1,5);
    StringGrid1.Cells[2,l] := Copy(Memo2.Lines[l],6,20);
  //StringGrid1.Cells[3,l] := Copy(Memo2.Lines[l],26,11);
    StringGrid1.Cells[3,l] := Copy(Memo2.Lines[l],26,9)
                             +'.'
                             +Copy(Memo2.Lines[l],35,2);
  end;
end;

編集 削除
超初心者  2010-08-25 13:09:26  No: 39008  IP: 192.*.*.*

通りすがり様、有難う御座いました。
表現したかった結果はこの通りです。


皆様、ご回答戴き誠にどうも有難う御座いました。

編集 削除
HOta  2010-08-25 13:14:30  No: 39009  IP: 192.*.*.*

エラーはどうなったの?

編集 削除