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

Langage Delphi Discussion :

Accents dans fichier texte vers Windows


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 57
    Points : 46
    Points
    46
    Par défaut Accents dans fichier texte vers Windows
    Bonjour,

    Afin de transférer un fichier texte dans une base de données en conservant les accents, j'ai récupéré ce code dans la FAQ.
    Lorsque j'utilise cette fonction j'ai un message disant que 'Char' et 'WideChar' sont incompatibles.

    Si quelqu'un pouvait m'aider à résoudre ce problème.

    Merci

    BB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function DosStrToWinStrW(Const StrDos: String): WideString;
    begin
      SetLength(Result,Length(StrDos));
      OemToCharBuffW(pChar(StrDos),@Result[1],Length(StrDos));
    end;

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    as tu tenté de remplacer pChar par PWideChar dans ton code ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Oui j'ai essayé mais PWideChar n'est pas reconnu à moins d'avoir fait une boulette à côté en même temps.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Comment dire ! sur mes Delphi 6 et 7, ça passe très bien (la compilation, je n'ai pas testé l'exécution), j'utilise CharToOem pour mes fichiers Bat, donc nonrmalement ...

    PChar et PWideChar déclaré dans System (unité implicite, tu ne peux pas ne pas l'avoir !)
    String et WideString déclaré dans System aussi
    Idem pour SetLength() et Length()
    OemToCharBuffW et OemToCharBuff déclaré dans Windows (il faut le mettre dans les uses, en général avec une Form c'est par défaut)

    A vérifier si le paramètre cchDstLength est bien la longueur de la chaine ou le nombre d'octet ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function DosStrToWinStrW(Const StrDos: string): WideString;
    begin
      SetLength(Result, Length(StrDos));
      OemToCharBuffW(PWideChar(StrDos), @Result[1], Length(StrDos));
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    J'avais résolu une fois ce problème en remplaçant les String par des ANSIString, "tout simplement" .... mais je ne retrouve plus le code : donc sous reserve .
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    archonte, le remplacement string\AnsiString, ça doit aussi aider pour Delphi 2009 ? Sinon cela fait plein de transtypage bizarre ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Merci à vous,

    ShaiLeTroll en effet ces fonctions "fonctionnent" mais pas avec ce fichu fichier.
    N'étant toujours pas parvenu à traduire ce fichier correctement (Unicode, etc...) j'ai copié le contenu du fichier dans un autre fichier texte qui lui ne présentait pas de problèmes et là j'ai pu récupérer tous les caractères.

    Si je trouve une solution directe je l'indiquerai ici.

    Encore merci à vous

    BB

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2009, 01h38
  2. Conversion d'un fichier dos vers windows ?
    Par elitost dans le forum Windows
    Réponses: 4
    Dernier message: 10/02/2005, 17h42
  3. importation d'un fichier texte vers excel
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2005, 11h47
  4. [ Vector Fichier ] Vector dans fichier texte
    Par geegee dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2004, 13h56
  5. Insertion dans fichier texte + rapide que TStringList ?
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/02/2004, 11h34

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