文字列を6桁で返すには?

解決


みずき  2006-03-15 16:10:41  No: 20504  IP: 192.*.*.*

いつもお世話になっております。

やりたい事としては、以下の通り。

データセットに入っている文字(だけど中身は数値)を
前ゼロ詰の6桁にしたい。

ようはデータセットに53と入っていたら
000053
3512と入っていたら
003512
と返って来て欲しいです。

Format関数で出来ないものかいろいろ模索してみたのですが、
うまくいかなったので質問させてください。
初歩的な質問で申し訳ありません。

編集 削除
初歩的な説明不足  2006-03-15 16:14:42  No: 20505  IP: 192.*.*.*

何をしたいのか意味不明。一体どこに返すのか?

編集 削除
igy  2006-03-15 16:21:35  No: 20506  IP: 192.*.*.*

これでどうです?

procedure TForm1.Button1Click(Sender: TObject);
var
    i: integer;
    S: String;
begin
    i := 53;
    S := Format('%6.6d', [i]);
    MessageDlg(S, mtInformation, [mbOk], 0);
end;

編集 削除
deldel  2006-03-15 16:22:40  No: 20507  IP: 192.*.*.*

Format('%.6d', [i]);
詳しくはヘルプの「形式文字列」をよ〜く読みましょう。

編集 削除
みずき  2006-03-15 16:22:40  No: 20508  IP: 192.*.*.*

説明不足で申し訳ありません。

ツリービューに登録しているのですが、
(ツリービューに登録する為の関数が用意されています)
そのツリービューの関数に渡す時についでに変換出来ないか。
と考えているのです。

関数側に渡す時に例えばですが、
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
                );
というような感じで渡せば、
関数側で受け取れますよね?
わかりにくくて申し訳ありません。。。

編集 削除
みずき  2006-03-15 16:30:28  No: 20509  IP: 192.*.*.*

連続カキコ申し訳ありません。

igyさんとdeldelさんに教えて頂いた方法も試したのですが、
「書式文字列'%.6d'は正しくないか引数の型と一致しません」
と出ます。

これは、データセットの中身が文字型だからだと思うのですが...
数値型に一度変換したとして、
000053
↑みたいな値は返ってくるのでしょうか...
ちょっと試してみます。

編集 削除
みずき  2006-03-15 16:37:47  No: 20510  IP: 192.*.*.*

先の件、試してみたところ、
Format('%.6d',[StrtoInt(CDS_GetData.FieldByName('data1').AsString)]),
という内容で、
000053
というような内容で返ってきました。

そもそも、数値なんだから前0埋め出来ないんじゃないの?
(000053にしてもまた53に戻ると思ってました;)
と思い、試していませんでした。
申し訳ありませんでした。ありがとうございます。

編集 削除
Ru  2006-03-15 17:11:07  No: 20511  IP: 192.*.*.*

解決していますが

FormatFloat('000000', 53)

とかでもいけるはずです。

編集 削除