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 :

Extraire des informations précises d'un fichier


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 18
    Points
    18
    Par défaut Extraire des informations précises d'un fichier
    Salut à tous
    Bon dans les tuto j'ai appris à ecrire dans un fichier. Seulement une fois que j'ai écrit plein d'informations dans un fichier quelconque, comment puis-je faire pour affecter à une variable une partie bien précise de texte contenu dans le fichier?
    Merci

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ben tout depend comment tu as stocké les informations dans ton fichier.
    Si tu as as utilise WriteProfilestring par exemple, tu peux utiliser la fonction inverse
    Si tu as utilisé un fichier à accès aléatoire avec longeur fixe, tu peux relire l'enregistrement avec get #nfich,NumEnreg,Donnée
    Si tu as utilisé un fichier binaire, peut être as tu prévu des structures
    Si c'est un fichier texte pur, il faut relire toutes les lignes avant la ligne que tu recherches

    Bref si on ne sait pas comment tu as ecris le fichier, on ne peut pas dire comment le relire lol

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    ^^ oui effectivement alors j'ai utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Open "c:\fichier.n'importequoi" for output as 1
    Print #1, "des informations les unes en dessous des autres"
    Close #1
    Voilà... alors pour ce que je veux faire, il y a peut etre plus pratique que d'entrer les informations en texte... Je ne connais pas toutes les fonctions que tu as cité...je vais en essayer...

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben le fichier texte il va te falloir le lire ligne à ligne .. .. aprés il y as plein de solutions cela dépends de la nature et du nombre de données à stocker ..

    tu peu utiliser un fichier binaire en mode Random..

    ou bien un fichier .ini .. (voir FAQ)

    ou un fichier base de donnée .. access....

    ...etc..

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    D'accord. Le lire ligne à ligne ne me dérange pas puisque toutes (ou presque) les informations me sont utiles.
    En gros ce que je veux faire c'est que certaines valeurs de variables soient conservés lorsque le programme est quité et qu'au redémarrage les variables soient réaffectés dans le programme. (une sorte de section "options" qu'il ne faudrait pas avoir à reparamétrer à chaque fois ^^) Alors il y a peut etre une meilleure solution dans VB6 mais sinon comment je peux affecter à une variable la 4eme ligne de mon fichier texte par exemple?? quelle commande utiliser?

    EDIT : bon pour les options, en lisant la FAQ, peut etre qu'un fichier .ini serait plus approprié? (en tout cas la question tient toujours vu que j'aurais de toute façon besoin de faire une affectation de variables à partir de fichiers textes ^^)

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben dans la FAQ tu as tous ce qui faut pour lire ou écrire dans un .ini...

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Si tu n'as besoin que de rerouver des parametres au redemarrage de ton appli, je te conseille de voir les fonctions savesetting et getsetting de VB.
    Les données ne sont pas enregistrées dans un fichier , mais dans la base de registre. peut être que c'est tout ce dont tu as besoin.
    Sinon j'ai ecrit un module, reprenant les fonctions savesetting et getsetting de vb. il suffit d'ajouter ce code dans un module et toutes les instructions de savesetting et getsetting de vb sont remplacées par celles du module et l'ecritures des informations ne se fait plkus dans la base de registre mais dans un fichier ini.
    On peut toujours utiliser les fonctions intrinseque de vb , mais en modifiant les savesetting et consort par vba.savesetting etc


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    Option Explicit
     
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, 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 Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
    'Declare Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
    'Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
    'Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
    'Declare Function WriteProfileSection Lib "kernel32" Alias "WriteProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String) As Long
     
     
     
    Public Sub SaveSetting(AppName As String, Section As String, Key As String, Setting As String)
      Dim lRet As Long
      Dim Path As String
      Path = App.Path
      If Right(Path, 1) <> "\" Then
        Path = Path & "\"
      End If
      lRet = WritePrivateProfileString(Section, Key, Setting, Path & AppName & ".ini")
    End Sub
    Public Function GetSetting(AppName As String, Section As String, Key As String, Optional Default As String) As String
      Dim lRet As Long
      Dim Path As String
      Dim strTemp As String
      strTemp = Space(32567)
      Path = App.Path
      If Right(Path, 1) <> "\" Then
        Path = Path & "\"
      End If
      lRet = GetPrivateProfileString(Section, Key, Default, strTemp, Len(strTemp), Path & AppName & ".ini")
      lRet = InStr(strTemp, Chr$(0))
      If lRet = 0 Then
        GetSetting = ""
      Else
        GetSetting = Left(strTemp, lRet - 1)
      End If
    End Function
    Public Function GetAllSettings(AppName As String, Section As String) As Variant
      Dim lRet As Long
      Dim Path As String
      Dim strTemp As String
      Dim Table() As String
      Dim Table2() As String
      Dim iPnt As Integer
      Dim iPnt2 As Integer
      Dim iposit As Integer
      strTemp = Space(32567)
      Path = App.Path
      If Right(Path, 1) <> "\" Then
        Path = Path & "\"
      End If
     
      lRet = GetPrivateProfileSection(Section, strTemp, Len(strTemp), Path & AppName & ".ini")
      iPnt = 0
      'For Redim+Preserve tables only the las index can be changed
      If Left(strTemp, 2) = Chr$(0) & Chr$(0) Then
        Exit Function
      End If
      Do While Left(strTemp, 1) <> Chr$(0)
        ReDim Preserve Table(1, iPnt)
        iposit = InStr(strTemp, "=")
        Table(0, iPnt) = Left$(strTemp, iposit - 1)
        strTemp = Mid$(strTemp, iposit + 1)
        iposit = InStr(strTemp, Chr$(0))
        Table(1, iPnt) = Left$(strTemp, iposit - 1)
        strTemp = Mid$(strTemp, iposit + 1)
        iPnt = iPnt + 1
      Loop
      ReDim Table2(iPnt - 1, 1)
      For iPnt2 = 0 To iPnt - 1
        Table2(iPnt2, 0) = Table(0, iPnt2)
        Table2(iPnt2, 1) = Table(1, iPnt2)
      Next
      GetAllSettings = Table2
    End Function
    Public Function DeleteSetting(AppName As String, Section As String, Optional Key As String)
      Dim lRet As Long
      Dim Path As String
      Path = App.Path
      If Right(Path, 1) <> "\" Then
        Path = Path & "\"
      End If
      If Key = "" Then
        lRet = WritePrivateProfileString(Section, vbNullString, vbNullString, Path & AppName & ".ini")
      Else
        lRet = WritePrivateProfileString(Section, Key, vbNullString, Path & AppName & ".ini")
      End If
    End Function

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour votre aide! C'est bon j'arrive à sauver mes paramètres.

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

Discussions similaires

  1. Extraire des informations précise d'un fichier
    Par cinou01 dans le forum Linux
    Réponses: 0
    Dernier message: 28/04/2009, 19h22
  2. Réponses: 0
    Dernier message: 15/04/2009, 15h57
  3. Réponses: 11
    Dernier message: 08/10/2007, 13h15

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