Et peut être que certain d'entre vous auront des idées pour l'optimiser voir l'améliorer !
Code : Tout sélectionner
Procedure.s StrFormat(txt.s,mask.s,ForceMask.b=#False)
Result.s=""
Quit=#False
lt.b=Len(txt)+1
lm.b=Len(mask)+1
Repeat
c.s=Mid(mask,lm,1)
If c="#" And lt>0
Result=Mid(txt,lt,1)+Result
lt=lt-1
lm=lm-1
ElseIf c<>"" And lm>0
Result=c+Result
lm=lm-1
Else
lt=lt-1
lm=lm-1
EndIf
Until (ForceMask=#False And lt<1) Or (ForceMask=#True And lm<1 And lt<1)
ProcedureReturn Result
EndProcedure
Debug StrFormat("1250","###,###")
Debug StrFormat("8080000","### ### ### ###")
Debug StrFormat("26122009","##-##-####")
Debug StrFormat(RSet(Str(1250333), 9, "0"),"$### ### ###",#True)