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 :

CharToOemBuff() me rend dingue


Sujet :

Langage Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut CharToOemBuff() me rend dingue
    Bonsoir à tous.

    Elle semble fonctionner... aléatoirement !

    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
     
    Var globales : 
     
      Chn_Cible_OEM : string;
      Tab_Chn_Pivot : array[0..255] of char;
     
      Surface_Buffer : dword;
      Ptr_Source : Pointer = nil;
      Ptr_Tab_Chn_Pivot : Pointer = nil;
      Chn_Cible_OEM := 'L''évidenéïce de la l'' liberté';	// Volontairement avec caractères NON OEM rajoutés 
     
     
    Procedure Appel_Formater_String_OEM;      // Ex. de procédure d'appel ---------------------------------
    Var   Long_Chn : integer;
     
    begin
          Chn_Cible_OEM := '';
          Chn_Initiale := 'L''évidenéïce de la l'' liberté';
          Long_Chn := Length(Chn_Initiale);
     
          Chn_Cible_OEM := Chn_Initiale;
          Formater_String_OEM;
          Chn_Initiale := Chn_Cible_OEM;
     
          Form1.Lab_Aff_Chn_Formatee.Caption := Chn_Cible_OEM;
     
    end;
     
     
    Procedure Formater_String_OEM;
    begin
          Ptr_Source := @Chn_Cible_OEM[1];
          Ptr_Tab_Chn_Pivot := @Tab_Chn_Pivot[0];
     
          Surface_Buffer := Length(Chn_Cible_OEM);
          CharToOemBuff(Ptr_Source, Ptr_Tab_Chn_Pivot, Surface_Buffer);
     
          Chn_Cible_OEM := Tab_Chn_Pivot;
     
    end;
    Et ça me donne ça :




    Pourquoi le tampon mémoire (ici, le Tab_Chn_Pivot[] ) n'est-il pas correctement traité ? CharToOemBuff, ici, déforme encore plus la chaîne à formater OEM !


    Je tourne bourrique, là

    Merci :hello:

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 785
    Points : 5 916
    Points
    5 916
    Par défaut
    Bonjour,
    J'ai vérifié, il n'y a pas de problème, par contre je crois que tu regardes le résultat sous windows (ansi donc).

    Envoies le résultat vers un fichier texte, ouvre ce fichier texte depuis une fenêtre "ligne de commandes"

    Ou prends un éditeur qui affiche de l'OEM comme PSPAD par exemple

    et regardes le résultat...
    --
    Philippe.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    J'ai vérifié, il n'y a pas de problème, par contre je crois que tu regardes le résultat sous windows (ansi donc).

    Envoies le résultat vers un fichier texte, ouvre ce fichier texte depuis une fenêtre "ligne de commandes"

    Ou prends un éditeur qui affiche de l'OEM comme PSPAD par exemple

    et regardes le résultat...
    --
    Philippe.
    Bonjour, Ph. B.

    Je vais le faire, mais je sauvegarderai donc le résultat du formatage OEM ds un fichier texte. Parce que là, tout se passe en mémoire.

    Nouvelles suivent ...

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Philippe.
    Résultat :

    Image 1 :


    Image 2 :


    Je dois être mal réveillé

  5. #5
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 785
    Points : 5 916
    Points
    5 916
    Par défaut
    Bonjour,

    Je confirme ! Tu es mal réveillé !
    En fait tu n'utilises pas le bon menu. Celui que tu as indiqué gère comment le fichier va être enregistré...
    Il faut passer par Affichage > Afficher les caractères OEM
    --
    Philippe.

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,

    Je confirme ! Tu es mal réveillé !
    En fait tu n'utilises pas le bon menu. Celui que tu as indiqué gère comment le fichier va être enregistré...
    Il faut passer par Affichage > Afficher les caractères OEM
    --
    Philippe.
    Non, non : j'ai mal exposé le pb.

    C'est en programmation sous D7 et Win32, pas en lecture avec un éditeur de texte. Mon prog doit traduire les caractères dans le jeu de caractères "OEM 863" .

    Pffff... Ca galère, là

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/07/2009, 12h39
  2. Fonction qui rend nul le bouton d'alimentation ?
    Par rpoulin dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2005, 05h03
  3. Script CMD qui ne rend pas la main
    Par ipeteivince dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 10/06/2005, 11h00
  4. Les dates me rendent dingue...
    Par David.V dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2004, 13h44
  5. execl rend-elle la main?
    Par chezjm dans le forum C
    Réponses: 16
    Dernier message: 03/06/2002, 18h28

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