Lire toutes les valeurs de fichier ini avec GetPrivateProfileString
J'ai besoin d'un moyen de lire toutes les sections/touches de fichier ini dans un StringBuilder variable:
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
...
private List<string> GetKeys(string iniFile, string category)
{
StringBuilder returnString = new StringBuilder(255);
GetPrivateProfileString(category, null, null, returnString, 32768, iniFile);
...
}
Dans returnString n'est que la première valeur de la clé! Comment il est possible d'obtenir tout à la fois et de les écrire sur le StringBuilder et à la Liste?
Merci pour votre aide!
accueille leon22
source d'informationauteur leon22 | 2011-08-17
Vous devez vous connecter pour publier un commentaire.
Solution Possible:
Je crois qu'il y a aussi
GetPrivateProfileSection()
qui pourraient aider, mais je suis d'accord avec Zenwalker, il y a des bibliothèques qui pourraient vous aider à cela. Les fichiers INI ne sont pas difficiles à lire: les articles, clé/valeur et des commentaires est assez bien.Pourquoi ne pas vous utiliser IniReader bibliothèque pour lire les fichiers INI?? son plus facile et plus rapide de cette façon.
Ces routines lire la totalité d'une section INI, et de retourner l'article, tel qu'une collection de chaînes brutes, où chaque entrée est une seule ligne dans le fichier INI (utile si vous utilisez l'INI de la structure, mais ne pas nécessairement avoir une =), et un autre qui renvoie une collection de keyvalue paires pour toutes les entrées de la section.
Si notre appel de fonction réussit, nous aurons le résultat dans PtrToString adresse de mémoire et RetVal contiendra la longueur de la chaîne dans PtrToString. Sinon, si cette fonction a échoué en raison du manque de suffisamment d'BufferSize Puis RetVal contiendra BufferSize - 2. Afin que nous puissions vérifier et à appeler cette fonction avec la plus grande taille de tampon.
"Maintenant, voici comment nous pouvons obtenir la chaîne de caractères à partir de la mémoire d'adresse.
"Ici, j'ai utiliser" RetVal - 1 " pour éviter les extra chaîne nulle.
"Maintenant, nous avons besoin de diviser la chaîne où les caractères null venir.
Donc ce tableau contient tous vos keyvalue paire dans cette section spécifique.
Et n'oublie pas de libérer la mémoire