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 :

Comment écrire un fichier texte au format MS-DOS ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut Comment écrire un fichier texte au format MS-DOS ?
    Salut à tous,

    J'ai créé une moulinette pour préparer des importations de données dans la gestion commerciale SAGE.

    Pour ce faire, j'utilise un mémo, avec un SaveToFile, et ensuite j'importe le fichier .txt dans Sage.

    Problème : tous les caractères accentués sautent dans Sage, et sont remplacées par des hyéroglyphes, alors que le fichier source est correct.

    La hotline Sage m'a indiqué qu'avant d'importer mon fichier, il fallait que je l'ouvre dans Wordpad, et que je fasse "enregister sous" en spécifiant le format "Document texte MS-DOS", et là ça marche.

    Mais il va y avoir à peu prés 200 fichiers/heure à importer en production, donc pas question de convertir tous ces fichiers à la main.

    J'ai essayé plusieurs composants Mémos de différentes librairies, en activant OEMConvert ou non, et ça ne change rien. Même en utilisant un bon vieux WriteLn ça ne marche pas.

    Donc, comment puis-je écrire à partir de Delphi un fichier .txt au format MS-DOS ??

    N.B : j'utilise D7 Entrp sous XP, et le poste de prod est également sous XP.

    Merci d'avance.
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut

    ce doit être le code ASCII qui est différent...
    Une solution : une (autre ) moulinette qui passe les caractères un par un et qui détecte si ce sont des caractères à accent ou spéciaux, si oui, ils les remplacent par leur code ASCII équivalent sous DOS...

    Va voir aussi du coté des fonctions ANSIString (ou un truc comme ça je sais plus )...

    Bonne chance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Passe toutes tes lignes à la fonction CharToOem et OemToChar en fonction du sens de la traduction désirée.

    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  4. #4
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    OK, alors j'ai écrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    var strs, strd:string;
     
        for f:=0 to MemoSage.Lines.count -1 do
        begin
          Strs := MemoSage.Lines[f];
          SetLength(strd, Length(strs));
          CharToOEM(PChar(Strs), PChar(Strd));
          showmessage(Strd);
        end;
    mais à la compil ça me sort une erreur de transypage sur "CharToOEM(PChar(Strs), " ???

    Je dois préciser que comme je ne m'en sortait pas tout seul avec cette fonction CharToOEM, j'ai trouvé ce bout de code dans ce forum, et ça avait l'air de marcher dans le topic d'origine.
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  5. #5
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    Citation Envoyé par fredfred
    OK, alors j'ai écrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    var strs, strd:string;
     
        for f:=0 to MemoSage.Lines.count -1 do
        begin
          Strs := MemoSage.Lines[f];
          SetLength(strd, Length(strs));
          CharToOEM(PChar(Strs), PChar(Strd));
          showmessage(Strd);
        end;

    mais à la compil ça me sort une erreur de transypage sur "CharToOEM(PChar(Strs), " ???

    Je dois préciser que comme je ne m'en sortait pas tout seul avec cette fonction CharToOEM, j'ai trouvé ce bout de code dans ce forum, et ça avait l'air de marcher dans le topic d'origine.
    c pas normal .. chez moi ca compile nikel ce code là
    http://www.pocketmt.com GLCD Font Creator home site.

  6. #6
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par octal
    c pas normal .. chez moi ca compile nikel ce code là
    ben chez moi y a pas moyen, même si je déporte tout ce bout de code dans une autre fonction !!
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  7. #7
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    C'est quelle version de delphi que tu utilise ?
    tu pourrait nous filer le message d'erreur COMPLET stp ?
    http://www.pocketmt.com GLCD Font Creator home site.

  8. #8
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    Delphi 7 Entreprise build 4.453

    "[Erreur] UInit.pas(40): Transtypage incorrect" (juste après la virgule qui suit strs sur la ligne chartooem)
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  9. #9
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    Je pense savoir d'où cela viens ... vas dans >>Option du Projet>>Compilateur et coche la case CHAINE VASTE ... tout devra rentrer dans l'ordre
    http://www.pocketmt.com GLCD Font Creator home site.

  10. #10
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    YESSSSSSS !!!!

    nickel, ça marche très bien.

    Merci beaucoup
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

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

Discussions similaires

  1. Comment écrire un fichier texte au format MS-DOS ?
    Par thierrybo dans le forum Débuter
    Réponses: 2
    Dernier message: 21/07/2009, 14h37
  2. Comment imprimer un fichier text existant?
    Par AODRENN dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 18h26
  3. Comment générer un fichier texte à partir d'un XML et XSL
    Par Jayceblaster dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/07/2005, 23h42
  4. Réponses: 5
    Dernier message: 16/07/2005, 01h01
  5. Comment créer un fichier texte?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 08/05/2005, 20h53

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