Constante API traduction en PB [Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Constante API traduction en PB [Résolu]

Message par djes »

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.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Constante API traduction en PB [Résolu]

Message par Kwai chang caine »

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

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Constante API traduction en PB [Résolu]

Message par flaith »

Ben, met tout en Hexa, tu verras, c'est plus sympa ... l'hexa :mrgreen:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Constante API traduction en PB [Résolu]

Message par Kwai chang caine »

:lol: :lol:
Le decimaaaaal ..c'est banaaaaal !!!!
Le numeriiiique ..c'est fantastiiiiique !!!
Le binaaaiire ...c'est terre à terre !!!
Mais l'hexa bien plus sympaaaaaas !!!!
Lalalala !!!!! :D
Image
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Constante API traduction en PB [Résolu]

Message par Kwai chang caine »

Bon c'est pas tout ça...j'ai dansé toute la nuit, mais toujours pas trouvé comment détecter l'UNICODE avec le pointeur :cry:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Constante API traduction en PB [Résolu]

Message par flaith »

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))
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Constante API traduction en PB [Résolu]

Message par djes »

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.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Constante API traduction en PB [Résolu]

Message par Kwai chang caine »

@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 :wink:)

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 :D
Pour que tu vois de toi meme ce qui cloche
Dans les deux cas le MsgBox retourne 3 :cry:

Parce que si toi tu comprend pas...alors imagine moi .... 8O
Ca m'ennerve apres un mois de recherche...j'suis si pres de la fin.... :?

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

Encore merci 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Constante API traduction en PB [Résolu]

Message par Kwai chang caine »

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 8O
Et ceci avec les deux API

DJES a peut etre raison....elles sont bugguer ces API ??? :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Constante API traduction en PB [Résolu]

Message par djes »

Réponse d'un gars qui travaille chez Microsoft : http://blogs.msdn.com/michkap/archive/2 ... 63308.aspx
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Constante API traduction en PB [Résolu]

Message par flaith »

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 8O
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Constante API traduction en PB [Résolu]

Message par flaith »

je m'étais déjà fait ma propre modif dans la DLL :

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
et dans le code test :

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
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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Constante API traduction en PB [Résolu]

Message par Kwai chang caine »

@DJES
Je fais traduire la page et j'essaye de comprendre :wink:

@FLAITH
flaith a écrit :J'ai vu la source du code IsTextUnicode qui appelle en fait RtlIsTextUnicode
Je savais pas que l'on pouvais regarder les sources des API 8O
flaith a écrit :il y a un des check qui vérifie si la longueur est paire ou impaire 8O
Et c'est bien ça ou c'est pas bien ???? :roll:
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 .....:(
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
Je suppose que tu parle de PB la ????? :roll:
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
C'est juste pour etre sur que je me suis pas mal expliqué.
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 :lol:
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 :oops:

Je vais essayer ton code
Merci de ta patience
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Constante API traduction en PB [Résolu]

Message par flaith »

Kwai chang caine a écrit :Je savais pas que l'on pouvais regarder les sources des API 8O
sur le site de winehq (l'"émulateur" windows sous GNU/Linux)
Kwai chang caine a écrit :Je suppose que tu parle de PB la ????? :roll:
jawohl
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
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 :Voila....c'est juste pour etre sur que tu ne travaille pas pour rien.
Je te donne deja bien assez de soucis :oops:
T'inquiète ca m'amuse plutôt, je programme pendant mon travail ici :D
Kwai chang caine a écrit :Je vais essayer ton code
Merci de ta patience
De rien :mrgreen:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Constante API traduction en PB [Résolu]

Message par Kwai chang caine »

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 ?
Bah oui...malgré la daube que c'est ....et le fait qu'il l'ai abandonné comme une vieille chaussette :?
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" :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre