Unicode pour une partie de source PB

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Unicode pour une partie de source PB

Message par Backup »

win 7 .?

mais je réalise ce matin que ce code va pas plaire a GallyHC
lui il veut pour
RAPIGetCEOSVersionString()

probleme , je n'ai pas cette dll , et j'y connais rien en pocket pc ... :roll:

je viens de comprendre comment utiliser les prototype avec des appels d'API windows

alors les autre systemes ... hum.... :roll: :)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Unicode pour une partie de source PB

Message par GallyHC »

Bonjour,

c'est quoi ce bordel de mal repondre au question lolllllllllllllllll je rigole :). deja le code est bon a prendre on c'est jamais. Sinon en fait je comprend pas trop l'exemple de la doc.

En tout cas merci pour l'aide

GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Unicode pour une partie de source PB

Message par Backup »

GallyHC a écrit :Sinon en fait je comprend pas trop l'exemple de la doc.

GallyHC
tu parle pour les prototypes ?

ben j'avais fait une explcation, qui me semblait assez juste
mais G-rom a sous entendu que c'etait pas ça du tout

malgres cela, je garde cette explication car elle me parait simple :)

(j'ai simplement comparé les prototypes a l'utilisation d'une structure... le principe semblant fonctionner de la meme façon, avec la meme convention d'ecriture...)

je n'ose plus me remettre a cette explication, ne voulant pas , vous transmettre ce qui est peut etre une erreur de point de vue (en tout cas pour G-Rom) de ma part....

c'est pourquoi j'ai effacé le TUTO sur les prototypes que j'avais fais ;)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Unicode pour une partie de source PB

Message par djes »

Le terme prototype correspond bien, on pourrait aussi comparer ça à un patron, un gabarit ou plus simplement un modèle. Ca sert tout simplement à faire reconnaître une fonction externe à PB , avec ses paramètres, le tout correctement typé. Cela permet de déclarer : "la fonction s'appelle comme ça, elle demande ça, et renvoie ça".

Pour reprendre l'exemple de la doc :

Code : Tout sélectionner

; On définit les paramètres de la fonction que l'on 
; voudrait appeler (il faut avoir la documentation de la fonction!). 
; Ce sera une fonction qui renverra un long, qui demandera un long, 
; puis deux chaînes, puis éventuellement un long (sinon pb lui 
; passera automatiquement un 0)

Prototype.l ProtoMessageBox(Fenetre.l, Corps$, Titre$, Options.l = 0) 

; On ouvre la dll qui contient cette fonction

If OpenLibrary(0, "User32.dll") 
   
  ; On crée une variable (qui est en fait une sorte de pointeur), et 
  ; on lui affecte la position de la fonction dans la dll (getfunction 
  ; renvoie l'adresse de la fonction qui porte le nom passé en paramètre). 
  ; Grâce au prototype, PB sait quels paramètres peuvent lui être transmis.
    
  MsgBox.ProtoMessageBox = GetFunction(0, "MessageBoxA") 
  
  ; Le compilateur de PB comprend maintenant qu'il s'agit d'un appel de fonction.

  MsgBox(0, "Hello", "World") 
  
EndIf
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Unicode pour une partie de source PB

Message par Backup »

oui ! ça a l'air clair :)

moi je partais du principe que faire :

Prototype.l ProtoMessageBox(Fenetre.l, Corps$, Titre$, Options.l = 0)

revenais a creer une sorte de structure

structure ProtoMessageBox
Fenetre.l
Corps$
Titre$
Options.l = 0
endstructure

MsgBox.ProtoMessageBox


et qu'ensuite l'appel devenait
MsgBox.ProtoMessageBox = GetFunction(0, "MessageBoxA") ; reviens a synchroniser les champs de la "structure" avec la fonction "MessageBoxA"

et que l'apel
MsgBox(0, "Hello", "World")

revenais a remplir la structure ci dessus, avec les parametres (0, "Hello", "World")

;)

bref je m'en suis fait une image, pas si loin de la réalité finalement

apres tout Fred aurai pu tout aussi bien nous permetre de remplir une structure
de la meme façon :

structure ProtoMessageBox
Fenetre.l
Corps$
Titre$
Options.l = 0
endstructure

MsgBox.ProtoMessageBox

MsgBox(0, "Hello", "World")
ou pour un tableau
(MsgBox(X)(0, "Hello", "World") )
au lieu de

MsgBox\Fenetre.l=0
MsgBox\Corps$="Hello"
MsgBox\Titre$="World"

c'ut été une bonne idée :)
Répondre