お世話になります。
どうしても分からないので教えてください。
ズラッと一行の、いわばノベタンのデータを固定のレコード長で区切って、
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位の場合、
どのようなコードになるのでしょうか?
素人で本当にすみません。
どうぞ宜しくお願いいたします。
何を言ってるのかわからないけど、ただの文字列操作だから、
小数点だのなんだのっていう概念はないよ。
なにがしたいの?
>例えば上記の3行目の11桁が、9桁が整数で2桁が小数点以下2位の場合、
>どのようなコードになるのでしょうか?
StringGrid1.Cells[3,l]に小数点を付けて格納したいのですか?
それとも、11桁のまま格納して、StringGridに表示するときのみ、小数点を付けたいのですか?
頭に0があるのかスペースがあるのか等、何も考えずにベタにやるなら
var
s: string;
begin
・
・
s := Copy(Memo2.Lines[l],26,11);
Insert('.', s, 10);
StringGrid1.Cells[3,l] := s;
・
・
end;
>例えば上記の3行目の11桁が、9桁が整数で2桁が小数点以下2位の場合、
カンマが無いけど数値の格納位置は分かっていると言うigyさん、Questさんと
同じ解釈で文字を整数部と少数部に分けて数値化し後は下記ホームページ
を参照されてFormatを使って好きな様に表示して下さい。
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/faq/00149.htm
《補足》
すみません、記述時慌てていたので説明が不十分でした。
皆様早々のご回答を有難う御座います。
本文補足させていただきます。
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;
TStringGridのcellsは文字型です。
単純に文字列の右から2番目の前に[.]を入れればその形になります。
エラーの件は、単純にMemo1とMemo2の間違いでは?
シンタックスは問題ないように見えます。
こうですか?
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;
通りすがり様、有難う御座いました。
表現したかった結果はこの通りです。
皆様、ご回答戴き誠にどうも有難う御座いました。
エラーはどうなったの?
ツイート | ![]() |