December 03, 2020, 08:14:06 PM

Author Topic: [bb] Command Line Parser by PantsOn [ 1+ years ago ]  (Read 489 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Command Line Parser by PantsOn [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Command Line Parser
Author : PantsOn
Posted : 1+ years ago

Description : If the command line contains many values or switches, values can now be pulled easily.

See code header for example.


Code :
Code: BlitzBasic
  1. ; commandline scanner
  2. ; ===================
  3. ; Richard Hanson, PantsOn Software
  4. ; code can be used freely
  5.  
  6.  
  7. ; INPUT
  8. ; =====
  9. ; commandline = "/f pic.jpg /o hello.txt"
  10. ;
  11. ; SOURCE
  12. ; ======
  13. ; CMD_Init()
  14. ; Print CMD_param(2)
  15. ; Print CMD_switch("/o")
  16. ; CMD_free()
  17. ; WaitKey
  18. ;
  19. ; OUTPUT
  20. ; ======
  21. ; pic.jpg
  22. ; hello.txt
  23.  
  24.  
  25. Type CMD_typ
  26.         Field index
  27.         Field command
  28.         Field cmdlne$
  29. End Type
  30.  
  31. ; return the value at parameter 'index'
  32. Function CMD_param$(index)
  33.         ; scan each type
  34.         For a.CMD_typ = Each CMD_typ
  35.                 If aindex = index Then Return aCMDlne$
  36.         Next
  37.        
  38.         ; return default if nothing found
  39.         Return ""
  40. End Function
  41.  
  42. ; return value with special 'command$' before
  43. Function CMD_switch$(command$)
  44.         ; find command
  45.         For a.CMD_typ = Each CMD_typ
  46.                 If acmdlne$ = command$ Then tmp = aindex + 1
  47.         Next
  48.        
  49.         ; search for next value
  50.         For a.CMD_typ = Each CMD_typ
  51.                 If aindex = tmp Then Return aCMDlne$
  52.         Next
  53.        
  54.         ; return nothing if nothing set
  55.         Return ""
  56. End Function
  57.  
  58. ; call at start of the util
  59. Function CMD_init()
  60.         ; delete each type
  61.         Delete Each CMD_typ
  62.  
  63.         index = 1
  64.         strng$ = CommandLine()
  65.                
  66.         While strng<>""
  67.                 s = 1
  68.                 While Mid(strng,s,1) = " "
  69.                         s = s + 1
  70.                         If s > Len(strng)
  71.                                 s = -1
  72.                                 Exit
  73.                         EndIf
  74.                 Wend
  75.        
  76.                 If s = -1 Then Exit
  77.                
  78.                 srch$ = " "
  79.                 If Mid(strng,s,1) = Chr(34) Then srch$ = Chr(34)
  80.                  
  81.                 f = s + 1
  82.                 If f > Len(strng)
  83.                         f = s
  84.                 Else
  85.                         While Mid(strng,f,1) <> srch
  86.                                 f = f + 1
  87.                                 If f > Len(strng)
  88.                                         f = Len(strng)
  89.                                         Exit
  90.                                 EndIf
  91.                         Wend
  92.                 EndIf
  93.                 param.CMD_typ = New CMD_typ
  94.                 paramcmdlne = CMD_trim(Mid(strng,s,f - s + 1))
  95.                 If Left(paramcmdlne,1) = "/" Then paramcommand = True
  96.                 paramindex = index
  97.                
  98.                 index = index + 1
  99.                 strng = Right(strng,Len(strng)-f)
  100.         Wend
  101.                
  102. End Function
  103.  
  104. ; use to free all CMD line values
  105. Function CMD_free()
  106.         ; delete each type
  107.         Delete Each CMD_typ
  108. End Function
  109.  
  110. ; used to trim value " and [SPACE]
  111. Function CMD_trim$(strng$)
  112.         If strng = "" Then Return ""
  113.        
  114.         s = 1
  115.         While Mid(strng,s,1) = " " Or Mid(strng,s,1) = Chr(34)
  116.                 s = s + 1
  117.                 If s > Len(strng) Then Return ""
  118.         Wend
  119.  
  120.         f = Len(strng)
  121.         While Mid(strng,f,1) = " " Or Mid(strng,f,1) = Chr(34)
  122.                 f = f - 1
  123.                 If f = 0 Then Return ""
  124.         Wend
  125.        
  126.         Return Mid(strng,s,f - s + 1)
  127. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal