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 8O (que je salut bien bas au passage :mrgreen:)
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 8)

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... :wink:
Moi j'suis le serveur....c'est le cuisto qu'il faut remercier en cuisine :D
Moi dans ce domaine, j'sais même pas allumer le gaz :mrgreen:

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 :mrgreen:

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 8) le soit disant "vrai" UNICODE, c'est peut être la raison que ça marche pas...enfin j'dis ça...j'dis rien :oops:
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.