PureBasic

Forums PureBasic
Nous sommes le Jeu 13/Déc/2018 18:48

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 
Auteur Message
 Sujet du message: TypOf()
MessagePosté: Jeu 10/Sep/2015 17:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6736
Localisation: IDF (Yvelines)
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.
Code:
Procedure Dummy(a)
  Debug TypeOf(a)
EndProcedure

Dummy(12.6)
Dummy(10)
Pas trés interessant .

Par contre j'aurais bien aimé que TypOf("test") par exemple me retourne la valeur #PB_String. Merci Monsieur Fred :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.45 LTS & PB 5.62
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Restez informé Image Pure Basic Francophone Community

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Jeu 10/Sep/2015 19:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2027
Localisation: 50200 Coutances
Bonjour falsam, ça ne marche pas ton truc, car ça sort toujours 21 (#PB_Integer).

il faut faire ceci:
Code:
Macro adapter(variable)
   Select TypeOf(variable)
      Case #PB_Double
         resultat.d = PeekD(@variable)
         
      Case #PB_String
         resultat.d = ValD(PeekS(@variable))
         
   EndSelect
EndMacro

chaine.s = "5.659"
adapter(chaine)
Debug resultat

var_double.d = 59.5613
adapter(var_double)
Debug resultat

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Jeu 10/Sep/2015 21:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6736
Localisation: IDF (Yvelines)
Micoute a écrit:
Bonjour falsam, ça ne marche pas ton truc, car ça sort toujours 21 (#PB_Integer).
Je le sais d'ou mon code que j'ai commenté en disant que ce n'est pas intéressant.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.45 LTS & PB 5.62
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Restez informé Image Pure Basic Francophone Community

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 0:41 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
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 !

Exemple:
Code:
Macro TypeDe(Variable)
  Debug TypeOf(Variable)
EndMacro

MaVariable$ = "Def"
MaVariable = 456

TypeDe(MaVariable$)
TypeDe(MaVariable)
TypeDe("Abc")
TypeDe(123)

Alors comment ont fait dans ces cas précis pour savoir le type du paramètre en entrée hein ? :?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 11:33 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 880
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é.

Mesa.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 13:42 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
Bonjour,

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:

Code:
Macro TypeDe(Variable)
  Debug TypeOf(Variable)
EndMacro

MaVariable$ = "Def"
MaVariable = 456

TypeDe(MaVariable$)
TypeDe(MaVariable)
TypeDe("Abc")
TypeDe(123)


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 !

Merci de ton aide.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 13:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4147
Localisation: Arras, France
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 14:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2027
Localisation: 50200 Coutances
+1 pour Spock.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 16:47 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
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.

Oui, je comprends bien et j'avais compris :)

Voir ce sujet ou Falsam à compris ou je voulais en venir:
viewtopic.php?f=1&t=15458

Exemple;
Code:
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"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 22:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3699
Citation:
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Ven 11/Sep/2015 22:44 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
Si si j'ai bien compris tkt pas ;)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Sam 12/Sep/2015 8:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4147
Localisation: Arras, France
nico a écrit:
Citation:
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Sam 12/Sep/2015 17:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3699
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Dim 13/Sep/2015 23:10 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3221
J'ajouterai que les arguments d'une macro, c'est un ensemble d'actions de copier-coller avant le copier/coller principal de l'ensemble de la macro.

Deux ratissages de code, le pré-processing en 3 étapes:

1) Recherche des données des arguments
2) Occurenciation des données de la macro
3) Remplacement final


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: TypOf()
MessagePosté: Jeu 08/Oct/2015 11:56 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 1873
@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 ;)

Code:
TypeOf("Abc") ; Renverrait par exemple "Chaîne de caractère"
TypeOf(123) ; Renverrait par exemple (suivent la nombre), ici "Ascii" ou alors simplement "Nombre
"


ça permettrait de faire des macro comme :
Code:
Macro PrintC(text)
  if TypeOff(text) = #pb_string
    drawtext(0,0,text)
  else
    drawtext(0,0,str(text))
  endif
EndMacro


Edit :
Youpi, Falsam a fait une macro qui fonctionne plutôt pas mal !
http://www.purebasic.fr/english/viewtop ... 12&t=63241

Merci à lui (encore une fois)

_________________
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye