2016-10-14 22 views
0

セクションヘッダーを含まないiniファイルからキー値を読み取るためにC#コードを記述しようとしています。 (hereを述べたように)セクションヘッダーなしの.iniファイルからキー値を読み取る

private static extern int GetPrivateProfileString(string section,  string key,string def, StringBuilder retVal,int size,string filePath); 

機能、この場合には動作しないように、私は、挿入されたセクションヘッダを持つ別のiniファイルを作成しようとしました。次に、GetPrivateProfileString関数を使用してキー値を読み取りました。 iniファイルは期待通りに作成されていますが、関数は結果としてnull値を与えています。どこが間違っていたのですか?

は、コードスニペットは、それは間違っているのGetPrivateProfileStringに渡されるパスです

//someFilePath contains .ini file 
string userFilePath = "someFilePath"; 
string sectionName = "TempSectionHeader"; 
string copyFile = "text.ini"; 
if (File.Exists(userFilePath)) 
{ 
     if(File.Exists(copyFile)) 
     { 
      File.Delete(copyFile); 
     } 

     File.AppendAllText("text.ini", "["+ sectionName + "]"); 
     string contents = File.ReadAllText(userFilePath); 
     contents = contents.Replace("\0", ""); 
     File.AppendAllText(copyFile, "\r\n"); 
     File.AppendAllText(copyFile, contents); 
     installName = ReadValueFromINIFile(sectionName, "installName", copyFile); 
     MessageBox.Show(installName); 
} 
+0

http://stackoverflow.com/questions/217902/reading-writing-an-ini-fileが役立つかどうかをご覧ください。 – qxg

+0

悪い考えのように聞こえます。リンクされたポストはdtbによる素晴らしいLinqの回答を持っています。 - 'File.Exists(userFilePath)'の代わりに、 'Directory.Exists(userFilePath)'をなぜ使わないのでしょうか? – TaW

答えて

1

以下の通りです。試してみてください:

string installName = ReadValueFromINIFile(sectionName, "installName", Path.Combine(Application.StartupPath, copyFile)); 
+0

ありがとうございます。 GetPrivateProfileStringに渡されたパスが間違っていた 'Path.Combine(AppDomain.CurrentDomain.BaseDirectory、copyFile)が私のために働いた' – Sree

関連する問題