いつもお世話になっております。
やりたい事としては、以下の通り。
データセットに入っている文字(だけど中身は数値)を
前ゼロ詰の6桁にしたい。
ようはデータセットに53と入っていたら
000053
3512と入っていたら
003512
と返って来て欲しいです。
Format関数で出来ないものかいろいろ模索してみたのですが、
うまくいかなったので質問させてください。
初歩的な質問で申し訳ありません。
何をしたいのか意味不明。一体どこに返すのか?
これでどうです?
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
S: String;
begin
i := 53;
S := Format('%6.6d', [i]);
MessageDlg(S, mtInformation, [mbOk], 0);
end;
Format('%.6d', [i]);
詳しくはヘルプの「形式文字列」をよ〜く読みましょう。
説明不足で申し訳ありません。
ツリービューに登録しているのですが、
(ツリービューに登録する為の関数が用意されています)
そのツリービューの関数に渡す時についでに変換出来ないか。
と考えているのです。
関数側に渡す時に例えばですが、
Proc_CDS_TreeAdd(1,
CDS_GetData.FieldByName('deta1).AsString,
CDS_GetData.FieldByName('deta2').AsString,
CDS_GetData.FieldByName('deta3').AsString,
CDS_GetData.FieldByName('deta4').AsString
);
が現在の形として、
Proc_CDS_TreeAdd(1,
Format('%6s',[CDS_GetData.FieldByName('deta1).AsString]),
CDS_GetData.FieldByName('deta2').AsString,
CDS_GetData.FieldByName('deta3').AsString,
CDS_GetData.FieldByName('deta4').AsString
);
というような感じで渡せば、
関数側で受け取れますよね?
わかりにくくて申し訳ありません。。。
連続カキコ申し訳ありません。
igyさんとdeldelさんに教えて頂いた方法も試したのですが、
「書式文字列'%.6d'は正しくないか引数の型と一致しません」
と出ます。
これは、データセットの中身が文字型だからだと思うのですが...
数値型に一度変換したとして、
000053
↑みたいな値は返ってくるのでしょうか...
ちょっと試してみます。
先の件、試してみたところ、
Format('%.6d',[StrtoInt(CDS_GetData.FieldByName('data1').AsString)]),
という内容で、
000053
というような内容で返ってきました。
そもそも、数値なんだから前0埋め出来ないんじゃないの?
(000053にしてもまた53に戻ると思ってました;)
と思い、試していませんでした。
申し訳ありませんでした。ありがとうございます。
解決していますが
FormatFloat('000000', 53)
とかでもいけるはずです。
ツイート | ![]() |