Page 1 sur 1

Surcharge de procedure

Publié : lun. 15/janv./2007 20:41
par dd1971
C'est vrai que c'est un concept plus utilisé en POO mais ca pourrait etre pratique.

DD

Publié : lun. 15/janv./2007 21:11
par KarLKoX

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
Quelque chose comme ça ?

Publié : lun. 15/janv./2007 22:05
par dd1971
Non !

OpenConsole()

Procedure calculateur()
PrintN("Rien a signaler !")
EndProcedure

Procedure calculateur(x.w,y.w) ; ERREUR !
PrintN(str(x+y))
EndProcedure

Procedure calculateur(x.w,y.w,z.w)
PrintN(str(x+y+z))
EndProcedure


calculateur(1,1)

C'était juste une suggetion...

Publié : lun. 15/janv./2007 22:22
par Flype
tu peux faire comme çà par ex:

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)
ou plus simplement comme çà :

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)

Publié : lun. 15/janv./2007 22:24
par comtois

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()
[EDIT]

Flype est plus rapide que moi :)

Publié : lun. 15/janv./2007 22:28
par KarLKoX
:lol: