Connaitre le nombre d'arguments (ProgramParameter)
Publié : jeu. 25/août/2005 20:07
comme en C avec l'argc... ce serait assez pratique...
Dri
Dri
Forums PureBasic - Français
http://forums.purebasic.com/french/
Code : Tout sélectionner
Procedure.l GetArguments()
Protected Total.s, Current.s, cpt.l, i.l
Current = ProgramParameter()
While Current <> ""
Total + Current + Chr(9)
cpt + 1
Current = ProgramParameter()
Wend
If cpt = 0
ProcedureReturn 0
EndIf
Dim Args.s(cpt)
For i = 1 To cpt
Args(i - 1) = StringField (Total,i,Chr(9))
Next
ProcedureReturn cpt
EndProcedure
Debug GetArguments()
Debug Args(0)
Debug Args(1)
Code : Tout sélectionner
Procedure.l GetArgC(sep.s)
Shared _arg.s, _sep.s
_sep.s = sep
Repeat
a$ = ProgramParameter()
If a$
_arg + a$ + _sep
Else
Break
EndIf
ForEver
ProcedureReturn CountString(_arg,_sep)
EndProcedure
Procedure.s GetArgV(index.l)
Shared _arg.s, _sep.s
ProcedureReturn StringField(_arg,index,_sep)
EndProcedure
For i=1 To GetArgC(",")
Debug GetArgV(i)
Next
Code : Tout sélectionner
; proposition
If ExamineParameter()
While NextParameter()
Debug GetParameter()
Wend
EndIf
; actuellement
Repeat
a$ = ProgramParameter()
If a$
Debug a$
EndIf
Until a$=""
Code : Tout sélectionner
Procedure.l ExamineParameter()
Structure _ARGS
i.l
c.l
v.s[32]
EndStructure
Shared _arg._ARGS
For i=0 To 32
a$ = ProgramParameter()
If a$
_arg\v[i] = a$
Else
_arg\c = i : Break
EndIf
Next
ProcedureReturn _arg\c
EndProcedure
Procedure.b NextParameter()
Shared _arg._ARGS
_arg\i + 1
If _arg\i < _arg\c
ProcedureReturn #True
EndIf
EndProcedure
Procedure.s GetParameter()
Shared _arg._ARGS
ProcedureReturn _arg\v[_arg\i]
EndProcedure
If ExamineParameter()
While NextParameter()
Debug GetParameter()
Wend
EndIf
Code : Tout sélectionner
Procedure.l GetArgs()
Structure _ARGS
a.l:c.l:v.s[32]
EndStructure
Shared _arg._ARGS
For i=0 To 32
_arg\v[i] = ProgramParameter()
If _arg\v[i] = ""
Break
EndIf
_arg\c = i
Next
_arg\a = 1
ProcedureReturn _arg\c
EndProcedure
Procedure.l GetArgC()
Shared _arg._ARGS
If _arg\a
ProcedureReturn _arg\c
Else
ProcedureReturn GetArgs()
EndIf
EndProcedure
Procedure.s GetArgV(i.l)
Shared _arg._ARGS
ProcedureReturn _arg\v[i]
EndProcedure
For x=0 To GetArgC()
Debug GetArgV(x)
Next
For x=0 To GetArgC()
Debug GetArgV(x)
Next