TypeOf() avec un paramétre sans Data Type

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message 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.
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%
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message 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?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message 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
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%
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message 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...
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message 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é ? :mrgreen:

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%
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message par Ollivier »

Je vais en faire une de ces guirlandes, moi de son code...
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: TypeOf() avec un paramétre sans Data Type

Message 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 !
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 !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message par falsam »

Update: Petite erreur mineure dans le code. le paramètre DecimalCharacter ne sert à rien. Mise à jour effectuée.

:arrow: 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%
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: TypeOf() avec un paramétre sans Data Type

Message 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 ?
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: TypeOf() avec un paramétre sans Data Type

Message 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
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: TypeOf() avec un paramétre sans Data Type

Message 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 ;).
Répondre