Page 1 sur 1
Procedure Unicode Vers Ansi
Publié : mar. 29/août/2017 15:23
par brossden
Bonjour à tous
Je ne sais pas si cela peut intéresser quelqu'un ou si cette procedure exite déjà mais comme je ne l'ai pas trouvée et que j'en ai eu besoin la voici !
Code : Tout sélectionner
Procedure.s UnicodeVersAnsi(ttx.s)
txt.s=""
x= @ttx -1
For n=1 To Len(ttx)
txt = txt + Chr(255 & PeekA(x+n))
Next
ProcedureReturn txt.s
EndProcedure
Voilà, je pense qu'elle parle d'elle même !
Bonne journée à tous
Re: Procedure Unicode Vers Ansi
Publié : mar. 29/août/2017 16:42
par falsam
Ca doit fonctionner avec la version 5.61 de PureBasic ?
Code : Tout sélectionner
Procedure.s UnicodeVersAnsi(ttx.s)
txt.s=""
x= @ttx -1
For n=1 To Len(ttx)
txt = txt + Chr(255 & PeekA(x+n))
Next
ProcedureReturn txt.s
EndProcedure
;Transformation d'une chaine ASCII vers unicode
*UTF8 = UTF8("Héhé")
;Visualisation du résultat
ShowMemoryViewer(*UTF8, 6) ;Héhé
;Ici j'ai l'impression que ça ne fonctionne pas
Debug UnicodeVersAnsi(PeekS(*UTF8))
;ou
Debug UnicodeVersAnsi("Héhé")
Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 7:10
par Micoute
Bonjour falsam, hélas non, ton exemple ne fonctionne avec aucune version de PureBasic.
Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 9:24
par Kwai chang caine
C'est dingue mon cher DENIS

(que je salut bien bas au passage

)
Les grands esprits se rencontrent, moi aussi hier je me battais avec l'UNICODE pour faire causer VB6 et les DLL pb désormais UNICODE in vitam eternam
Et LUNASOLE sur le US, m'a donné cette combine qui est courte et efficace, ça peut peut etre aussi servir
http://www.purebasic.fr/english/viewtop ... 71#p511071
Code : Tout sélectionner
EnableExplicit
; str$ : PB unicode string
; RETURN: ascii string packed into PB unicode string
Procedure$ ToAscii (str$)
Protected out$ = Space(1 + Len(str$) / 2)
PokeS(@out$, str$, -1, #PB_Ascii)
ProcedureReturn out$
EndProcedure
; back to unicode
Procedure$ FromAscii (str$)
ProcedureReturn PeekS(@str$, -1, #PB_Ascii)
EndProcedure
ProcedureDLL.s Essai(Texte.s)
texte = FromAscii(texte)
MessageRequester("Unicode variable", texte)
texte = ToAscii(texte)
ProcedureReturn Texte
EndProcedure
Que le grand esprit de la "Brosse à dent" soit avec toi, vieux poteau de mes débuts

Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 11:21
par Micoute
Merci Kwai chang caine, ça fonctionne merveilleusement bien.
Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 13:29
par Kwai chang caine
De rien mon bon MICOUTE...
Moi j'suis le serveur....c'est le cuisto qu'il faut remercier en cuisine

Moi dans ce domaine, j'sais même pas allumer le gaz

Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 14:53
par Micoute
Je dois te remercier quand même, car sans ton intervention, je n'aurais à remercier personne.
Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 15:34
par Zorro
ben non !!
aucun de vos codes ne marche avec l'exemple de Falsam !!
si on fait bouffer de l'UTF8 a vos codes, ils se gaufrent !!
la preuve le code a KCC et a BrossDen
Code : Tout sélectionner
Procedure.s ToAscii (str$)
; KCC
Protected out$ = Space(1 + Len(str$) / 2)
PokeS(@out$, str$, -1, #PB_Ascii)
ProcedureReturn out$
EndProcedure
; back to unicode
Procedure.s FromAscii (str$)
ProcedureReturn PeekS(@str$, -1, #PB_Ascii)
EndProcedure
Procedure.s UnicodeVersAnsi(ttx.s)
;BrossDen
txt.s=""
x= @ttx -1
For n=1 To Len(ttx)
txt = txt + Chr(255 & PeekA(x+n))
Next
ProcedureReturn txt.s
EndProcedure
*UTF8 = UTF8("Héhé")
;********* teste KCC ****************************************
t$=Peeks(*UTF8)
texte.s = ToAscii( t$)
MessageRequester("Version travail en Memoire", texte.s+space(255))
texte.s = ToAscii("Héhé")
MessageRequester("Version Travail sur Chaine", texte.s+space(255))
; *************************************************************
; ******************* test BrossDen *******************************
t$=Peeks(*UTF8)
texte.s = UnicodeVersAnsi(t$)
MessageRequester("Version travail en Memoire", texte.s+space(255))
texte.s = UnicodeVersAnsi("Héhé")
MessageRequester("Version Travail sur Chaine", texte.s+space(255))
; ******************************************************************
ps: j'ai la (une) solution , je la donnerai plus tard

Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 20:05
par falsam
La procédure de BrossDen ne fonctionne pas, c'est ce que j'ai tenté de montrer avec mes codes.
Zorro a écrit :ps: j'ai la (une) solution , je la donnerai plus tard
J'ai aussi donné une solution à Blendman.
J'ai stocké un fichier test.txt au format unicode sur un serveur.
La suite à lire sur ce lien :
http://www.purebasic.fr/french/viewtopi ... 34#p194834
Re: Procedure Unicode Vers Ansi
Publié : mer. 30/août/2017 20:20
par Zorro
oui mais tu ne transforme pas l'UTF8 en Ascii !
tu lui permet de lire de l'UTF8 , c'est pas la meme chose

Re: Procedure Unicode Vers Ansi
Publié : jeu. 31/août/2017 14:29
par Kwai chang caine
Zorro a écrit :si on fait bouffer de l'UTF8 a vos codes, ils se gaufrent !!
J'y comprend toujours rien...mais tout d'un coup ça me reviens qu'il me semble que l'unicode que je devais retourner à VB etait de UTF16 comme me l'a expliqué TsSoft

le soit disant "vrai" UNICODE, c'est peut être la raison que ça marche pas...enfin j'dis ça...j'dis rien
http://www.purebasic.fr/english/viewtop ... 65#p511065
Re: Procedure Unicode Vers Ansi
Publié : dim. 03/sept./2017 17:50
par Ollivier
Ah non, ça ne va pas recommencer dans des débats de 10 pages où chacun fout sa sauce, dans un 1er temps, après il y en a qui commencent à dire qu'ils se sont faits piquer leur recette en traitant les autres de pirates, dans un second temps. Lancer de ramponneaux dans un troisième temps.
Puis une fois que tout le monde est bien gaufré, qu'il y a des dents abandonnées, on se rend compte qu'il y a une simple API pour Windows et une simple API pour Linux, et puis c'est marre.