• ベストアンサー

C++ 設定ファイル

VC++ではなく、ただのC++での質問です。 エラーメッセージやウインドウのサイズを外部ファイルに定義したいと思っています。 .NETではXMLファイルを使用していたのですが、C++では何を使うのが妥当でしょうか。 iniファイルというものもあるらしいのですが、 http://msdn.microsoft.com/ja-jp/library/cc429779.aspx にて、「この関数は、16 ビット Windows ベースのアプリケーションとの互換性を保つ目的でのみ提供されています。Win32 ベースのアプリケーションでは、初期化情報をレジストリに格納してください。」 といった内容が記述されており、iniファイルはあまり好ましくないようです。(この関数自体使えなくなる?)

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

  • ベストアンサー
回答No.3

お疲れ様です。 iniファイルも64kbの壁があるので、ウィンドウの位置やサイズを保存するぐらいなら良いですが、エラーメッセージ等のリソースに近い情報を保存するには役不足です。 自分でCSV等で保存し、それを読み込むのが妥当と思います。

ShimantoGa
質問者

お礼

回答が遅れ申し訳ありません。 >iniファイルも64kbの壁があるので、ウィンドウの位置やサイズを保存するぐらいなら良いですが、エラーメッセージ等のリソースに近い情報を保存するには役不足です。 http://www.geocities.co.jp/Beautycare/4965/public/save.html 保存容量の問題でしょうか、たしかにこれは問題ですね。 >自分でCSV等で保存し、それを読み込むのが妥当と思います。 その通りですね、しかしCSVは可読性の面から除外しました。 修正しやすいファイル形式が理想ですのでiniやXMLなどを理想としていたのですが。 メッセージの保存に適した(可読性の良い)ファイル形式はなにかありませんでしょうか。 なければiniファイルの拡張子を.aaaとかにしてiniクラスに読ませようと思います。(強引ですが)

その他の回答 (4)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.5

Apacheのトップレベルプロジェクトですからねぇ。 それなりに信頼性はあるとは思いますが、詳しくは知りません。 質問者さんの求めるものが、いったいどのレベルなのか、 ライセンスはどうなのか、みたいな話になってくると思いますよ。 100%の信頼性を求めるのであれば、自分達の設けた制約の中で 100%動作するソフトウェアを全て開発するか、VC++のMSXMLなどの ように、更新サポートの受けられるコンポーネントを使うしかないでしょう。 マルチプラットフォームで、信頼性があって、無償で… なんてのは、現実的には難しい(また虫のいい)要求のような気がします。 理想はそうでしょうけれども、それなりに対価が必要かと思います。 それでは、健闘を祈ります(^^)

ShimantoGa
質問者

お礼

再度のご回答ありがとうございます。 多少失礼な物言いになってしまったことお詫びさせて下さい。 C++で言うならBoost(これは0xという形で正規のものになりそうですが)、JAVAで言うならTomcatなどのレベルであれば文句なしなんですが。 (私個人の認識に理解を求めているようで非常に申し訳ないです。) サポートはありませんが正規システムに採用している会社さんが何社かありましたのでそのくらいの信頼性があれば・・・と考えておりました。

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.4

XML使うなら、クラスプラットフォームの http://ja.wikipedia.org/wiki/Apache_Xerces てのがあるみたいですよ。

ShimantoGa
質問者

お礼

回答ありがとうございます。 C++用のXMLパーサーなんてものが存在したんですね、知りませんでした。 ただしどの程度信頼して良いものなのか調べてもはっきりしません。 これは実績のあるものなのでしょうか、あるいは将来性のあるものでしょうか。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> VC++ではなく、ただのC++での質問です。 これがどう意味か分かりませんが、標準C++の規格厳密合致プログラムという意味であれば... テキストでもバイナリでもよいので、何らかのファイルにする以外ありません。レジストリのような環境依存の概念は使えませんし、XMLを使うのであれば、XMLパーサーは自分で実装しなければなりません。 > iniファイルというものもあるらしいのですが、 何とか.ini というファイルを使うこと自体は問題ありません。ただ、ファイル名の形式(特にディレクトリの指定方法)は処理系定義ですし、ファイルの中身の形式は、自分で定義し、自分でパースする必要があります。

ShimantoGa
質問者

お礼

