
現在Visual Studio 6.0 Professional Editionを使って開発をしています。
その中でiniファイルを使う部分があるのですが、
現在はiniファイルまでのフルパスを直書きしています。
しかし、そのパスを動的に取得したいのです。
イメージ↓
フォルダA
| Liniファイル ←☆の位置からこのパスを取得したい
|
フォルダB
LEXE☆ ←ここから
まだまだ技術的な力が足りず、どうしたらいいのかさっぱりわかりません。
そこで皆さんの知恵を借りたいのです。
よろしくお願いします。
サンプルでもサイトでもなんでも構いません。
No.2ベストアンサー
- 回答日時:
考え方なので、理解してデバッグして下さい。
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()は、実行ファイルのフルパス名とファイル名を取得します。
No.5
- 回答日時:
相対パスでの指定の際には…
「カレントディレクトリ」に注意してください。
exeファイルのある場所がカレントディレクトリとは限りませんので。
#2さんの書かれているGetModuleFileName()を使用しての絶対パスでの指定がベストだと思います。
No.4
- 回答日時:
環境変数にiniファイルの位置を記述しておくのは?
環境変数
INIDIR=C:\フォルダA
#include <stdlib.h>
char *env;
env = getenv("INIDIR");
No.3
- 回答日時:
★相対パスでの指定ではダメなの?
・フルパス名が長いのなら相対パスで指定すればよいのでは。
イメージが良く読み取れませんが
◆フォルダA
├─iniファイル
└フォルダB
└exeファイル
↑
ならば『..\\filename.ini』とすればいい。
・もし下のイメージなら
◆フォルダA
│ └iniファイル
└フォルダB
└exeファイル
↑
ならば『..\\フォルダA\\filename.ini』となります。
・相対パスでも処理できると思いますのでフルパスに直さず試して見て下さい。
・以上。
No.1
- 回答日時:
一般にWindowsOSにファイルのパスを自動で取得する方法はありません。
iniファイルを必ず、アプリの起動ディレクトリあるいは、パスの通った場所に置くことにするか、インストーラで置いてあるフォルダをレジストリに書き込むようにするといいでしょう。
最もレジストリ構うなら、最初からiniファイルでなくレジストリでよいのではという話もあるでしょうが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 コマンドプロンプトの使い方 1 2022/10/13 14:43
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
C言語を用いたファイルの一括削...
-
[VC]VCのデバッグ実行で落ちる...
-
FTPでputすると空ファイルが出...
-
コンパイラについて
-
Excelマクロからのバイナリデー...
-
webアプリケーションでの画像フ...
-
フルパスから最後のディレクト...
-
絶対パスの絶対て英語で何でし...
-
「UNCパスはサポートされません...
-
ExcelVBAでカレントディレクト...
-
セルに入力されたパスでフォル...
-
マイクラでPythonのプログラミ...
-
エクセルVBAで相対パスでファイ...
-
fopenで別ディレクトリにファイ...
-
C言語初心者の質問失礼します。
-
バッファとは何ですか
-
Thunderbirdでemlファイルを開...
-
Access クエリ実行が急に非常に...
-
コンパイルするときに、ファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
「UNCパスはサポートされません...
-
FTPでputすると空ファイルが出...
-
絶対パスの絶対て英語で何でし...
-
fopenで別ディレクトリにファイ...
-
ExcelVBAでカレントディレクト...
-
ファイルやディレクトリの存在...
-
windows.hがincludeされない
-
セルに入力されたパスでフォル...
-
ネットワーク上のコンピュータ...
-
Ubuntu テキストファイルをどこ...
-
C言語を用いたファイルの一括削...
-
webアプリケーションでの画像フ...
-
新規作成ファイルパスが有効か...
-
ファイルダイアログのカレント...
-
ExcelVBA サーバーの(共有フォ...
-
GetPrivateProfileStringでini...
-
エクセルVBAで相対パスでファイ...
-
マイクラでPythonのプログラミ...
おすすめ情報