Procedure Unicode Vers Ansi

Partagez votre expérience de PureBasic avec les autres utilisateurs.
brossden
Messages : 818
Inscription : lun. 26/janv./2004 14:37

Procedure Unicode Vers Ansi

Message 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
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Procedure Unicode Vers Ansi

Message 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é")
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Procedure Unicode Vers Ansi

Message par Micoute »

Bonjour falsam, hélas non, ton exemple ne fonctionne avec aucune version de PureBasic.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Procedure Unicode Vers Ansi

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Procedure Unicode Vers Ansi

Message par Micoute »

Merci Kwai chang caine, ça fonctionne merveilleusement bien.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Procedure Unicode Vers Ansi

Message 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:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Procedure Unicode Vers Ansi

Message par Micoute »

Je dois te remercier quand même, car sans ton intervention, je n'aurais à remercier personne.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Procedure Unicode Vers Ansi

Message 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:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Procedure Unicode Vers Ansi

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Procedure Unicode Vers Ansi

Message 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 :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Procedure Unicode Vers Ansi

Message 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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Procedure Unicode Vers Ansi

Message 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.
Répondre