回答が遅れ申し訳ありません。 >これがどう意味か分かりませんが、標準C++の規格厳密合致プログラムという意味であれば... Windows依存にはしたくない、という意味です。 >レジストリのような環境依存の概念は使えませんし、 http://e-words.jp/w/E383ACE382B8E382B9E38388E383AA-1.html レジストリ自体がWindows固有のものだったんですね。 >XMLを使うのであれば、XMLパーサーは自分で実装しなければなりません。 .NETは標準でXML取得用のクラスが提供されていましたので使用しました。 C++はそれがなさそうなので苦慮しておりました。 >ファイルの中身の形式は、自分で定義し、自分でパースする必要があります。 わかりました、iniファイル用に値取得クラスを作るしかないようですね。

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

INIファイルなんて普通に使うと思いますけど。簡便ですし。 エラーチェックをきちんとしないと、こんなこと↓ http://e-words.jp/w/INIE38395E382A1E382A4E383AB.html になるとは思いますが。 >VC++ではなく、ただのC++での質問です。 これはVC++を使いたくないということを意図していますか?

ShimantoGa
質問者

お礼

回答が遅れました、申し訳ありません。 >INIファイルなんて普通に使うと思いますけど。簡便ですし。 C++が推奨しているファイル形式があればそれを使用したいな、と。 標準で値取得用の関数が存在していれば自分で定義する必要もありませんし。 >エラーチェックをきちんとしないと、こんなこと↓ なるほど、推奨されていない理由はこれでしょうか。 今回は単にアプリの情報を格納するだけですので問題ないとは思いますが(最悪アプリがバグる程度) >これはVC++を使いたくないということを意図していますか? その通りです。 Windows以外にも対応したいと考えております。

