November 21, 2017, 03:55:22 PM

Author Topic: [bb] Command line switches by Daz [ 1+ years ago ]  (Read 192 times)

Offline BlitzBot

  • Newbie
  • *
  • Posts: 0
[bb] Command line switches by Daz [ 1+ years ago ]
« on: June 29, 2017, 12:28:43 AM »
Title : Command line switches
Author : Daz
Posted : 1+ years ago

Description : Shows to write a custom command line switch routine

Code :
Code: BlitzBasic
  1. ;Function which examines the command line allowing
  2. ;the use of switches to pass parameters into the
  3. ;program in a similar way DOS programs
  4. ;use parameters
  5.  
  6. ;To test this program
  7. ;Select the Program -> Program Command Line menu option
  8. ;Type something into the text box such as
  9. ;-f filename.txt /u username -p password -d -z
  10.  
  11.  
  12. Dim p$(256)                     ;Global variable used to hold all the parameters passed in from the command line
  13.  
  14. ;Define a list of all the valid command line switches
  15. Global valid_options$ = "abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ"
  16.  
  17. ;Define the type structure used to store the processed switches and parameters
  18. Type clopt
  19.         Field switch$
  20.         Field valid_char%
  21.         Field param$
  22. End Type
  23.  
  24. ;Generic Parameter handler function
  25. Function HandleParameters%()   
  26.         ;Get the command line
  27.         cl$ = CommandLine()
  28.         If Len(Trim(cl$)) = 0 Then
  29.                 Return -1
  30.         End If
  31.        
  32.         ;Get all the parameters into an array for easier processing
  33.         pn = 1
  34.         For counter = 1 To Len(cl$)
  35.                 c$ = Mid$(cl$, counter, 1)
  36.                 If c$ = " " Then
  37.                         pn = pn + 1
  38.                 Else
  39.                         p$(pn) = p$(pn) + c$
  40.                 End If
  41.         Next
  42.        
  43.         ;Work out the parameters
  44.         For counter = 1 To pn
  45.                 ;If the switch starts with a - or a /
  46.                 param$ = ""
  47.                 option$ = ""
  48.                 valid = 0
  49.                 If Left(p$(counter), 1) = "-" Or Left(p$(counter), 1) = "/" Then
  50.                         ;Make sure the swtich character is in the list of valid switches
  51.                         option$ = Mid(p$(counter), 2, 1)
  52.                         If Instr(valid_options$, option$, 1) <> 0 Then                                                         
  53.                                 ;Check to see whether or not there is a parameter for the selected switch
  54.                                 If Left(p$(counter+1), 1) <> "-" And Left(p$(counter+1), 1) <> "/" Then
  55.                                         param$ = p$(counter+1)
  56.                                         counter = counter + 1
  57.                                 Else
  58.                                         param$ = ""
  59.                                 End If
  60.                                 valid = 1
  61.                         Else
  62.                                
  63.                                 valid = 0
  64.                         End If
  65.  
  66.                         ;Add the switch and parameter data to a new entry in the options structure
  67.                         o.clopt = New clopt
  68.                         oswitch$ = option$
  69.                         ovalid_char% = valid
  70.                         oparam$ = param$
  71.                 End If
  72.         Next
  73.        
  74.         Return 0
  75. End Function
  76.  
  77.  
  78. ;---------------------------
  79. ; Example of how to use the function
  80.  
  81. ;Call the function
  82. If HandleParameters() = -1 Then
  83.         Print "No parameters found on the command line"
  84.         Print ""
  85. Else
  86.         Print ""
  87.         q_found = 0
  88.  
  89.         ;Loop through each switch found on the command line
  90.         For o.clopt = Each clopt
  91.                 If ovalid_char% = 0 Then
  92.                         Print oswitch$ + " is an invalid switch"
  93.                 Else
  94.                         Select oswitch$        
  95.                                 Case "f"
  96.                                         Print "f switch found with a value of " + oparam$
  97.                                 Case "u"
  98.                                         Print "u switch found with a value of " + oparam$
  99.                                 Case "p"
  100.                                         Print "p swtich found with a value of " + oparam$
  101.                                         password$ = oparam$
  102.                                 Case "P"
  103.                                         Print "P swtich found with a value of " + oparam$
  104.                                 Case "q"
  105.                                         q_found = 1
  106.                                 Case "d"
  107.                                         Print "d swtich found with a value of " + oparam$
  108.                         End Select
  109.                 End If
  110.         Next
  111.  
  112.         Print ""
  113.         Print ""
  114.  
  115.         If q_found  = 0 Then
  116.                 Print "The q switch is required"
  117.         End If
  118. End If


Comments : none...