Constante API traduction en PB [Résolu]
Re: Constante API traduction en PB [Résolu]
Mais c'est super l'hexa, c'est beaucoup mieux que le décimal pour visualiser la mémoire, puisqu'un qu'un octet peut se lire de façon fixe sur deux caractères; il suffit de savoir ça:
Binaire, Décimal, Hexa
0000, 0, 0
0001, 1, 1
0010, 2, 2
0011, 3, 3
0100, 4, 4
0101, 5, 5
0110, 6, 6
0111, 7, 7
1000, 8, 8
1001, 9, 9
1010, 10, A
1011, 11, B
1100, 12, C
1101, 13, D
1110, 14, E
1111, 15, F
Un ensemble de 4 bits est un quartet; la grande force de l'hexa est d'en faciliter la lecture.
Tu vois ainsi que $FF, c'est 11111111 en binaire ; que $AA, c'est 10101010, etc.
Mais bon j'arrête là, y'a plein de tutos sur le net.
Binaire, Décimal, Hexa
0000, 0, 0
0001, 1, 1
0010, 2, 2
0011, 3, 3
0100, 4, 4
0101, 5, 5
0110, 6, 6
0111, 7, 7
1000, 8, 8
1001, 9, 9
1010, 10, A
1011, 11, B
1100, 12, C
1101, 13, D
1110, 14, E
1111, 15, F
Un ensemble de 4 bits est un quartet; la grande force de l'hexa est d'en faciliter la lecture.
Tu vois ainsi que $FF, c'est 11111111 en binaire ; que $AA, c'est 10101010, etc.
Mais bon j'arrête là, y'a plein de tutos sur le net.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Constante API traduction en PB [Résolu]
Oui oui, j'ai rien contre l'Hexa...c'est juste que le debogueur y donne l'adresse en decimal..et le visionneur de memoire en hexa...ce qui fait que ça m'a obligé a convertir pour comprendre
Ca aurait été bien si le panneau que j'ai mis en photo, avait eu les deux, ou alors au choix pour l'adressage de la memoire...vois tu
Ca aurait été bien si le panneau que j'ai mis en photo, avait eu les deux, ou alors au choix pour l'adressage de la memoire...vois tu

Re: Constante API traduction en PB [Résolu]
Ben, met tout en Hexa, tu verras, c'est plus sympa ... l'hexa 

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Constante API traduction en PB [Résolu]


Le decimaaaaal ..c'est banaaaaal !!!!
Le numeriiiique ..c'est fantastiiiiique !!!
Le binaaaiire ...c'est terre à terre !!!
Mais l'hexa bien plus sympaaaaaas !!!!
Lalalala !!!!!


- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Constante API traduction en PB [Résolu]
Bon c'est pas tout ça...j'ai dansé toute la nuit, mais toujours pas trouvé comment détecter l'UNICODE avec le pointeur 

