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 6 et antérieur Discussion :

lire dans un fichier .ini


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 55
    Points : 35
    Points
    35
    Par défaut lire dans un fichier .ini
    salut à tous et une bonne année,

    dans les tutoriels j'ai trouvé du code pour lire dans fichier .ini

    j'ai essayé mais cà n'a pas marché.
    au fait je teste pour pouvoir le développer.

    voici ce que j'ai fait:

    dans un module j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Declare Function GetPrivateProfileString Lib "kernel32" _
        Alias "GetPrivateProfileStringA" _
        (ByVal Section As String, ByVal Cle As Any, ByVal ValeurParDefaut As String, _
        ByVal lpReturnedString As String, ByVal nSize As Long, ByVal Fichier As String) As String
     
    Private Function LitDansFichierIni(Section As String, Cle As String, Fichier As String, _
        Optional ValeurParDefaut As String = "") As String
     
    Dim strReturn As String
    'strReturn = String(255, 0)
    strReturn = GetPrivateProfileString(Section, Cle, ValeurParDefaut, , , Fichier)
    'LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
     
    End Function
    et ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command1_Click()
    Text1.Text = LitDansFichierIni("NMT30", "mouv", "C:\Documents and Settings\lma\Desktop\liste_route.ini")
    End Sub
    et j'ai comme message
    Run-time error '13' type mismatch
    et la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text1.Text = LitDansFichierIni("NMT30", "mouv", "C:\Documents and Settings\lma\Desktop\liste_route.ini")
    est sélectionnée

    quelqu'un peut me corriger?
    merci

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Pourquoi chercher midi à quatorze heure dès lors que les fichiers .ini sont ouvrables en texte ???

    Utilises donc tout bêtement la méthode open fichiermachin for input as # 1

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    salut!!!

    je suis désolé de te le dire mais le code qui se trouve dans la faqvb marche parfaitement. je pense qu'il faut revoir ta copie.

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ah bon !

    et, dis-moi, ça m'intéresse beaucoup :

    Si tu dois planter un rosier dans ton jardin, tu prends simplement une bêche ou tu loues une pelle Poclain ?

    Les 2 ferons certes l'affaire, mais l'usage d'une pelle Poclain serait abusif !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par jmfmarques
    Pourquoi chercher midi à quatorze heure dès lors que les fichiers .ini sont ouvrables en texte ???

    Utilises donc tout bêtement la méthode open fichiermachin for input as # 1
    explique toi stp!
    moi ce que je veux c'est aller lire dans un fichier des paramètres
    mouv="dep"
    piste=20
    rte="helen"
    rte="denut"
    ...
    et utiliser ces paramètres pour effectuer un traitement.

    merci à tous et ne vous battez pas

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je ne vois là rien que ne peut résoudre simplement un simple open !!!...
    mais j'ai encore une fois dû trop boire...

  7. #7
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Citation Envoyé par jmfmarques
    Si tu dois planter un rosier dans ton jardin, tu prends simplement une bêche ou tu loues une pelle Poclain ?

    Les 2 ferons certes l'affaire, mais l'usage d'une pelle Poclain serait abusif!
    Je suis d'accord avec la métaphore, mais dans le cas présent, l'API GetPrivateProfileString représente la bêche.

    Pourquoi se priver de l'utilisation d'API?

    Porki, ton message signifie que tu essaies d'affecter à une de tes variables un type qui ne lui convient pas. Classiquement, une affectation du genre A = B avec A qui est déclaré en String, Integer ou autre et B qui est déclaré en Variant. Donc cherhce de ce coté.

    De plus, je doute de l'efficacité de la fonction LitDansFichierIni quand je vois cette ligne commentée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Autant pour moi, CatBull!

    Je disais toutefois récemment (je ne me rappelles plus à propos de quelle question) que j'étais tenté d'écrire un petit article sur l'opportunité ou non d'appeler l'API de Windows (j'aime beaucoup - trop ? - l'appeler en ce qui me concerne).

    Quand l'appeler et quand ne pas l'appeler ? That's the real question !

    J'ai quant à moi choisi de ne l'appeler que lorsqu'elle "soulageait le code (pour être plus précis : chaque fois qu'elle permettait d'éviter d'alourdir l'application par l'inscription d'un composant).

    Dans le cas qui nous intéresse, Open... patati patata... est de toutes façons présent (qu'on le veuille ou non) et alourdit déjà tout. Ne pas l'utiliser et appeler l'API vient ajouter un peu de poids, c'est tout.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    ok j'essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Open fichiermachin For Input As #1
    Close #1
    et je retrouve où ce qu'il y a dans le fichier? pour voir qu'il lit bien
    merci

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je dirais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    on error resume next                'pour le cas où je me tromperais sur l'ortographe du fichier 
     
    Open fichiermachin For Input As #1
        Do While Not EOF(1)
          Line Input #1, inputdata
            msgbox inputdata 'juste pour voir ce que contient inputdata
         Loop
     Close #1
    err.clear

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 55
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par jmfmarques
    Je dirais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    on error resume next                'pour le cas où je me tromperais sur l'ortographe du fichier 
     
    Open fichiermachin For Input As #1
        Do While Not EOF(1)
          Line Input #1, inputdata
            msgbox inputdata 'juste pour voir ce que contient inputdata
         Loop
     Close #1
    err.clear
    c'est SUPER
    je vais essayer de continuer
    UN GRAND MERCI





  12. #12
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    J'ai des doutes à ce qu'une procédure VB soit plus rapide que l'appel d'un fonction écrite en C et puisse ... soulager le code,
    mais on peut toujours rêver à réinventer l'eau chaude !

    A quoi servent les tutoriels ou les Faq - à proposer des solutions tordues ?

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    C'est un point de vue respectable (mais pas forcément complètement réfléchi), DarkVader... On y reviendra, je l'ai promis et le promets encore ici.

    Amitiés

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    porki, si celà peut t'aider voici un code qui récupère les lignes 1 et 2 d'un fichier dans des TextBox.
    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
     
    Private Sub Command1_Click()
    Dim nbrligne, ligne
    Text1 = ""
    Text2 = ""
    nbrligne = 0
    Open "C:\MonFichier.ini" For Input As 1
    Do While Not EOF(1)
       Line Input #1, ligne
          nbrligne = nbrligne + 1
          If nbrligne = 1 Then 'Récupère la 3ème ligne
                Text1 = Text1 & ligne '& vbCrLf
         End If
              If nbrligne = 2 Then 'Récupère la 3ème ligne
                Text2 = Text2 & ligne '& vbCrLf
          End If
     
    DoEvents
    Loop
    Close #1
    End Sub
    jpleroisse

  15. #15
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par jmfmarques
    C'est un point de vue respectable (mais pas forcément complètement réfléchi), DarkVader... On y reviendra, je l'ai promis et le promets encore ici.

    Amitiés
    J'attendrais le jour et la nuit .... avec impatience -
    ceci dit, si l'on part du principe qu'un code plus rapide est un code plus optimisé
    la solution par API l'est 25 à 30 fois plus.

  16. #16
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je constate que certains préfèrent proposer une autre solution plutôt que de résoudre le problème d'origine.

    Pour savoir ce qui se passe, je propose ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command1_Click() 
      Dim vTemp as Variant ' Variant pour le cas où une erreur est retournée
      vTemp = LitDansFichierIni("NMT30", "mouv", "C:\Documents and Settings\lma\Desktop\liste_route.ini") 
      Msgbox vTemp
    End Sub
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  17. #17
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Pourquoi se torturer l'esprit alors qu'il suffit de copier correctement le code de la FAQ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Function LitDansFichierIni(Section As String, Cle As String, Fichier As String, _
        Optional 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
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

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

Discussions similaires

  1. lire et ecrire dans les fichiers INI sans MFC
    Par skeltryx dans le forum C++/CLI
    Réponses: 10
    Dernier message: 24/04/2007, 09h03
  2. Lire dans un fichier ini
    Par loreleï85 dans le forum C#
    Réponses: 1
    Dernier message: 26/01/2007, 11h55
  3. [VC++] creer, ecrire et lire dans des fichiers .ini
    Par ksoft dans le forum Visual C++
    Réponses: 11
    Dernier message: 06/09/2006, 10h18
  4. lire le point-virgule dans un fichier .ini
    Par juflata dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 05/07/2004, 12h46

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