Le problème devrait être résolu.Ollivier a écrit :Debug GetTypeof(10.10) ;Integer (d)
Debug GetTypeof(-10.10) ;Integer (e)
TypeOf() avec un paramétre sans Data Type
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: TypeOf() avec un paramétre sans Data Type
Update : Ajout de #PB_Float
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: TypeOf() avec un paramétre sans Data Type
Falsam a écrit :Update : Ajout de #PB_Float
Est-ce prévu?Suggestion a écrit :Si tout restait décimal, cela permettrait la possibilité de traiter aussi "Test10".
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: TypeOf() avec un paramétre sans Data Type
@Ollivier: Je ne te suis pas.
Debug GetTypeof("test10") retournera un stringSi tout restait décimal, cela permettrait la possibilité de traiter aussi "Test10".
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: TypeOf() avec un paramétre sans Data Type
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...Falsam a écrit :Je ne te suis pas.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: TypeOf() avec un paramétre sans Data Type
Comme disais ma fille ? Gné ?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...

Désolé, mais google translate ne traduit pas le langage Ollivier.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: TypeOf() avec un paramétre sans Data Type
Je vais en faire une de ces guirlandes, moi de son code...
Re: TypeOf() avec un paramétre sans Data Type
Et bien voilà, on avance !falsam a écrit :Update : Ajout de #PB_Float
Le problème devrait être résolu.Ollivier a écrit :Debug GetTypeof(10.10) ;Integer (d)
Debug GetTypeof(-10.10) ;Integer (e)
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 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: TypeOf() avec un paramétre sans Data Type
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

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: TypeOf() avec un paramétre sans Data Type
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 ?
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
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
salut
Je relance ce sujet, car je cherchais exactement la même chose.
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
.
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)

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