Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 29-08-2007 14:27:13

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Conversion d'un jeu de caractères ...

Bonjour,

Dans la série je fais joujou avec ma nouvelle caisse enregistreuse, après l'épisode "comment j'ouvre le tiroir ?", voici la suite logique "comment se fait-il que mes accents soient perdus ?".

En fait, je lis les articles dans une base de données ASA 8 avec le jeu de caractère CP 850, et lorsque je les affiche à l'écran windows, pas de pb. Le soucis apparait quand je les affiches sur l'afficheur client LCD, je perds les accents, le sigle €, et plein de subtilités ... "Café" devient "Cafù" ... c'est assez moyen ...

Le sigle €, ce n'est pas trop grave, on survit sans.

Le problème c'est le reste. J'avais trouvé une API (CharToOem) de la DLL User32.dll qui convertit bien, mais une fois de temps en temps, elle me provoque une erreur de protection générale ... notamment lors des saisies rapides. Mais sur une caisse tactile, on saisit rapidement ... alors fatalement ...

Donc ma question est : connaissez-vous une autre API ou une autre DLL qui permettrait de palier à ce manque ? (ou alors, il y a une fonction de PB que j'ai oublié ...)
Ou alors il y a une méthode particulière pour se servir de cette DLL ?

Merci de votre aide !

Hors ligne

 

#2 29-08-2007 14:42:21

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Conversion d'un jeu de caractères ...

c'est chartoem ou OemToCharA ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 29-08-2007 14:44:47

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Conversion d'un jeu de caractères ...

ou alors ... CharToOemA


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#4 29-08-2007 14:46:38

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: Conversion d'un jeu de caractères ...

CharToOemA (tu as raison de me reprendre ... CharToOem c'est l'alias dans mon appli) ...

Hors ligne

 

#5 29-08-2007 14:53:47

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: Conversion d'un jeu de caractères ...

je sais qu'avec oracle il faut ajouter " DisableUnicode=1 "


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#6 29-08-2007 14:54:08

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Conversion d'un jeu de caractères ...

apparemment, il y a aussi CharToOemW...  ce n'est pas documenté...    kaori...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#7 29-08-2007 15:01:26

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Conversion d'un jeu de caractères ...

et il y a aussi   WideCharToMultiByte   



hs: moi aussi j'ai toute la collection... ainsi que la suite...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#8 29-08-2007 15:07:37

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Conversion d'un jeu de caractères ...

Use ToUnicode() to convert your ANSI string to UTF-16, then use
WideCharToMultiByte (WinAPI) to convert from UTF-16 to UTF-8 (CP_UTF8 code
page), as follows:

Code: pb

//external func 
function long WideCharToMultiByte(ulong CodePage, ulong dwFlags, ref blob 
lpWideCharStr, long cchWideChar, ref blob lpMultiByteStr, long cchMultiByte, 
long lpDefaultChar, long lpUsedDefaultChar) LIBRARY "kernel32.dll" 


// script 
Blob lbb_tmp, lbb_utf8 
lbb_tmp = ToUnicode(ls_data) 
ll_retbytes = WideCharToMultiBytePrep(65001, 0, lbb_tmp, Len(lbb_tmp)/2, 
lbb_utf8, 0, 0, 0) 
lbb_utf8 = Blob(Space(ll_retbytes)) 
WideCharToMultiBytePrep(65001, 0, lbb_tmp, Len(lbb_tmp)/2, lbb_utf8, 
ll_retbytes, 0, 0) 


//then write utf8 blob to file using FileWrite, optionally prepending it 
with UTF-8 3-byte marker ("~hEF~hBB~hBF")




Bye


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#9 30-08-2007 09:52:05

Ryo  
Membre Geek
Lieu: Rochejean
Date d'inscription: 01-11-2006
Messages: 22
Pépites: 80
Banque: 0

Re: Conversion d'un jeu de caractères ...

Je vais essayer ça, je vous tiens au courant (je ne doute pas que ça fonctionne, mais il faut que les différents appels ne se téléscopent pas lors des saisies rapides).
Merci au vilain canard !

Hors ligne

 

#10 25-02-2008 16:44:47

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: Conversion d'un jeu de caractères ...

Ca a marché?

Hors ligne

 

#11 25-02-2008 17:22:05

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Conversion d'un jeu de caractères ...

Ryo a écrit:

...J'avais trouvé une API (CharToOem) de la DLL User32.dll qui convertit bien, mais une fois de temps en temps, elle me provoque une erreur de protection générale ... notamment lors des saisies rapides.

Si tu nous donnait ton code, ça serait plus facile à corriger.
Autrement dit, ça m'étonnerait que user32.dll soit buggée.

De plus, quelle version de PB utilise tu ?


never let people work on more than one thing at once.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22