Page 2 sur 2
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 16:02
par falsam
Update : Ajout de #PB_Float
Ollivier a écrit :Debug GetTypeof(10.10) ;Integer (d)
Debug GetTypeof(-10.10) ;Integer (e)
Le problème devrait être résolu.
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 17:06
par Ollivier
Falsam a écrit :Update : Ajout de #PB_Float
Suggestion a écrit :Si tout restait décimal, cela permettrait la possibilité de traiter aussi "Test10".
Est-ce prévu?
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 17:11
par falsam
@Ollivier: Je ne te suis pas.
Si tout restait décimal, cela permettrait la possibilité de traiter aussi "Test10".
Debug GetTypeof("test10") retournera un string
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 18:37
par Ollivier
Falsam a écrit :Je ne te suis pas.
C'est pour savoir si ton code source en 2ème tête de 1ère page, il peut cesser de gesticuler pour la photo...
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 18:54
par falsam
falsam a écrit :C'est pour savoir si ton code source en 2ème tête de 1ère page, il peut cesser de gesticuler pour la photo...
Comme disais ma fille ? Gné ?
Désolé, mais google translate ne traduit pas le langage Ollivier.
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 19:30
par Ollivier
Je vais en faire une de ces guirlandes, moi de son code...
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 19:57
par Micoute
falsam a écrit :Update : Ajout de #PB_Float
Ollivier a écrit :Debug GetTypeof(10.10) ;Integer (d)
Debug GetTypeof(-10.10) ;Integer (e)
Le problème devrait être résolu.
Et bien voilà, on avance !
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 22:41
par falsam
Update: Petite erreur mineure dans le code. le paramètre DecimalCharacter ne sert à rien. Mise à jour effectuée.
http://www.purebasic.fr/french/viewtopi ... 30#p175730
Re: TypeOf() avec un paramétre sans Data Type
Publié : sam. 12/sept./2015 23:48
par nico
C'est vraiment bien pensé, surtout le coup des quotes, cela me fait pensez au débat sur une procédure IsNumeric sur le forum English.
Le GetTypeof(...) de valeur numérique directement inscrite comme GetTypeof(10) m'intrigue; dans quel cas cela pourrait t'il servir puisque c'est le programmeur qui l'écrit et que c'est immuable, dans les macros peut être ?
Re: TypeOf() avec un paramétre sans Data Type
Publié : lun. 14/sept./2015 12:49
par Ollivier
Plus court de 5 lignes, puisque t'es preneur pour plus court. J'avoue que la question de nico est d'un.grand intérêt, à quoi ça sert?
Code : Tout sélectionner
Procedure Chk(A, B, C = 255)
ProcedureReturn Bool((B <= A) And (A <= C) )
EndProcedure
Procedure Check(A$, B, C, D)
If D
E = Chk(Asc(Left(A$, 1) ), B, C)
ProcedureReturn (E * Check(Mid(A$, 2), B, C, D - 1) )
EndIf
ProcedureReturn 1
EndProcedure
Procedure _GetTypeOf(Expr.S, DecimalCharacter)
Y = Bool(Check(Expr, '0', '9', 1) Or (Bool(Abs(Asc(Left(Expr, 1) ) - 44) = 1) ) )
X = Bool(FindString(Expr, Chr('.') ) )
ProcedureReturn (Y * ((X * #PB_Float) + (((X ! 1) * #PB_Integer) ) ) ) + ((Y ! 1) * #PB_String)
EndProcedure
Macro GetTypeOf(Value =, DecimalCharacter ='.')
_GetTypeOf("" + Value, DecimalCharacter)
EndMacro
Debug GetTypeOf("test") ;String
Debug GetTypeOf("10") ;Integer
Debug GetTypeOf("10.10");Float
Debug GetTypeOf(10) ;Integer
Debug GetTypeof(10.10) ;Float
Debug GetTypeof(-10.10) ;Float
Debug GetTypeof("test10") ;String
Re: TypeOf() avec un paramétre sans Data Type
Publié : jeu. 08/oct./2015 12:20
par blendman
salut
Je relance ce sujet, car je cherchais exactement la même chose.
Code : Tout sélectionner
; GetTypeOf(Value)
; Contributor falsam
;
; PB 4.31 -> 4.40
;
Procedure _GetTypeOf(numstr.s)
Protected Result, Pattern.s = "^[-+]?[0-9]*\.?[0-9]+$"
Protected RegEx = CreateRegularExpression(#PB_Any, Pattern)
If RegEx
Result = MatchRegularExpression(RegEx, numstr)
FreeRegularExpression(RegEx)
If result
If CountString(numstr, ".") = 1
ProcedureReturn #PB_Float
Else
ProcedureReturn #PB_Integer
EndIf
Else
ProcedureReturn #PB_String
EndIf
EndIf
EndProcedure
Macro Quote
""
EndMacro
Macro GetTypeOf(Value=)
_GetTypeOf(Quote + Value + Quote)
EndMacro
Procedure PrintC_2(txt$)
; ici, on utilise le txt$, pour l'afficher par exemple
EndProcedure
Macro PrintC(text)
If GetTypeOf(text) = #PB_String
Debug "text"
PrintC_2(text)
Else
Debug"value"
PrintC_2(Str(text))
EndIf
EndMacro
PrintC("salut")
result = 10
PrintC(result)
J'ai testé ce code-ci, mais ça ne marche pas. C'est d'ailleurs logique, mais s'il y a moyen de contourner ça, je suis preneur

.