-PR-
解決済み

数値データを書式毎に表示結果を加工する処理方法について

  • 困ってます
  • 質問No.54694
  • 閲覧数210
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

開発環境は、VisualC++6(SP3)です。

【数値データ】を書式毎に表示結果を加工する処理について、
独自処理PGを作成しました。
(Excelセル書式の表示書式-ユーザ定義で「#,###」等の様に、
 指定された書式へ変換する事)

が、不具合が多く困っております。
(独自PGということもありパターンによってはExcel通りに動かない)

これを、独自処理などではなく、例えば、
MFCのクラスとかAPIなどその他を使って、
正確にExcelの表示書式に近い加工処理を行うPGの方法について
あるいはヒントなどございましたら、ご教示くださいませ。

(変換例(1))
 書式  :#,###.#
 実データ: 1987.65
    ↓
 加工後 :1,987.7  (Excelと同じ動き)

(変換例(2))
 書式  :#,##0.00
 実データ:-20000
    ↓
 加工後 :-20,000.00 (Excelと同じ動き)
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル6

ベストアンサー率 66% (6/9)

qwertyさんの解説にあるように、VBのFormat関数の機能が使えそうですね。
そうすると、(開発中のMFCのプロジェクトにもよるのですけど)
VBで作成したActiveXDLLをVC側から利用することができるので、
VBのFormat関数の機能をエクスポートするDLLを作ってしまいましょう。

ただし私は、「時間がない自信がない」などのときに、
最後の手段としてこの手段を使います。
何故かっていうと、とてもアクが強いというか..使いづらいのです。
まあ経験なんでしょうけどね。

・ActiveXの仕様を熟知して、さらに、こちらのプロジェクトをあわせなければいけない。
・一度VCにタイプライブラリとしてインポートしてしまうと、VB側で発生した変更点をVCに反映する際に面倒くさい。
(これは、ClassWizardがオートでいろいろやってくれますので、変更反映の際は、
依存関係をすべて切り離さないといけません。)
・配布のときのライブラリ依存が複雑になるかも。(VBランタイムだけかな..?)
などなど..つまり、処理を外出しする分、外覧が増えることが最大の欠点ですね。

長所としては、VB標準のランタイムを使うので、
処理的なバグに悩むことは、ほぼなくなります。
Excel準拠で確実さ・安定性を求めるなら、お勧めします。

まあ自分で処理を書かずに楽するわけですから、我慢すれば使えます。
参考URLで使い方からサンプルまで、懇切丁寧に書いてありますよ。

参考になれば幸いです。
お礼コメント
noname#2802

分かりやすいご回答、ありがとうございました♪
VBのDLLで対応する案、とても参考になりました。
今後のプロジェクトにて、検討しようと思います。
(今回は、諸事情があって、現状のままの仕様となりました。ToT;)
投稿日時 - 2001-04-12 13:38:25
関連するQ&A
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル8

ベストアンサー率 43% (20/46)

おはようございます。 おやりになりたいことは、 CStringクラスのFormatメンバ関数で出来そうな気がしますが・・・。 ...続きを読む
おはようございます。

おやりになりたいことは、
CStringクラスのFormatメンバ関数で出来そうな気がしますが・・・。
補足コメント
noname#2802

以下のように処理をしてみましたが、
結果は「#,###.#」になってしまいました。

<処理内容>
 CString str = "1987.65";
 str.Format("#,###.#", str);


結果が「1,987.7」にするためには、
どのようにすればよいでしょうか?
投稿日時 - 2001-03-23 11:56:55


  • 回答No.2
レベル8

ベストアンサー率 43% (20/46)

こんにちは。 できそうな気がしますなんて、無責任なコメントでした。 平謝りでございます。 CStringのFormat()メンバ関数はprintf()ですもんね・・・。 桁区切りのカンマは入れられないですね。 すっかりVBのFormat関数と混同しておりました。 数年前にVC5.0で作ったと思っていたものは、 実はVB5.0で作成していたようです。 大反省です。 申し訳あ ...続きを読む
こんにちは。

できそうな気がしますなんて、無責任なコメントでした。
平謝りでございます。

CStringのFormat()メンバ関数はprintf()ですもんね・・・。
桁区切りのカンマは入れられないですね。

すっかりVBのFormat関数と混同しておりました。
数年前にVC5.0で作ったと思っていたものは、
実はVB5.0で作成していたようです。

大反省です。
申し訳ありませんでした(汗)

ただ、専門家の方ならぼくの思いつかない方法をご存知かもしれませんので、
その方々にご登場頂けることをご一緒にお祈り申し上げます。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