Accents en APP Console

Résolu
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
- 28 avril 2007 à 06:07
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
- 29 avril 2007 à 05:34
Bonjour,
j'ai une question stupide qui me chicote depuis longtemps,,,
comment on fait pour afficher du texte avec des accents avec la commande Writeln...
car moi sur mon windows xp anglais , sa maffiche des caracteres illisible dans mon app console... c'est fatiguant de faire des fautes pour quon puisse comprendre qui a un accent... jaimerais avoir comme texte dans mon programme ex: à été aulieu de a ete :P

jsuis pas prof de francais mais bon vaut mieu ecrire comme du monde :P

merci!

laurent !

5 réponses

japee
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
29 avril 2007 à 03:50
Salut,

Sous D4/D6, les 2 codes de WhiteHippo fonctionnent parfaitement.
Peut-être que Delphi 2006 râlera moins si tu lui donne ça :

function ConsoleString(const Chaine: string): string;
begin
  SetLength(Result, Length(Chaine));
  CharToOem(PChar(Chaine), PChar(Result));
end;

?

Bonne prog'
3
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
28 avril 2007 à 10:06
Bonjour

il existe une fonction dans l'API windows pour solutionner ce problème, elle s'appelle CharToOem. Son seul inconvénient est qu'elle travaille avec des PChar ; d'où l'utilisation d'une fonction intermédiaire de conversion :

function ConsoleString( const Chaine : String ) : String ;
const
  BUFFER_MAX = 1024 ;
var
  Buffer : Array[0..BUFFER_MAX-1] of Char ;
begin
  // Conversion ANI to OEM
  CharToOem( PChar( Chaine ), @Buffer ) ;
  // Conversion PChar to String
  Result := StrPas( @Buffer ) ;
end ;

Pour l'utilisation, voici un mini programme :

program Project1;



{$APPTYPE CONSOLE}



uses
  windows,SysUtils;



function ConsoleString ( const Chaine : String ) : String ;
const
  BUFFER_MAX = 1024 ;
var
  Buffer : Array[0..BUFFER_MAX-1] of Char ;
begin
  // Conversion ANI to OEM
  CharToOem( PChar( Chaine ), @Buffer ) ;
  // Conversion PChar to String
  Result := StrPas( @Buffer ) ;
end ;


const
  Test = 'essai avec des accents : éèùà' ;




begin
  writeln( Test ) ; // Sans accents
  writeln( ConsoleString( Test ) ) ; // Avec accents
  readln;
end.




Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

28 avril 2007 à 13:53
salut !

jai assayer ton code mais jobtien

[Pascal Error] Project1.dpr(15): E2010 Incompatible types: 'Array' and 'Char'
[Pascal Error] Project1.dpr(17): E2010 Incompatible types: 'Array' and 'Char'

ligne15 =   CharToOem( PChar( Chaine ), @Buffer ) ;
ligne17=  Result := StrPas( @Buffer ) ;

lors de la compilation
 
jai delphi 2006...

merci beaucoup

Laurent
0
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
28 avril 2007 à 14:40
Sous Delphi 7 pas de problèmes  !! Essaye avec :

function ConsoleString ( const Chaine : String ) : String ;
const
  BUFFER_MAX = 1024 ;
var
  Buffer : Array[0..BUFFER_MAX-1] of Char ;
begin
  // Conversion ANI to OEM

  CharToOem( PChar( Chaine ), PChar( @Buffer ) ) ;
  // Conversion PChar to String
  Result := StrPas( PChar( @Buffer ) ) ;
end ;

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

29 avril 2007 à 05:34
merci japee! cest delphi 2006 qui deconne :P bref, jcomprend pas pkoi sa fait sa ,,, delphi cest delphi le language reste pas le meme entre chaque version ou quoi ?!?! jveux dire appart des nouvelles fonctions rajouter entre chaque version , jpense pas qui nen enleve...

merci a toi aussi WhiteHippo ;)

Laurent
0