C'est vrai que c'est un concept plus utilisé en POO mais ca pourrait etre pratique.
DD
Surcharge de procedure
Code : Tout sélectionner
Procedure.s my_left(string.s,stringlength)
Protected counter.l
Protected *ptr.l
Protected retstring.s
counter = 0
*ptr = @string
While *ptr
If counter = stringlength
Break
EndIf
retstring + PeekS(*ptr,1)
counter + 1
*ptr + 1
Wend
ProcedureReturn retstring
EndProcedure
Macro Left(string,stringlength)
my_left(string,stringlength)
EndMacro
z.s = Left("purebasic",4)
Debug z
"Qui baise trop bouffe un poil." P. Desproges
tu peux faire comme çà par ex:
ou plus simplement comme çà :
Code : Tout sélectionner
OpenConsole()
Procedure calculateur0()
PrintN("Rien a signaler !")
EndProcedure
Procedure calculateur1(x)
PrintN(Str(x))
EndProcedure
Procedure calculateur2(x, y)
PrintN(Str(x+y))
EndProcedure
Procedure calculateur3(x, y, z)
PrintN(Str(x+y+z))
EndProcedure
Procedure calculateur(x = #PB_Ignore, y = #PB_Ignore, z = #PB_Ignore)
If x = #PB_Ignore : ProcedureReturn calculateur0() : EndIf
If y = #PB_Ignore : ProcedureReturn calculateur1(x) : EndIf
If z = #PB_Ignore : ProcedureReturn calculateur2(x, y) : EndIf
ProcedureReturn calculateur3(x, y, z)
EndProcedure
calculateur(1, 5, 10)
Delay(1000)
Code : Tout sélectionner
OpenConsole()
Procedure calculateur(x = #PB_Ignore, y = #PB_Ignore, z = #PB_Ignore)
If x = #PB_Ignore
ProcedureReturn PrintN("RAS")
EndIf
If y = #PB_Ignore
ProcedureReturn PrintN(Str(x))
EndIf
If z = #PB_Ignore
ProcedureReturn PrintN(Str(x+y))
EndIf
ProcedureReturn PrintN(Str(x+y+z))
EndProcedure
calculateur(1, 5, 10)
Delay(1000)
Code : Tout sélectionner
OpenConsole()
Procedure calculateur(x = 0, y = 0, z = 0)
ProcedureReturn PrintN(Str(x+y+z))
EndProcedure
calculateur(1, 5, 10)
Delay(1000)
Dernière modification par Flype le lun. 15/janv./2007 22:26, modifié 2 fois.
Code : Tout sélectionner
Procedure calculateur(x.w,y.w=0,z.w=0)
PrintN(Str(x+y+z))
EndProcedure
OpenConsole()
calculateur(1,2)
Input()
CloseConsole()
Flype est plus rapide que moi