関連するQ&A

  • C#の設定ファイルについて

    お世話になっております。 現在、C#にてアプリケーション作成をしているのですが、 C#の設定ファイルについてお聞きしたいことがあります。 現在C#でのWindowsアプリの設定ファイルにはiniファイルもしくはXMLを使用することが あると思うのですが、この2つはどちらのほうが設定値を読み込む動作が早いのでしょうか? 本来はXMLが推奨されているのは知っているのですが、 処理速度が早い、負荷が少ないという2点を重視したいと考えております。 上記2点を重視するとして、設定ファイルを使用するならiniファイルと XMLファイルのどちらを使用するのが良いのでしょうか? ご助力宜しくお願いします。

  • C#でスレッドを終了させるには、どのようにすれば良いでしょうか。

    C#でスレッドを終了させるには、どのようにすれば良いでしょうか。 http://msdn.microsoft.com/ja-jp/library/7a2f3ay4(VS.80).aspx のように、スレッドのループ条件をfalseにする関数を作りました。 ボタンを押したときにこの関数を呼び出すようにしたら、スレッドは終了しました。 しかし、アプリケーションが終了したらスレッドも終了するようにしたいと思います。 この関数をどこで呼び出すのが一般的でしょうか? よろしくお願いします。

  • C# ファイルについて

    Windows Formを作成中にぶち当たった壁なのですが、 パラメータ(テキストボックスなど)の保存方法についてです。 XMLやバイナリファイルに保存するのが一般的なそうですが、 ここで一つ疑問です。 通常、テキストファイルやOfficeなどのファイルは保存すると、 編集したファイルのみが指定したフォルダ上に生成されますが、 Windows Formの場合、アプリケーション上に保存といった形を取ることは出来ないのでしょうか? もっともexe形式なので、出来ないとは思いますが。 また、DataGridViewをListに格納し、CSV形式で、保存・読込を行っていますが、 バイナリ形式にすることは可能でしょうか? XML形式でも構いません。 回答よろしくおねがいします。

  • INIファイルからのデータ読込みについて

    表題の実現方法について、どうしてもわからなかったので、質問を挙げさせていただきます。 会社から、INIファイルの内容を読み込んで、初期値設定に利用するように指示があり、実現方法がわからず、非常に困っています。 ライブラリを購入せずに、対応したいです。 どなたか、本内容にお詳しい方、ご教授下さい。 ◆開発環境 言語:C OS:Linux(Ubuntu 9.10) IDE:eclipse コンパイラ:gcc 4.4 ◆質問 1.セクションで区切られたIniファイルを読み込み、読み込んだデータを各種変数に格納したい。 《想定Iniファイル》 Test.ini [NETWORK] IPADDR=192.***.***.***.*** → char *IPADDRに格納したい PORT=****            → long PORTに格納したい [PRM1] Anum=***             → char *Anumに格納したい Bnum=***             → char *Bnumに格納したい Cnum=***             → char *Cnumに格納したい [PRM2] TIME1=**** TIME2=**** 2.上記1の処理を関数とし、main関数からコールして、mainプログラムの起動時にINIファイル内容を読み込みたい。

  • Cから.xml ファイルを開くには

    Cからxmlファイルを開きたいのですが、VC++でビルドして実行すると、 どうしてもファイルをオープンしてくれません。 なにか特別な設定でもあるのでしょうか。 ちなみにxml ファイルのプロパティは、読み取り専用にチェック入れない、 アーカイブ可能にするにチェック入れて、このファイルに対し、プロパティ だけでなくコンテンツにもインデックスをつける にチェックいれております。 宜しくお願いします。

  • 設定ファイルを扱うライブラリについて

    Linux環境で開発をしているのですが、アプリケーションの設定ファイル(.ini)のようなものを 扱うためのライブラリとして何か標準的なものってありますでしょうか? 一番簡単な自作手順はnameとvalueを並べておいて読み込むのだと思いますが、 コメントの記載や、代入先変数型への対応や、場合によってはメンバ変数への代入の指定、 .iniファイルの暗号化・復号化などやりたいことが増えた際に、自作では手間が大きいです。 さらに、私の開発ではアプリケーション内の各モジュール毎に設定ファイルを持ち、 ハードウェアに依存して値が変わりうるといった設定ファイルの多いシステムになりそうです。 こういった場合に、皆さんはどのように対応なさっていますか? 御紹介いただければ大変ありがたいです。 ※Linux内の各アプリケーションでも、各々パラメータファイルの作りが違うように見える辺り、  標準的なライブラリや手順といったものは無いのかも、、、と薄々思っています。

  • レジストリと構成設定 (.ini)ファイルについて

    レジストリと構成設定 (.ini)ファイルについて ソフト(アプリケーション)のフォルダを見ると、構成設定 (.ini)ファイル が有るソフトと無いソフトがあります。私の知識としては「構成設定 (.ini)は WIN95以前の古い設定記録形式で、現在はレジストリに設定データを記録 するのが一般的になっている」ですが、合っているでしょうか? また、構成設定 (.ini)ファイル形式を取っているソフトはレジストリには いっさい手を加えて無いと思っていいのでしょうか? それと、あえて今でも構成設定 (.ini)形式を取っている理由はなぜですか? ちなみにフリーソフト(AviUtl,PV4,リネームソフト等)に構成設定 (.ini)ファイル を使っているものが多い気がします。 よろしくお願いします。

  • WMIでファイル/フォルダの監査の取得について・・

    Windows2000 Serverで ファイルまたはフォルダの監査の設定状況を 取得したいのですが、WMIでどう書けばよいのか 困っております。 http://support.microsoft.com/default.aspx?scid=kb;ja;300549 関数はあるようなのですが、 この関数をどう利用すれば良いのかわからず 大変困っております。 http://207.46.248.109/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_securitysettingauditing.asp どなたか・・・ご教授下さい。 よろしくお願い致します。

  • C言語からC++の関数をコールする方法について

    初めて質問させて頂きます。 質問は2つあります。 ●1つ目の質問です。 この度、C言語ベースのプログラムに、C++で作成した関数を使用することになりました。 方法としてextern等を駆使しつつ、ラッパー関数を使って対応しております。 そこで質問なのですが、この場合、ラッパー関数に使用するファイル形式はcppまたはcのどちらが正しいのでしょうか?(どちらでも動きました) ●2つ目の質問です。 Windows環境(vs2005)では無事、CからC++の関数を呼ぶことに成功はしました。 しかし、本当に動かしたいのはLinuxでの環境になります。 先程作成したラッパー関数のファイルとC++で作成した関数のファイルをライブラリ(soファイル)化したものを使用し、コンパイルとリンクは問題なく通すことに成功したのですが、 実行させてみると、Cの関数からラッパー関数をコールしているのは確実なのですが、ラッパー関数の処理を通らず、プログラムが止まってしまいます。 試しにラッパー関数の処理を「return 0;」だけにして実行させてみましたが現象は変わらずでした。 そのため、ラッパー関数を呼ぶための何かに問題があると思っています。 ここで質問なのですが、ビルドのときにライブラリをリンクさせるだけでは駄目なのでしょうか。また、他に思い当たることがありましたらご教示頂きたいです。 Windows環境(vs2005)では期待する動作をしているためプログラムは問題ないと思っています。

  • アプリケーションの設定のバックアップを取りたい

    アプリケーションを設定してある レジストリ、フォルダ、iniファイルなどを探しているのですが、 このアプリケーションの設定はここ、といったように うまく探すコツなどあるのでしょうか? またお応えしてくださる皆さんが この方法はお勧め と言えるような方法がございましたら、 ぜひご教授願いたいと思います。 よろしくお願いいたします。

専門家に質問してみよう