Défintition des fonctions pour Fichier ini [Résolu]

Messages postés
205
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
1 avril 2012
- - Dernière réponse : cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 10 janv. 2011 à 10:28
Bonjour, voilà j'ai lu le tutoriel :
[url=http://www.vbfrance.com/tutoriaux/PRESENTATION-UTILISATION-FICHIERS-INI_939.aspx].
Mais je ne comprend pas les erreurs trouvées par VB10 à savoir :
"As Any" -> Erreur 3 'As Any' n'est pas pris en charge dans les instructions 'Declare'.
"String(255, 0)" -> Erreur 4 'String' est un type classe et ne peut pas être utilisé en tant qu'expression. ET Erreur 5 '.' attendu.
Je pense peut-être à une erreur de syntaxe vu que le tuto est en VB6

J'ai posté un commentaire sur la page de tuto mais il ne semble pas fréquenté donc pas de réponse là-bas.

merci
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
Les déclarations des API en .net sont les suivantes :
  <DllImport("KERNEL32.DLL", EntryPoint:="GetPrivateProfileIntA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
  Private Shared Function GetPrivateProfileInt(ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Integer, ByVal lpFileName As String) As Integer
  End Function
  <DllImport("KERNEL32.DLL", EntryPoint:="WritePrivateProfileStringA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
  Private Shared Function WritePrivateProfileString(ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer
  End Function
  <DllImport("KERNEL32.DLL", EntryPoint:="GetPrivateProfileStringA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
  Private Shared Function GetPrivateProfileString(ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
  End Function
  <DllImport("KERNEL32.DLL", EntryPoint:="WritePrivateProfileStructA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
  Private Shared Function WritePrivateProfileStruct(ByVal lpszSection As String, ByVal lpszKey As String, ByVal lpStruct() As Byte, ByVal uSizeStruct As Integer, ByVal szFile As String) As Integer
  End Function
  <DllImport("KERNEL32.DLL", EntryPoint:="GetPrivateProfileStructA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
  Private Shared Function GetPrivateProfileStruct(ByVal lpszSection As String, ByVal lpszKey As String, ByVal lpStruct() As Byte, ByVal uSizeStruct As Integer, ByVal szFile As String) As Integer
  End Function
  <DllImport("KERNEL32.DLL", EntryPoint:="GetPrivateProfileSectionNamesA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
  Private Shared Function GetPrivateProfileSectionNames(ByVal lpszReturnBuffer() As Byte, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
  End Function
<DllImport("KERNEL32.DLL", EntryPoint:="GetPrivateProfileSectionA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function GetPrivateProfileSection(ByVal lpAppName As String, ByVal lpszReturnBuffer() As Byte, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
End Function
<DllImport("KERNEL32.DLL", EntryPoint:="WritePrivateProfileSectionA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function WritePrivateProfileSection(ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer
End Function



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

Merci cs_casy 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
Rajoute ces 2 lignes en début de ton fichier :
Imports System.Runtime.InteropServices
Imports System.Text


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

Merci cs_casy 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
salut,

c'est en effet du vb6...
à remplacer par object en dotnet, mais c'est loin d'être la seule modif à effectuer
tu trouveras des sources toutes prêtes pour dotnet, ou d'autres solutions (xml, settings, etc)

++
[hr]
Commenter la réponse de PCPT
Messages postés
205
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
1 avril 2012
0
Merci
Merci, mais à quelles autres sources fais tu référence.
Commenter la réponse de cs_lilj
Messages postés
205
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
1 avril 2012
0
Merci
le copie coller de ton code comporte des erreurs dont :
dllimport non défini
stringbuilder non défini

merci
Commenter la réponse de cs_lilj
Messages postés
205
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
1 avril 2012
0
Merci
merci mais comment utiliser ces fonctions maintenant ? car en suivant le tuto j'ai ceci :
Function EcritDansFichierIni(ByVal Section As String, ByVal Cle As String, _
                                         ByVal Valeur As String, ByVal Fichier As String) As Long
        EcritDansFichierIni = WritePrivateProfileString(Section, Cle, Valeur, Fichier)
    End Function

et cela :
 Function LitDansFichierIni(ByVal Section As String, ByVal Cle As String, ByVal Fichier As String, _
    Optional ByVal ValeurParDefaut As String = "") As String

        Dim strReturn As String

        strReturn = "tt"

        GetPrivateProfileString(Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier)
        LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
    End Function

mais il y a l'erreur impossible de convertir type string en stringbuilder
Commenter la réponse de cs_lilj
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
EcrireDansFichierIni est normalement correcte.

Pour LitDansFichierIni, dans ma fonction équivalente, j'ai ceci :

    Try
      Dim sb As New StringBuilder(MAX_ENTRY)
      Dim Ret As Integer = GetPrivateProfileString(Section, Cle, ValeurParDefaut, sb, MAX_ENTRY, Filename)
      Return sb.ToString
    Catch
      Return ValeurParDefaut
    End Try


Avec MAX_ENTRY une constante fixée à 32768


J'ai tout ça dans une classe avec plusieurs autres fonctions autour des fichiers ini, le tout intégré dans une bibliothèque de classe. Il faudrait que je la publie mais pour le moment j'ai pas trop de temps pour la préparer

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
205
Date d'inscription
dimanche 13 décembre 2009
Dernière intervention
1 avril 2012
0
Merci
ok j'essaierai ceci merci pour ton temps.
par contre, j'ai lu que le fichier pour être lu sans soucis d'autorisation devait être placé dans le répertoire C est-ce vrai ou peut-on le mettre directement ou se trouve l'executable de mon app ?

merci encore.

Youhou !!
Commenter la réponse de cs_lilj
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Tout dépend de ton OS. Avec XP, je ne me souviens pas qu'il y ait des problèmes (à moins que tu ais un compte utilisateur avec droits restreints). Vista je ne connais pas, mais avec W7, il peut y avoir des problèmes

C'est à essayer mais placé dans le dossier de l'exécutable, je pense que tu devrais arriver à le lire. Par contre tu auras peut-être effectivement des soucis pour y écrire.

Normalement, maintenant avec W7, ces fichiers là, pour pouvoir y écrire sans problème, sont à mettre dans un sous dossier du dossier utilisateur. Mais cela nécessite un fichier par utilisateur, ce qui n'est pas toujours pratique. C'est vrai que W7 complique un peu les choses à ce niveau là.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.