Code: Select all
<?php
function x3(){
$a=func_get_args();
$ca=count($a);
for($x=0;$x<$ca ;$x++){
echo $a[$x],'<br>';
}
echo '<hr>';
}
x3(1,2,3,4,5);
x3(3,4,5);
x3();
?>

asumming you want a user function x .. Procedure.l x(): ProcedureReturn 123 :EndProcedure
(and similar .s) you can write this kind of automatic managed max 101 parameters your job will be
only to handling parameters inside your defined function
a) define functions
deffns(x)
;....use parameters see example test.pb
endfn
deffns(x)
;....use parameters see example test.pb
fnret "string value ,or put variable"
endfn
deffnl(x)
;....use parameters see example test.pb
endfn
deffnl(x)
;....use parameters see example test.pb
fnret 443545 ;or place here a variable.l you like
endfn
b)parameters : use count_ and add the name of your function,if you need it outside is global
to access each parameter inside a for use prefix p_ and add s (for deffns) or l (for deffnl)
1)deffns
Debug "count_x="+Str(count_x)+" parameters:"
For i=0 To count_x-1
Debug p_s(i)
Next
2)deffnl
Debug "count_x="+Str(count_x)+" parameters:"
For i=0 To count_x-1
Debug p_l(i)
Next
if you do not like 101 parameters and you need less ,let say 50, put n=49 in GENERATE.pb
,run it, click in Debug Output window on Copy all button ,
edit inc.pbi and select inside ;### ... ;### amd ctrl+v /paste over it and save it!
wasn't coded like this if was available something like :macrofor v=1 to whatever : endmacrofor
Enjoy IT!
ps: if Purebasic team want to define a similarity you are PUREfree to implement if you think is a game change!
GENERATE.pb
Code: Select all
n=100
;101 dalmatians,however parameters
;https://www.youtube.com/watch?v=6Hw_yVr3_nE
params_l.s="_"
initparams_l.s="__s"
;null$=Chr(36)+Chr(37)+Chr(38)
;null$="‰|‰"
; null$=Chr(37)+"‰"
; nr=-993717
;null$=#s
Debug "#s="+Chr(34)+Chr(37)+"‰"+Chr(34)
Debug "#l="+Str(-993717)
;Debug Bool(TypeOf(nr)=#PB_Integer)
;#############################
; Procedure x3(_)
; __s(count_x3)
; For i=0 To count_x3-1
; Debug p_l(i)
; Next
; EndProcedure
;#############################
;
; Debug "Macro _(n)"
; Debug "Chr(n)"
; Debug "EndMacro"
Debug "Macro c(n): Bool(n):EndMacro"
params_s.s="_s"
initparams_s.s="__"
;#############################
; Procedure x(_s)
; __(count_x)
; For i=0 To count_x-1
; Debug p_s(i)
; Next
; EndProcedure
;#############################
; Debug "Macro initp_s"
s$="Macro initp_s:Dim p_s.s("+Str(n)+"):"
For i=0 To n
s$=s$+"p_s("+Str(i)+")=p"+Str(i)
If i<>n
s$=s$+":"
EndIf
Next
Debug s$+":EndMacro"
; Debug "EndMacro"
s$="Macro initp_l:Dim p_l("+Str(n)+"):"
For i=0 To n
s$=s$+"p_l("+Str(i)+")=p"+Str(i)
If i<>n
s$=s$+":"
EndIf
Next
Debug s$+":EndMacro"
; Debug "Procedure.l a(a.l,b.l) : If a<>b: ProcedureReturn 1 : EndIf : ProcedureReturn 0 : EndProcedure"
; Debug "Procedure.l b(a.s,b.s) : If a<>b: ProcedureReturn 1 : EndIf : ProcedureReturn 0 : EndProcedure"
Debug "Macro "+params_s
s$=""
For i=0 To n
; s$=s$+"p"+Str(i)+".s="+Chr(34)+"‰|‰"+Chr(34)
s$=s$+"p"+Str(i)+".s="+"#s"
If i<>n
s$=s$+","
EndIf
Next
Debug s$
Debug "EndMacro"
Debug "Macro "+params_l
s$=""
For i=0 To n
s$=s$+"p"+Str(i)+".l=#l";+Str(nr)
If i<>n
s$=s$+","
EndIf
Next
Debug s$
Debug "EndMacro"
Debug "Macro count_s(vv)"
s$="Global vv="
For i=0 To n
; s$=s$+"b(p"+Str(i)+","+Chr(34)+"‰|‰"+Chr(34)+")"
s$=s$+"c(p"+Str(i)+"<>"+"#s"+")"
If i<>n
s$=s$+"+"
EndIf
Next
Debug s$
Debug "EndMacro"
Debug "Macro count_l(vv)"
s$="Global vv="
For i=0 To n
; s$=s$+"a(p"+Str(i)+",-993717)"
; s$=s$+"c(p"+Str(i)+"<>"+Str(nr)+")"
s$=s$+"c(p"+Str(i)+"<>#l)"
If i<>n
s$=s$+"+"
EndIf
Next
Debug s$
Debug "EndMacro"
Debug "Macro "+initparams_s+"(vv)"
Debug " initp_s"
Debug " count_s(vv)"
Debug "EndMacro"
Debug "Macro "+initparams_l+"(vv)"
Debug " initp_l"
Debug " count_l(vv)"
Debug "EndMacro"
Debug "Macro deffnl(name): Procedure.l name(_): __s(count_#name):EndMacro"
Debug "Macro deffns(name): Procedure.s name(_s): __(count_#name):EndMacro"
Debug "Macro endfn:EndProcedure:EndMacro"
Debug "Macro fnret:ProcedureReturn:EndMacro"
inc.pbi
Code: Select all
;###################################################################
;###################################################################
;###################################################################
#s="%‰"
#l=-993717
Macro c(n): Bool(n):EndMacro
Macro initp_s:Dim p_s.s(100):p_s(0)=p0:p_s(1)=p1:p_s(2)=p2:p_s(3)=p3:p_s(4)=p4:p_s(5)=p5:p_s(6)=p6:p_s(7)=p7:p_s(8)=p8:p_s(9)=p9:p_s(10)=p10:p_s(11)=p11:p_s(12)=p12:p_s(13)=p13:p_s(14)=p14:p_s(15)=p15:p_s(16)=p16:p_s(17)=p17:p_s(18)=p18:p_s(19)=p19:p_s(20)=p20:p_s(21)=p21:p_s(22)=p22:p_s(23)=p23:p_s(24)=p24:p_s(25)=p25:p_s(26)=p26:p_s(27)=p27:p_s(28)=p28:p_s(29)=p29:p_s(30)=p30:p_s(31)=p31:p_s(32)=p32:p_s(33)=p33:p_s(34)=p34:p_s(35)=p35:p_s(36)=p36:p_s(37)=p37:p_s(38)=p38:p_s(39)=p39:p_s(40)=p40:p_s(41)=p41:p_s(42)=p42:p_s(43)=p43:p_s(44)=p44:p_s(45)=p45:p_s(46)=p46:p_s(47)=p47:p_s(48)=p48:p_s(49)=p49:p_s(50)=p50:p_s(51)=p51:p_s(52)=p52:p_s(53)=p53:p_s(54)=p54:p_s(55)=p55:p_s(56)=p56:p_s(57)=p57:p_s(58)=p58:p_s(59)=p59:p_s(60)=p60:p_s(61)=p61:p_s(62)=p62:p_s(63)=p63:p_s(64)=p64:p_s(65)=p65:p_s(66)=p66:p_s(67)=p67:p_s(68)=p68:p_s(69)=p69:p_s(70)=p70:p_s(71)=p71:p_s(72)=p72:p_s(73)=p73:p_s(74)=p74:p_s(75)=p75:p_s(76)=p76:p_s(77)=p77:p_s(78)=p78:p_s(79)=p79:p_s(80)=p80:p_s(81)=p81:p_s(82)=p82:p_s(83)=p83:p_s(84)=p84:p_s(85)=p85:p_s(86)=p86:p_s(87)=p87:p_s(88)=p88:p_s(89)=p89:p_s(90)=p90:p_s(91)=p91:p_s(92)=p92:p_s(93)=p93:p_s(94)=p94:p_s(95)=p95:p_s(96)=p96:p_s(97)=p97:p_s(98)=p98:p_s(99)=p99:p_s(100)=p100:EndMacro
Macro initp_l:Dim p_l(100):p_l(0)=p0:p_l(1)=p1:p_l(2)=p2:p_l(3)=p3:p_l(4)=p4:p_l(5)=p5:p_l(6)=p6:p_l(7)=p7:p_l(8)=p8:p_l(9)=p9:p_l(10)=p10:p_l(11)=p11:p_l(12)=p12:p_l(13)=p13:p_l(14)=p14:p_l(15)=p15:p_l(16)=p16:p_l(17)=p17:p_l(18)=p18:p_l(19)=p19:p_l(20)=p20:p_l(21)=p21:p_l(22)=p22:p_l(23)=p23:p_l(24)=p24:p_l(25)=p25:p_l(26)=p26:p_l(27)=p27:p_l(28)=p28:p_l(29)=p29:p_l(30)=p30:p_l(31)=p31:p_l(32)=p32:p_l(33)=p33:p_l(34)=p34:p_l(35)=p35:p_l(36)=p36:p_l(37)=p37:p_l(38)=p38:p_l(39)=p39:p_l(40)=p40:p_l(41)=p41:p_l(42)=p42:p_l(43)=p43:p_l(44)=p44:p_l(45)=p45:p_l(46)=p46:p_l(47)=p47:p_l(48)=p48:p_l(49)=p49:p_l(50)=p50:p_l(51)=p51:p_l(52)=p52:p_l(53)=p53:p_l(54)=p54:p_l(55)=p55:p_l(56)=p56:p_l(57)=p57:p_l(58)=p58:p_l(59)=p59:p_l(60)=p60:p_l(61)=p61:p_l(62)=p62:p_l(63)=p63:p_l(64)=p64:p_l(65)=p65:p_l(66)=p66:p_l(67)=p67:p_l(68)=p68:p_l(69)=p69:p_l(70)=p70:p_l(71)=p71:p_l(72)=p72:p_l(73)=p73:p_l(74)=p74:p_l(75)=p75:p_l(76)=p76:p_l(77)=p77:p_l(78)=p78:p_l(79)=p79:p_l(80)=p80:p_l(81)=p81:p_l(82)=p82:p_l(83)=p83:p_l(84)=p84:p_l(85)=p85:p_l(86)=p86:p_l(87)=p87:p_l(88)=p88:p_l(89)=p89:p_l(90)=p90:p_l(91)=p91:p_l(92)=p92:p_l(93)=p93:p_l(94)=p94:p_l(95)=p95:p_l(96)=p96:p_l(97)=p97:p_l(98)=p98:p_l(99)=p99:p_l(100)=p100:EndMacro
Macro _s
p0.s=#s,p1.s=#s,p2.s=#s,p3.s=#s,p4.s=#s,p5.s=#s,p6.s=#s,p7.s=#s,p8.s=#s,p9.s=#s,p10.s=#s,p11.s=#s,p12.s=#s,p13.s=#s,p14.s=#s,p15.s=#s,p16.s=#s,p17.s=#s,p18.s=#s,p19.s=#s,p20.s=#s,p21.s=#s,p22.s=#s,p23.s=#s,p24.s=#s,p25.s=#s,p26.s=#s,p27.s=#s,p28.s=#s,p29.s=#s,p30.s=#s,p31.s=#s,p32.s=#s,p33.s=#s,p34.s=#s,p35.s=#s,p36.s=#s,p37.s=#s,p38.s=#s,p39.s=#s,p40.s=#s,p41.s=#s,p42.s=#s,p43.s=#s,p44.s=#s,p45.s=#s,p46.s=#s,p47.s=#s,p48.s=#s,p49.s=#s,p50.s=#s,p51.s=#s,p52.s=#s,p53.s=#s,p54.s=#s,p55.s=#s,p56.s=#s,p57.s=#s,p58.s=#s,p59.s=#s,p60.s=#s,p61.s=#s,p62.s=#s,p63.s=#s,p64.s=#s,p65.s=#s,p66.s=#s,p67.s=#s,p68.s=#s,p69.s=#s,p70.s=#s,p71.s=#s,p72.s=#s,p73.s=#s,p74.s=#s,p75.s=#s,p76.s=#s,p77.s=#s,p78.s=#s,p79.s=#s,p80.s=#s,p81.s=#s,p82.s=#s,p83.s=#s,p84.s=#s,p85.s=#s,p86.s=#s,p87.s=#s,p88.s=#s,p89.s=#s,p90.s=#s,p91.s=#s,p92.s=#s,p93.s=#s,p94.s=#s,p95.s=#s,p96.s=#s,p97.s=#s,p98.s=#s,p99.s=#s,p100.s=#s
EndMacro
Macro _
p0.l=#l,p1.l=#l,p2.l=#l,p3.l=#l,p4.l=#l,p5.l=#l,p6.l=#l,p7.l=#l,p8.l=#l,p9.l=#l,p10.l=#l,p11.l=#l,p12.l=#l,p13.l=#l,p14.l=#l,p15.l=#l,p16.l=#l,p17.l=#l,p18.l=#l,p19.l=#l,p20.l=#l,p21.l=#l,p22.l=#l,p23.l=#l,p24.l=#l,p25.l=#l,p26.l=#l,p27.l=#l,p28.l=#l,p29.l=#l,p30.l=#l,p31.l=#l,p32.l=#l,p33.l=#l,p34.l=#l,p35.l=#l,p36.l=#l,p37.l=#l,p38.l=#l,p39.l=#l,p40.l=#l,p41.l=#l,p42.l=#l,p43.l=#l,p44.l=#l,p45.l=#l,p46.l=#l,p47.l=#l,p48.l=#l,p49.l=#l,p50.l=#l,p51.l=#l,p52.l=#l,p53.l=#l,p54.l=#l,p55.l=#l,p56.l=#l,p57.l=#l,p58.l=#l,p59.l=#l,p60.l=#l,p61.l=#l,p62.l=#l,p63.l=#l,p64.l=#l,p65.l=#l,p66.l=#l,p67.l=#l,p68.l=#l,p69.l=#l,p70.l=#l,p71.l=#l,p72.l=#l,p73.l=#l,p74.l=#l,p75.l=#l,p76.l=#l,p77.l=#l,p78.l=#l,p79.l=#l,p80.l=#l,p81.l=#l,p82.l=#l,p83.l=#l,p84.l=#l,p85.l=#l,p86.l=#l,p87.l=#l,p88.l=#l,p89.l=#l,p90.l=#l,p91.l=#l,p92.l=#l,p93.l=#l,p94.l=#l,p95.l=#l,p96.l=#l,p97.l=#l,p98.l=#l,p99.l=#l,p100.l=#l
EndMacro
Macro count_s(vv)
Global vv=c(p0<>#s)+c(p1<>#s)+c(p2<>#s)+c(p3<>#s)+c(p4<>#s)+c(p5<>#s)+c(p6<>#s)+c(p7<>#s)+c(p8<>#s)+c(p9<>#s)+c(p10<>#s)+c(p11<>#s)+c(p12<>#s)+c(p13<>#s)+c(p14<>#s)+c(p15<>#s)+c(p16<>#s)+c(p17<>#s)+c(p18<>#s)+c(p19<>#s)+c(p20<>#s)+c(p21<>#s)+c(p22<>#s)+c(p23<>#s)+c(p24<>#s)+c(p25<>#s)+c(p26<>#s)+c(p27<>#s)+c(p28<>#s)+c(p29<>#s)+c(p30<>#s)+c(p31<>#s)+c(p32<>#s)+c(p33<>#s)+c(p34<>#s)+c(p35<>#s)+c(p36<>#s)+c(p37<>#s)+c(p38<>#s)+c(p39<>#s)+c(p40<>#s)+c(p41<>#s)+c(p42<>#s)+c(p43<>#s)+c(p44<>#s)+c(p45<>#s)+c(p46<>#s)+c(p47<>#s)+c(p48<>#s)+c(p49<>#s)+c(p50<>#s)+c(p51<>#s)+c(p52<>#s)+c(p53<>#s)+c(p54<>#s)+c(p55<>#s)+c(p56<>#s)+c(p57<>#s)+c(p58<>#s)+c(p59<>#s)+c(p60<>#s)+c(p61<>#s)+c(p62<>#s)+c(p63<>#s)+c(p64<>#s)+c(p65<>#s)+c(p66<>#s)+c(p67<>#s)+c(p68<>#s)+c(p69<>#s)+c(p70<>#s)+c(p71<>#s)+c(p72<>#s)+c(p73<>#s)+c(p74<>#s)+c(p75<>#s)+c(p76<>#s)+c(p77<>#s)+c(p78<>#s)+c(p79<>#s)+c(p80<>#s)+c(p81<>#s)+c(p82<>#s)+c(p83<>#s)+c(p84<>#s)+c(p85<>#s)+c(p86<>#s)+c(p87<>#s)+c(p88<>#s)+c(p89<>#s)+c(p90<>#s)+c(p91<>#s)+c(p92<>#s)+c(p93<>#s)+c(p94<>#s)+c(p95<>#s)+c(p96<>#s)+c(p97<>#s)+c(p98<>#s)+c(p99<>#s)+c(p100<>#s)
EndMacro
Macro count_l(vv)
Global vv=c(p0<>#l)+c(p1<>#l)+c(p2<>#l)+c(p3<>#l)+c(p4<>#l)+c(p5<>#l)+c(p6<>#l)+c(p7<>#l)+c(p8<>#l)+c(p9<>#l)+c(p10<>#l)+c(p11<>#l)+c(p12<>#l)+c(p13<>#l)+c(p14<>#l)+c(p15<>#l)+c(p16<>#l)+c(p17<>#l)+c(p18<>#l)+c(p19<>#l)+c(p20<>#l)+c(p21<>#l)+c(p22<>#l)+c(p23<>#l)+c(p24<>#l)+c(p25<>#l)+c(p26<>#l)+c(p27<>#l)+c(p28<>#l)+c(p29<>#l)+c(p30<>#l)+c(p31<>#l)+c(p32<>#l)+c(p33<>#l)+c(p34<>#l)+c(p35<>#l)+c(p36<>#l)+c(p37<>#l)+c(p38<>#l)+c(p39<>#l)+c(p40<>#l)+c(p41<>#l)+c(p42<>#l)+c(p43<>#l)+c(p44<>#l)+c(p45<>#l)+c(p46<>#l)+c(p47<>#l)+c(p48<>#l)+c(p49<>#l)+c(p50<>#l)+c(p51<>#l)+c(p52<>#l)+c(p53<>#l)+c(p54<>#l)+c(p55<>#l)+c(p56<>#l)+c(p57<>#l)+c(p58<>#l)+c(p59<>#l)+c(p60<>#l)+c(p61<>#l)+c(p62<>#l)+c(p63<>#l)+c(p64<>#l)+c(p65<>#l)+c(p66<>#l)+c(p67<>#l)+c(p68<>#l)+c(p69<>#l)+c(p70<>#l)+c(p71<>#l)+c(p72<>#l)+c(p73<>#l)+c(p74<>#l)+c(p75<>#l)+c(p76<>#l)+c(p77<>#l)+c(p78<>#l)+c(p79<>#l)+c(p80<>#l)+c(p81<>#l)+c(p82<>#l)+c(p83<>#l)+c(p84<>#l)+c(p85<>#l)+c(p86<>#l)+c(p87<>#l)+c(p88<>#l)+c(p89<>#l)+c(p90<>#l)+c(p91<>#l)+c(p92<>#l)+c(p93<>#l)+c(p94<>#l)+c(p95<>#l)+c(p96<>#l)+c(p97<>#l)+c(p98<>#l)+c(p99<>#l)+c(p100<>#l)
EndMacro
Macro __(vv)
initp_s
count_s(vv)
EndMacro
Macro __s(vv)
initp_l
count_l(vv)
EndMacro
Macro deffnl(name): Procedure.l name(_): __s(count_#name):EndMacro
Macro deffns(name): Procedure.s name(_s): __(count_#name):EndMacro
Macro endfn:EndProcedure:EndMacro
Macro fnret:ProcedureReturn:EndMacro
;###################################################################
;###################################################################
;###################################################################
and finally test.pb:
Code: Select all
XIncludeFile "inc.pbi"
;fire msg string directly inside console
ImportC "msvcrt.lib"
system(str.p-ascii)
EndImport
;system("setlocal enabledelayedexpansion")
Procedure say(text.s)
system("echo "+text)
EndProcedure
;fire msg string directly inside console
; ^
; |
; |
; if you don't like "say" function replace it in code with debug
; and select this and pres ctrl +b will comment the selection (will add ; before)
;
; Procedure x(_s)
;
; __(count_x)
;
; For i=0 To count_x-1
; Debug p_s(i)
; Next
;
;
; EndProcedure
;
;Procedure x(_s):__(count_x)
deffns(x)
Debug""
Debug "#########start#########"
Debug "count_x="+Str(count_x)+" parameters:"
For i=0 To count_x-1
Debug p_s(i)
Next
Debug " [stop]"
endfn
x("1","2","3")
Debug "count_x="+Str(count_x)
x("test","test2","test3","fggf","dsa")
Debug "count_x="+Str(count_x)
; Procedure.l x3(_)
; __s(count_x3)
;
deffnl(x3)
Debug""
Debug "#########start#########"
Debug "count_x3="+Str(count_x3)+" parameters:"
For i=0 To count_x3-1
Debug p_l(i)
Next
Debug " [stop]"
fnret p2
endfn
x3(1,2,99,5)
Debug "count_x3="+Str(count_x3)
x3()
Debug "count_x3="+Str(count_x3)
deffnl (x4)
Debug""
Debug "#########start#########"
Debug " [stop]"
fnret p0
endfn
Debug x4(2334)
deffnl(x42)
fnret p_l(0)
endfn
Debug x42(2334)
say("count_x="+Str(count_x))
deffnl(x5)
Debug""
Debug "#########start#########"
say( "count_x5="+Str(count_x5)+" parameters:")
For i=0 To count_x5-1
say(Str( p_l(i) )) : Debug p_l(i)
Next
Debug " [stop]"
fnret p2
endfn
Debug x5(7,1,22,105,332)
deffns(x6)
Debug "#########start#########"
Debug "count_x6="+Str(count_x6)+" parameters:"
For i=0 To count_x6-1
Debug p_s(i)
Next
Debug " [stop]"
endfn
Debug x6("a","c","b","e","d")