アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在Visual Studio 6.0 Professional Editionを使って開発をしています。

その中でiniファイルを使う部分があるのですが、
現在はiniファイルまでのフルパスを直書きしています。
しかし、そのパスを動的に取得したいのです。

イメージ↓
フォルダA
| Liniファイル ←☆の位置からこのパスを取得したい

フォルダB
  LEXE☆ ←ここから

まだまだ技術的な力が足りず、どうしたらいいのかさっぱりわかりません。
そこで皆さんの知恵を借りたいのです。
よろしくお願いします。

サンプルでもサイトでもなんでも構いません。

A 回答 (5件)

一般にWindowsOSにファイルのパスを自動で取得する方法はありません。


iniファイルを必ず、アプリの起動ディレクトリあるいは、パスの通った場所に置くことにするか、インストーラで置いてあるフォルダをレジストリに書き込むようにするといいでしょう。

最もレジストリ構うなら、最初からiniファイルでなくレジストリでよいのではという話もあるでしょうが。
    • good
    • 0

考え方なので、理解してデバッグして下さい。


EXEのあるフォルダの隣にあるフォルダAにINIファイルがあるという前提です。
#include <windows.h>
#include <stdlib.h>
char szBuf[_MAX_PATH];
char szDrive[_MAX_DRIVE];
char szDir[_MAX_PATH];
GetModuleFileName( NULL, szBuf, _MAX_PATH );
_splitpath( szBuf, szDrive, szDir, NULL, NULL );
sprintf( szBuf, "%s%s%s", szDrive, szDir, "..\\フォルダA\\iniファイル名");
szBufに絶対パスが入る。

sprintf( szBuf, "%s%s%s", szDrive, szDir, "\\..\\フォルダA\\iniファイル名");
かもしれません。szBufを表示して確認要!
GetModuleFileName()は、実行ファイルのフルパス名とファイル名を取得します。
    • good
    • 0

★相対パスでの指定ではダメなの?


・フルパス名が長いのなら相対パスで指定すればよいのでは。
 イメージが良く読み取れませんが
 ◆フォルダA
 ├─iniファイル
 └フォルダB
   └exeファイル
 ↑
 ならば『..\\filename.ini』とすればいい。
・もし下のイメージなら
 ◆フォルダA
 │ └iniファイル
 └フォルダB
   └exeファイル
 ↑
 ならば『..\\フォルダA\\filename.ini』となります。
・相対パスでも処理できると思いますのでフルパスに直さず試して見て下さい。
・以上。
    • good
    • 0

環境変数にiniファイルの位置を記述しておくのは?



環境変数
INIDIR=C:\フォルダA



#include <stdlib.h>

char *env;

env = getenv("INIDIR");
    • good
    • 0

相対パスでの指定の際には…


「カレントディレクトリ」に注意してください。
exeファイルのある場所がカレントディレクトリとは限りませんので。

#2さんの書かれているGetModuleFileName()を使用しての絶対パスでの指定がベストだと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!