2016-10-14 3 views
0

섹션 헤더가없는 ini 파일에서 키 값을 읽는 C# 코드를 작성하려고합니다. (here 언급 한 바와 같이)섹션 헤더없이 .ini 파일에서 키 값 읽기

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

기능이 경우에는 동작하지 않기 때문에, I는 삽입 섹션 헤더와 다른 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