IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème avec mon code (Fichier ini)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kazylax
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 278
    Par défaut Problème avec mon code (Fichier ini)
    Bonjour,

    dans mon application Winform j'avais fait le code
    du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Private 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 = String(255, 0)
            GetPrivateProfileString(Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier)
            LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
     
        End Function
    avec mes infos perso pour le programme mais depuis ce matin
    il ne marche plus j'ai 3 erreurs que je ne sait pas resoudre

    Erreur 1
    'String' est un type classe et ne peut pas être utilisé en tant qu'expression.

    Erreur 2
    '.' attendu. (Celui ci c'est l'erreur sur String(255, 0)

    Erreur 3
    'Public Property Left() As Integer' n'a aucun paramètre et son type de retour ne peut pas être indexé.

    Pouvez vous m'aider s'il vous plait ?

    Merci
    Cordialement,

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Toi tu viens de VB6 non ?
    En VB.NET, String est une classe qui représente une chaine immuable. Donc déjà, pour utiliser GetPrivateProfileString, tu ne peux pas lui passer une chaine parce que GetPrivateProfileString va tenter d'écrire dedans. Donc il faut lui passer un StringBuilder et non une chaine. Ensuite tu peux convertir StringBuilder en chaine avec la méthode ToString

    Il faut aussi changer la déclaration de GetPrivateProfileString :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         <DllImport("kernel32.dll", SetLastError:=True)> _
        Private Shared Function GetPrivateProfileString(ByVal lpAppName 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
    Pour récupérer une partie de la chaine, on utilise la méthode Substring, et non Left (dans ton code Left fait probablement référence à la position horizontale de ta fenêtre). Et à la place de InStr, on utilise la méthode IndexOf.

    Au final, tu devrais avoir quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Function LitDansFichierIni(ByVal Section As String, ByVal Cle As String, ByVal Fichier As String, _
        Optional ByVal ValeurParDefaut As String = "") As String
     
            Bim sb As New StringBuilder
            GetPrivateProfileString(Section, Cle, ValeurParDefaut, sb, Len(strReturn), Fichier)
            Dim strReturn As String = sb.ToString()
            LitDansFichierIni = strReturn.Substring(0, strReturn.IndexOf(Chr(0)) - 1)
        End Function
    Je te conseille de lire un tutoriel sur VB.NET, il y a pas mal de différences avec VB6... il y en a un ici :
    http://plasserre.developpez.com/vsommair.htm

  3. #3
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    J'avais déjà posté un code complet pour lire une ligne d'un fichier ini ...
    Bon, je l'ai pas retrouvé (le post) mais le voilà (le code) :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <Runtime.InteropServices.DllImport("kernel32.dll")> _
        Shared Function GetPrivateProfileString(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As StringBuilder, ByVal nSize As UInteger, ByVal lpFileName As String) As UInteger
     
        End Function
     
     
     
        Public Function LireLigneIni(ByVal fichier As String, ByVal entrée As String, ByVal clef As String) As String
     
            Dim bi As New StringBuilder(16)
     
            Dim size As UInteger = 0
     
            While True
     
                size = GetPrivateProfileString(entrée, clef, "", bi, (CType(bi.Capacity, UInteger)), fichier)
     
                If size = bi.Capacity - 1 Then
     
                    bi.Capacity *= 2
     
                Else
     
                    Return bi.ToString()
     
                End If
     
            End While
     
            Return Nothing
     
        End Function


    Edit :
    Petit détail à tomlev

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Bim sb As New StringBuilder
            GetPrivateProfileString(Section, Cle, ValeurParDefaut, sb, Len(strReturn), Fichier)
            Dim strReturn As String = sb.ToString()
            LitDansFichierIni = strReturn.Substring(0, strReturn.IndexOf(Chr(0)) - 1)
    A mon avis ça va être compliqué d'utiliser Len(strReturn) avant d'avoir crée l'objet strReturn (à la ligne suivante)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par smyley Voir le message
    Edit :
    Petit détail à tomlev

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Bim sb As New StringBuilder
            GetPrivateProfileString(Section, Cle, ValeurParDefaut, sb, Len(strReturn), Fichier)
            Dim strReturn As String = sb.ToString()
            LitDansFichierIni = strReturn.Substring(0, strReturn.IndexOf(Chr(0)) - 1)
    A mon avis ça va être compliqué d'utiliser Len(strReturn) avant d'avoir crée l'objet strReturn (à la ligne suivante)
    Arf... voilà ce que c'est quand on copie colle sans faire attention

  5. #5
    Membre éclairé Avatar de kazylax
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 278
    Par défaut
    Vous etes sur que c'est pour Visual basic 2005 ?
    je met le code dans un nouveau appli en VB5 et ca marche pas

    vraiment desolé mais j'ai beaucoup de mal a comprendre meme avec le Tuto sur http://access.developpez.com/faq/?page=ActionsRep#ini

    en VB5 ca ne marche pas

    a cause du strReturn = String(255, 0)

    Autre idée ?

    Merci
    Cordialement,

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    A tout hasard, VB5 != VB 2005 ... enfin je dit ça ... c'est une impression ...

  7. #7
    Membre éclairé Avatar de kazylax
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 278
    Par défaut
    Salut,

    Non je suis en VB 2005 je fait des programmes avec les deux
    car mes autres programmes marche pas avec vb6

    voici le code d'origine du forum ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
        Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
     
     
        Private 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
     
     
        Private 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 = String(255, 0)
            GetPrivateProfileString(Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier)
            LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
     
        End Function
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            EcritDansFichierIni("CONFIG", "couleur", "336699", "c:\config.ini")
        End Sub
    je l'ai pris ya longtemps et depuis ce matin depuis ma derniere mise a jour du programme ca ne marche plus

    si tu as une petite idée

    Merci
    Cordialement,

  8. #8
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    T'as vu mon message ?

  9. #9
    Membre éclairé Avatar de kazylax
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 278
    Par défaut
    Désolé
    j'ai fait le message en meme temps que toi je pense
    j'ai pas actualisé la page pour voir.

    je vais essayer Merci

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] problème avec mon code
    Par aroua dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 30/04/2008, 13h36
  2. problème avec mon code pour accès au serveur ftp
    Par mimi51340 dans le forum Général Java
    Réponses: 1
    Dernier message: 03/03/2008, 23h24
  3. Problème avec mon code - un aperçu
    Par nsimon70 dans le forum Flash
    Réponses: 1
    Dernier message: 14/02/2008, 12h47
  4. [MySQL] problème avec mon code (envoi données) ?
    Par cuisto44000 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/12/2007, 09h45
  5. probléme avec mon code JAVA et MYSQL
    Par ulysse031 dans le forum JDBC
    Réponses: 5
    Dernier message: 10/05/2007, 00h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo