Cette fonction permet de connaitre le datatype d'une variable. Les variables non typées n'existant pas, je ne vois pas l’intérêt de cette fonction avec PureBasic, étant donné qu'on va tester une variable dont on connait forcément le datatype.
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 !
Ceci me rappel justement un soucis que j'ai eu avec une macro, ou tu résume bien le truc
Dans une macro pas de type définie en entrée et donc t'es coincé pour savoir le type que c'est !
Les fonctions du compilateur comme TypeOf, SizeOf, OffsetOf sont rarement utilisées. Elles sont utiles quand on utilise les api, les structures de façon complexe, un compilateur externe par exemple quand on veut compiler du code d'un microcontrôleur de type PIC ou ATMEL ou autre tout en utilisant l'IDE de PB, etc. Quand on veut faire un mélange de Basic et d'assembleur...
Elles font partie de ces petites instructions qui ne paient pas de mine pour le programmeur amateur (comme moi) mais importante pour un programmeur avancé.
Spock, regarde bien mon code et tu verras que ton code ne marche pas (Enfin si ton code mais pas pour ce que je veux en faite)
Tu regarde bien mon code et tu devrais comprendre
Tu ne comprends pas ?
Aller, je te remet le code ici:
Tu vois bien que j'ai raison et que ces deux paramètre ne marche pas (Les deux dernier)
Si je veux entrer les paramètres tel qu'il le sont ça ne marche pas !
On ne passe pas des variables à une macro, mais des paramètres. C'est complètement différent. Un paramètre pour une macro, c'est du code source.
Il faut bien comprendre qu'une macro n'est pas une procédure. Une macro n'est pas compilée. Une macro est comme le résultat d'un copier/coller de code. Elle sert à clarifier/simplifier/optimiser le code SOURCE, c'est à dire le TEXTE qui va être envoyé au compilateur, et qui sera transformé en programme exécutable.
Ton programme ne fonctionne pas parce que tu donnes à la fonction TypeOf autre chose qu'une variable.
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 !
djes a écrit :On ne passe pas des variables à une macro, mais des paramètres. C'est complètement différent. Un paramètre pour une macro, c'est du code source.
Il faut bien comprendre qu'une macro n'est pas une procédure. Une macro n'est pas compilée. Une macro est comme le résultat d'un copier/coller de code. Elle sert à clarifier/simplifier/optimiser le code SOURCE, c'est à dire le TEXTE qui va être envoyé au compilateur, et qui sera transformé en programme exécutable.
Ton programme ne fonctionne pas parce que tu donnes à la fonction TypeOf autre chose qu'une variable.
TypeOf(#Variable) ; Renvérait par exemple "Constante"
TypeOf(Variable$) ; Renvérait par exemple "Variable String"
TypeOf(Variable.s) ; Renvérait par exemple "Variable String"
TypeOf(Variable.i) ; Renvérait par exemple "Variable Integer"
TypeOf(Variable.f) ; Renvérait par exemple "Variable Float"
TypeOf(Variable.d) ; Renvérait par exemple "Variable Double"
TypeOf("Abc") ; Renvérait par exemple "Chaîne de caractère"
TypeOf(123) ; Renvérait par exemple (suivent la nombre), ici "Ascii" ou alors simplement "Nombre"
On ne passe pas des variables à une macro, mais des paramètres.
Oui mais le paramètre peut être une valeur.
TypeOf n'accepte que des variables et pas les valeurs, logique mais Brayane ne le comprend pas.
Non, pas vraiment, parce que le parser n'a pas encore «traduit» le texte. Nous, on met ce qu'on considère une valeur, mais pour le pré-interpréteur, ce n'est toujours que du code source. Coupons les cheveux en 4 jusqu'au bout lol
Je suis d'accord avec toi, vu du coté PureBasic; le programmeur écrivant la macro doit décider de ce qu'il souhaite faire, a savoir si la substitution de texte servira ou pas à garder le texte (paramètre) comme une variable.
Il sera utile par exemple d'utiliser une macro vu comme une fonction dans le cas où l'on souhaiteras avoir plusieurs valeurs de retour sans passer par des pointeurs.
@Brayanne : je suis d'accord avec toi, ce serait intéressant d'avoir un système pour savoir si la valeur qu'on rentre (dans une macro) est un string, un integer ou autre chose
TypeOf("Abc") ; Renverrait par exemple "Chaîne de caractère"
TypeOf(123) ; Renverrait par exemple (suivent la nombre), ici "Ascii" ou alors simplement "Nombre
"