Re: Constante API traduction en PB [Résolu]
Comprend pas, bref j'ai modifié un peu mon code pour tester si une chaine est en Unicode :
Code : Tout sélectionner
Global BufferSize = 1024
Procedure.i Make_UA(text.s,flag.i=#PB_Ascii)
*str = AllocateMemory(BufferSize)
Select flag
Case #PB_Ascii
text + "Ascii"
Case #PB_Unicode
text + "Unicode"
EndSelect
PokeS(*str, text, -1, flag)
ProcedureReturn *str
EndProcedure
Procedure.i Check_UA(*adr_text)
Protected length.l = MemoryStringLength(*adr_text, #PB_Unicode)
If IsTextUnicode_(*adr_text, length * 2, #Null) ; * 2 obligatoire
;ou: If RtlIsTextUnicode_(*adr_text, length * 2, #Null)
ProcedureReturn #PB_Unicode
Else
ProcedureReturn #PB_Ascii
EndIf
EndProcedure
*adr_unicode = Make_UA("Ceci est un texte en ",#PB_Unicode)
*adr_ascii = Make_UA("Ceci est un texte en ")
Debug PeekS(*adr_unicode, -1, Check_UA(*adr_unicode))
Debug PeekS(*adr_ascii, -1, Check_UA(*adr_ascii))
Re: Constante API traduction en PB [Résolu]
Les deux programmes doivent savoir quel langage ils parlent, et pour ce faire soit le dire l'un à l'autre avant tout échange, soit utiliser systématiquement le même langage.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Constante API traduction en PB [Résolu]
@DJES
Oui DJES je pourrais passer le parametre a chaque envoi...mais bon ça fait encore un truc a penser a chaque appel
Et quand a parler le meme language....ma DLL a des dizaines de fonctions, voir plus, qui fonctionnent en ASCII,
Une fois, j'ai essayé de la compiler en UNICODE et apres c'est plein d'autres qui ne fonctionnaient plus
Donc je prefere la laisser en ASCII, c'est aussi ce qui a de plus simple pour la gestion.
Et pour VB j'ai pas le "ouache"
Si vraiment on ne trouve pas, il me restera le parametre a passer, mais comme je te l'ai dit...c'est pas cool
@FLAITH
Vraiment merci de tous tes efforts.....si tu etais pres de moi...je crois que je t'embrasserais...(En tout bien tout honneur..bien sur
)
Je t'ai préparé un XLS et aussi la DLL et l'exe, tout reduit au maximum, pour qu'il n'y ai que le passage du tableau
Pour que tu vois de toi meme ce qui cloche
Dans les deux cas le MsgBox retourne 3
Parce que si toi tu comprend pas...alors imagine moi ....
Ca m'ennerve apres un mois de recherche...j'suis si pres de la fin....
http://erdsjb.free.fr/PureStorage/Flaith.zip
Encore merci
Oui DJES je pourrais passer le parametre a chaque envoi...mais bon ça fait encore un truc a penser a chaque appel

Et quand a parler le meme language....ma DLL a des dizaines de fonctions, voir plus, qui fonctionnent en ASCII,
Une fois, j'ai essayé de la compiler en UNICODE et apres c'est plein d'autres qui ne fonctionnaient plus

Donc je prefere la laisser en ASCII, c'est aussi ce qui a de plus simple pour la gestion.
Et pour VB j'ai pas le "ouache"

Si vraiment on ne trouve pas, il me restera le parametre a passer, mais comme je te l'ai dit...c'est pas cool

@FLAITH
Vraiment merci de tous tes efforts.....si tu etais pres de moi...je crois que je t'embrasserais...(En tout bien tout honneur..bien sur

Je t'ai préparé un XLS et aussi la DLL et l'exe, tout reduit au maximum, pour qu'il n'y ai que le passage du tableau

Pour que tu vois de toi meme ce qui cloche
Dans les deux cas le MsgBox retourne 3

Parce que si toi tu comprend pas...alors imagine moi ....

Ca m'ennerve apres un mois de recherche...j'suis si pres de la fin....

http://erdsjb.free.fr/PureStorage/Flaith.zip
Encore merci

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Constante API traduction en PB [Résolu]
Je viens de mettre à jour le ZIP
Car en faisant des essais, je me suis rendu compte qu'en remplissant l'element zero des tableaux ça me repondait toujours UNICODE, aussi bien avec PB que VB
Par contre si je les laisse vide toujours ASCII
Et ceci avec les deux API
DJES a peut etre raison....elles sont bugguer ces API ???
Car en faisant des essais, je me suis rendu compte qu'en remplissant l'element zero des tableaux ça me repondait toujours UNICODE, aussi bien avec PB que VB
Par contre si je les laisse vide toujours ASCII

Et ceci avec les deux API
DJES a peut etre raison....elles sont bugguer ces API ???

Re: Constante API traduction en PB [Résolu]
Réponse d'un gars qui travaille chez Microsoft : http://blogs.msdn.com/michkap/archive/2 ... 63308.aspx
Re: Constante API traduction en PB [Résolu]
J'ai vu la source du code IsTextUnicode qui appelle en fait RtlIsTextUnicode
il y a un des check qui vérifie si la longueur est paire ou impaire
il y a un des check qui vérifie si la longueur est paire ou impaire

Re: Constante API traduction en PB [Résolu]
je m'étais déjà fait ma propre modif dans la DLL :
et dans le code test :
Mais aprés quelques tests je viens de remarquer que lorsque je met un texte unicode (par le peek) dans un tableau, le texte est d'office en Ascii (car on a pas compilé en Unicode)
Si on compile en Unicode, il faut revoir tout le programme car la fonction de vérification ne fonctionne plus
Il faut donc rester en Ascii, mais trouver une méthode qui insère les données dans le tableau en mode unicode, je vais faire des tests ce soir
Code : Tout sélectionner
ProcedureDLL.l Make_UA(text.s, flag.i=#PB_Ascii)
*str = AllocateMemory(1024)
Select flag
Case #PB_Ascii
text + "Ascii"
Case #PB_Unicode
text + "Unicode"
EndSelect
PokeS(*str, text, -1, flag)
ProcedureReturn *str
EndProcedure
ProcedureDLL.l Check_UA(*adr_text)
Protected length.l = MemoryStringLength(*adr_text, #PB_Unicode)
;If IsTextUnicode_(*adr_text, length * 2, #Null) ; * 2 obligatoire
If RtlIsTextUnicode_(*adr_text, length * 2, #Null)
ProcedureReturn #PB_Unicode
Else
ProcedureReturn #PB_Ascii
EndIf
EndProcedure
Procedure ArrayExe2Local(*Arraystr)
Select Check_UA(*strPtr)
Case #PB_Unicode
msg$ = "Unicode"
Default
msg$ = "Ascii"
EndSelect
MessageRequester("Resultat", msg$)
EndProcedure
ProcedureDLL ChangeNameAndAddLine(*Arraystr)
ArrayExe2Local(*Arraystr)
EndProcedure
Code : Tout sélectionner
Prototype P_ChangeNameAndAddLine(strPtr.l)
Prototype.l P_Make_UA(text.s, flag.i=#PB_Ascii)
Prototype.l P_Check_UA(*adr_text)
; Create original array
Global Dim ArrayString.s(10)
; Modify the array
If OpenLibrary(0, "TestUnicodeAscii.dll")
ChangeNameAndAddLine.P_ChangeNameAndAddLine = GetFunction(0, "ChangeNameAndAddLine")
Make_UA.P_Make_UA = GetFunction(0, "Make_UA")
Check_UA.P_Check_UA = GetFunction(0, "Check_UA")
flag.l = #PB_Unicode
For i.l = 0 To 10
*adr_array = Make_UA("Sentence " + Str(i) + " is ", flag)
ArrayString(i) = PeekS(*adr_array, -1, flag)
Debug PeekS(*adr_array, -1, Check_UA(*adr_array))
Next
ChangeNameAndAddLine(@ArrayString())
CloseLibrary(0)
EndIf
Si on compile en Unicode, il faut revoir tout le programme car la fonction de vérification ne fonctionne plus

Il faut donc rester en Ascii, mais trouver une méthode qui insère les données dans le tableau en mode unicode, je vais faire des tests ce soir
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Constante API traduction en PB [Résolu]
@DJES
Je fais traduire la page et j'essaye de comprendre
@FLAITH

Ou la la ...a voir tes gros yeux, les memes gros yeux que me faisait ma tatan marie, quand j'etais pas sage,...... c'est que c'est pas bien ..
(
Ce que je veux c'est que PB soit en ASCII, c'est a dire comme il est par defaut.....
Vu que je suis pas chinois et que j'arrive a faire des textes super long avec seulement 26 caracteres, j'ai pas besoin d'un alphabet de milliers de signe
En fait je me passerais bien de l'UNICODE si VB me forçait pas a passer par lui
Ce que je voudrais si c'est possible, c'est que comme VB envoie en UNICODE et bien la DLL repere que c'est de l'unicode et utilise le PeekS UNICODE
Et quand c'est PB, il envoie comme dab en ASCII et la DLL repere que c'est de l'ASCII et utilise le PeekS ASCII
Voila....c'est juste pour etre sur que tu ne travaille pas pour rien.
Je te donne deja bien assez de soucis
Je vais essayer ton code
Merci de ta patience
Je fais traduire la page et j'essaye de comprendre

@FLAITH
Je savais pas que l'on pouvais regarder les sources des APIflaith a écrit :J'ai vu la source du code IsTextUnicode qui appelle en fait RtlIsTextUnicode

Et c'est bien ça ou c'est pas bien ????flaith a écrit :il y a un des check qui vérifie si la longueur est paire ou impaire

Ou la la ...a voir tes gros yeux, les memes gros yeux que me faisait ma tatan marie, quand j'etais pas sage,...... c'est que c'est pas bien ..

Je suppose que tu parle de PB la ?????Mais aprés quelques tests je viens de remarquer que lorsque je met un texte unicode (par le peek) dans un tableau, le texte est d'office en Ascii (car on a pas compilé en Unicode)
Si on compile en Unicode, il faut revoir tout le programme car la fonction de vérification ne fonctionne plus

C'est juste pour etre sur que je me suis pas mal expliqué.Il faut donc rester en Ascii, mais trouver une méthode qui insère les données dans le tableau en mode unicode, je vais faire des tests ce soir
Ce que je veux c'est que PB soit en ASCII, c'est a dire comme il est par defaut.....
Vu que je suis pas chinois et que j'arrive a faire des textes super long avec seulement 26 caracteres, j'ai pas besoin d'un alphabet de milliers de signe

En fait je me passerais bien de l'UNICODE si VB me forçait pas a passer par lui

Ce que je voudrais si c'est possible, c'est que comme VB envoie en UNICODE et bien la DLL repere que c'est de l'unicode et utilise le PeekS UNICODE
Et quand c'est PB, il envoie comme dab en ASCII et la DLL repere que c'est de l'ASCII et utilise le PeekS ASCII
Voila....c'est juste pour etre sur que tu ne travaille pas pour rien.
Je te donne deja bien assez de soucis

Je vais essayer ton code
Merci de ta patience
Re: Constante API traduction en PB [Résolu]
sur le site de winehq (l'"émulateur" windows sous GNU/Linux)Kwai chang caine a écrit :Je savais pas que l'on pouvais regarder les sources des API![]()
jawohlKwai chang caine a écrit :Je suppose que tu parle de PB la ?????![]()
j'ai bien saisi le truc, mais comme j'ai pas vb faut bien tester avec PB, quoique on peut avoir VB 6 en téléchargement gratuit quelque part ou il est encore payant ?Kwai chang caine a écrit :Ce que je voudrais si c'est possible, c'est que comme VB envoie en UNICODE et bien la DLL repere que c'est de l'unicode et utilise le PeekS UNICODE
Et quand c'est PB, il envoie comme dab en ASCII et la DLL repere que c'est de l'ASCII et utilise le PeekS ASCII
T'inquiète ca m'amuse plutôt, je programme pendant mon travail iciKwai chang caine a écrit :Voila....c'est juste pour etre sur que tu ne travaille pas pour rien.
Je te donne deja bien assez de soucis

De rienKwai chang caine a écrit :Je vais essayer ton code
Merci de ta patience

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Constante API traduction en PB [Résolu]
Bah oui...malgré la daube que c'est ....et le fait qu'il l'ai abandonné comme une vieille chaussettej'ai bien saisi le truc, mais comme j'ai pas vb faut bien tester avec PB, quoique on peut avoir VB 6 en téléchargement gratuit quelque part ou il est encore payant ?

Et ben, il est plus en vente introuvable et sur le marché de l'occase la version en boite, reste autour des 3000 Frs
Un peu cher, pour ce que c'est, je vous l'accorde, mais bon c'est un vieil amour....alors eu egart aux années passées ensemble...je me devais de lui donner une grosse pension suite a notre divorce et ma tromperie avec la belle "PB"
