DOBON.NET DOBON.NETプログラミング掲示板過去ログ

iniファイルから設定の取得方法について

環境/言語:[C# / .NET Framework2.0]
分類:[.NET]

お世話になっております。

相対パスでiniファイルを指定し値を持ってこようと思っております。

下記のように絶対パスからiniファイルは指定できたのですが、相対
パスでiniファイルの指定方法がわかりません。
※iniファイルは実行ファイルと同じフォルダにおく予定なのですが、
 フォルダの場所は任意で変わります。

相対パスでiniファイルを指定するはどう記述すればよいのでしょうか?
ご教授お願いします。

----------------------------------------------------------------
        public SetIni setini = new SetIni();
        public class SetIni
        {
            // ini ファイルの読み込み用の関数(GetPrivateprofileString)の宣言部分
            [DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileString")]
            private static extern uint GetPrivateProfileString(
                string lpApplicationName,
                string lpEntryName,
                string lpDefault,
                System.Text.StringBuilder lpReturnedString,
                uint nSize,
                string lpFileName);

            public string GetIni()
            {
                string strIni;
                uint entryLength;

                System.Text.StringBuilder strEntryString_port = new System.Text.StringBuilder(256);
                entryLength = GetPrivateProfileString(
                    "TEST_NUMBER",
                    "ENTRY",
                    "Nothing",
                    strEntryString_port,
                    (uint)(strEntryString_port.Capacity),
                    "C:\\test.ini");
                strIni = strEntryString_port.ToString();

                return strIni;
            }
        }

        //ボタンを押すと"test.ini"の値をLabelに表示する。
        private void button1_Click(object sender, EventArgs e)
        {
            string s = setini.GetIni();
            label1.Text = s;
        }
こんばんは。
じゅでであります。

もともとINIファイルの書き込み用関数も、
絶対パスでなければWindowsフォルダに書き込みいきますから、
相対パスでもってこようとするのをあきらめたほうがよろしいかと。

もしかして出来たらごめんなさい。

ちょうどここにも相対パスから絶対パスに変更するのがありますし、
使われる事を検討するのもいかがでしょうか?

http://dobon.net/vb/dotnet/file/getabsolutepath.html

> 相対パスでiniファイルを指定し値を持ってこようと思っております。
>
> 下記のように絶対パスからiniファイルは指定できたのですが、相対
> パスでiniファイルの指定方法がわかりません。
> ※iniファイルは実行ファイルと同じフォルダにおく予定なのですが、
>  フォルダの場所は任意で変わります。
>
> 相対パスでiniファイルを指定するはどう記述すればよいのでしょうか?
> ご教授お願いします。
> ※iniファイルは実行ファイルと同じフォルダにおく予定なのですが、
>  フォルダの場所は任意で変わります。
>
>相対パスでiniファイルを指定するはどう記述すればよいのでしょうか?
>ご教授お願いします。

「相対パスを使う」というシナリオはあまり一般的ではないと思います。

Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "hoge.ini")

のように「実行ファイルのフルパス」を取得して、それを加工して .ini ファイルの絶対パスをその場で作るのが堅実と思います。
じゅでさん、渋木宏明(ひどり)さん
返信ありがとうございます。

Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "hoge.ini")
で解決しました。

相対パスは指定できない(しないのが一般的)なのですね。
ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板