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 :

Gérer l'encodage d'un fichier texte


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut Gérer l'encodage d'un fichier texte
    Bonjour,

    Comment gère t on à la création du .txt l'encodage de celui-ci ?
    (Utf8, Dos, ASCII ...)
    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    aucune idée
    Cela n'est-il pas juste en rapport avec son contenu ?

    Je veux dire par là, si tu mets chr(10) & chr(13) à la fin de chaque ligne alors c'est du dos, si seulement chr(10) alors linux ...

    Non ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut
    Je ne sais pas !
    Concernant mon cas, j'utilise la fonction :
    je n'utilise pas les retours chariots chr().

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut Je contourne mon pb :
    Comment écrire mon texte dans l'apllication Wordpad et l'enregistrer avec le type "Document texte MS-DOS"
    Merci.

  5. #5
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Quel est ton problème exact ? Dois tu absolument passer par Wordpad ou dois tu simplement enregistrer un fichier texte depuis ton application ?
    Le problème est il dû à des accents non enregistrés par exemple ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut
    Effectivement, depuis mon appli je génère un fichier d'import pour alimenter mon appli pro de gestion (en l'occurence SAGE Gestion Commerciale L100 comme tu as du le comprendre OhMonBato).
    Effectivement "bis", le libellé de certains articles contient des caractères è,é,à... qui ne s'intègre pas lors de l'import ds l'appli SAGE.
    Je dois pour cela générer un fichier texte MS Dos d'où mes précédentes questions.

    Note :
    pourquoi un contournement de mon pb par un fichier WordPad ? car en copiant le contenu du fichier texte généré automatiquement ds un fichier WordPad puis en enregistrant celui ci au format Document Texte MS-DOS, pas de pb de caractère lors de l'intégration. Seul hic, c'est le côté barbare de l'opération pour mes users débutants.

  7. #7
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Tu génères ton fichier texte par ton application VB ?
    Si oui, tu peux écrire sans accent non ?
    Ou alors si j'ai mal compris mais que le pb n'est bien dû qu'aux accents, tu pourrais "relire" le fichier texte avec ton appli VB et remplacer les caractères accentués par des caractères reconnus par ton application.

  8. #8
    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
    Par défaut
    Si il s'agit de transferer des chaines au format dos, essaye d'utiliser cette fonction de convertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'dans la partie déclaration de la feuill
    Private Declare Function CharToOemBuff Lib "user32" Alias "CharToOemBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Fonction de convertion au format Dos
    Private Function Conv2Dos(Text As String) As String
      Dim Buffer As String
      Buffer = String(Len(Text), 0)
      CharToOemBuff Text, Buffer
      Conv2Dos = Buffer
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Utilisation
      Print #hFich,Conv2Dos(MaChaine)

  9. #9
    Expert éminent


    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
    Par défaut
    je savais bien qu'il y avais ... une API ..

    il manque un argument (le nombre de caractère) lors de l'appel de la fonction ...

  10. #10
    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
    Par défaut
    Même pas, il suffit que la chaine réceptrice soit de la même longueur que la chaîne source

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut
    La fonction de conversion de DELBEKE engendre, pour mon cas, une erreur Windows qui plante ma base.
    = fct° intéressante néanmoins. Merci.

    Je cherche tjs à générer à partir de mon appli un fichier WordPad et l'enregistrer au format souhaité.

  12. #12
    Expert éminent


    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
    Par défaut
    Citation Envoyé par MITCH31
    La fonction de conversion de DELBEKE engendre, pour mon cas, une erreur Windows qui plante ma base.
    = fct° intéressante néanmoins. Merci.

    Je cherche tjs à générer à partir de mon appli un fichier WordPad et l'enregistrer au format souhaité.
    de quel ordre ce "plantage"... ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut
    Message :
    Erreur Lecteur Adresse Mémoire x...

  14. #14
    Expert éminent


    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
    Par défaut
    Citation Envoyé par MITCH31
    Message :
    ... et il arrive quand ce message ...?
    ... en lançant l'application dans l'éditeur VB..?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut
    Afficage Pas à pas : l'erreur apparait dans la fonction :
    Private Function Conv2Dos(Text As String) As String
    Dim Buffer As String
    Buffer = String(Len(Text), 0)
    CharToOemBuff Text, Buffer ' déclenchement de l'erreur
    Conv2Dos = Buffer
    End Function

  16. #16
    Expert éminent


    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
    Par défaut
    sur qu'elle ligne dans la fonction ... ?
    comment l'appelle tu cette fonction ..?

    c'est vraiment le message d'erreur :
    Erreur Lecteur Adresse Mémoire x...

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut
    Message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    L'instruction à "0x77d3f909" emploie l'adresse mémoire "0x04763000". La mémoire ne peut être "written".
    Cliquez sur OK pour ...
    mon bout de code :
    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
     
    '*******************************************************
    'obtient le premier fichier ou répertoire qui est dans "c:\"
    Rep = Dir(MonRepertoire & "\*.*", vbDirectory)
    n = 0
    'boucle tant que le répertoire n'a pas été entièrement parcouru
    Do While (Rep <> "")
        'teste si c'est un fichier ou un répertoire
        If (GetAttr(MonRepertoire & Rep) And vbDirectory) <> vbDirectory Then
            If Right(Rep, 4) = ".txt" Then
                'Ouvre le fichier en cours = la commande
                'puis intégration dans le fichier d'import :
     
                Dim txt As String
                Open MonRepertoire & Rep For Input As 2#
                'MsgBox (Rep)
                While Not (EOF(2) Or False)
                    Line Input #2, txt
                    'Print #1, txt
                    Print #1, Conv2Dos(txt)
                Close #2
                Wend
                FileCopy MonRepertoire & Rep, MonRepertoire3 & Rep
                Kill MonRepertoire & Rep
     
            End If
        End If
    'passe à l'élément suivant
        Rep = Dir
    Loop
    '*******************************************************

  18. #18
    Expert éminent


    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
    Par défaut
    et si tu rajoute la longueur de la chaîne lors de l'appel à CharToOemBuff

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    'Fonction de convertion au format Dos
     Function Conv2Dos(Text As String) As String
      Dim Buffer As String
      Dim iL As Integer
      iL = Len(Text)
      Buffer = String(iL, 0)
      CharToOemBuff Text, Buffer, iL
      Conv2Dos = Buffer
    End Function

  19. #19
    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
    Par défaut
    Désolé, j'avais fais çà de memeoire, mais tu as parfaitement raison, bbil, il faut passer aussi la longueur

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Par défaut
    merci.

    le pb est résolu :
    1 - en rajoutant la longueur de chaîne ds les paramètres de la fonctions.
    2 - en enregistrant mon fichier extension = *.rtf

    mon fichier s'importe à la perfection dans mon appli SAGE.

    merci bq de votre aide.

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

Discussions similaires

  1. AIX - Détecter l'encodage d'un fichier texte
    Par vbonnin dans le forum AIX
    Réponses: 1
    Dernier message: 22/08/2015, 12h22
  2. Détecter l'encodage d'un fichier texte
    Par Emcy dans le forum Algorithmes et structures de données
    Réponses: 32
    Dernier message: 27/01/2011, 14h34
  3. Deviner l'encodage d'un fichier TEXTE
    Par rambc dans le forum Général Python
    Réponses: 10
    Dernier message: 10/07/2010, 17h16
  4. Réponses: 2
    Dernier message: 19/10/2009, 21h36
  5. Comment connaître l'encodage d'un fichier texte?
    Par sergentgarcia dans le forum Général Python
    Réponses: 3
    Dernier message: 26/05/2008, 10h41

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