2016-10-14 1 views
0

J'essaye d'écrire du code C# pour lire la valeur clé d'un fichier ini qui ne contient pas un en-tête de section. Commelire la valeur de clé du fichier .ini sans en-tête de section

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

ne fonctionne pas dans ce cas (comme mentionné here), j'ai essayé de créer un autre fichier ini avec en-tête de section insérée. Ensuite, la fonction GetPrivateProfileString a été utilisée pour lire la valeur de clé. Le fichier ini est créé comme prévu, mais la fonction donne une valeur nulle comme résultat. Où ai-je mal tourné?

L'extrait de code est donnée ci-dessous

//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

Voir si http://stackoverflow.com/questions/217902/reading-writing-an-ini-file aide. – qxg

+0

Cela ressemble à une mauvaise idée. Le post lié a une bonne réponse de Linq par dtb, c'est probablement difficile à surmonter. - Aussi, au lieu de 'File.Exists (userFilePath)' pourquoi pas 'Directory.Exists (userFilePath)' ?? – TaW

Répondre

1

Il est le chemin qui est passé à GetPrivateProfileString qui ne va pas. Essayez d'utiliser:

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

Merci. Le chemin passé à GetPrivateProfileString était incorrect 'Path.Combine (AppDomain.CurrentDomain.BaseDirectory, copyFile) a fonctionné pour moi' – Sree