home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource1 / chint / useful24.hnt < prev    next >
Text File  |  1993-10-29  |  3KB  |  77 lines

  1. /***************************************************************************
  2.  
  3.  This useful hint is simply a function that looks for command line parameters
  4.  passed to the program.
  5.  
  6.  The idea is that the parameter should be preceeded with an identifying
  7.  character sequence, (refered to as the switch), that begins with either a
  8.  dash, '-', or a forward slash, '/'.
  9.  
  10.  The search for the "switch is not case sensitive.
  11.  
  12.  If the parameter to be passed needs to have embedded spaces then the command
  13.  line parameter should have the spaces replaced with ASCII character 254, '■'.
  14.  This little block character can be produced by holding down the <Alt> key and
  15.  typing the '2', then the '5' and finally the '4' numbers from the numeric
  16.  keypad then releasing the <Alt> key, (on some older computers it may
  17.  necessary to hold down the <Shift> key as well as the <Alt> key).
  18.  
  19.  If you were to run a program with command line parameters like this:--
  20.  
  21.      MYREP -DIVSIZ -STATEQLD -CRITC
  22.  
  23.  Then in the program, (with respect to DataBoss in the default values for the
  24.  report filter variables), you could get :--
  25.  
  26.               Function call                        Return String
  27.               -----------------------------        -------------
  28.               lookForSwitch(_tts,"-DIV',"***")          SIZ
  29.               lookForSwitch(_tts,"-STATE","***")        QLD
  30.               lookForSwitch(_tts,"-CRIT","C")           C
  31.  
  32. ****************************************************************************)
  33.  
  34.  
  35.  
  36. strptr lookForSwitch(strptr sout, strptr theSwitch, strptr thedefault)
  37. /***************************************************************************/
  38. /* This function searches for command line parameters.                     */
  39. /*                                                                         */
  40. /* Note: If "theSwitch" is not found then "thedefault" will be returned.   */
  41. /*                                                                         */
  42. /* Note: "theSwitch" characters will be removed from the string returned.  */
  43. /*                                                                         */
  44. /* Note: The return string length will be padded/truncated to match the    */
  45. /*       length of "thedefault".                                           */
  46. /***************************************************************************/
  47. {
  48.   int i, len;
  49.   bool foundIt;
  50.   string ts;
  51.  
  52.   foundIt = False;
  53.   len = strlen(theSwitch);
  54.   upper(theSwitch,theSwitch);
  55.   i = 1;
  56.   while (!foundIt && (i <= paramcount())) {
  57.     strcpy(ts,paramstr(i));
  58.     upper(ts,ts);
  59.     if ((ts[0] == '-') || (ts[0] == '/')) {
  60.       ts[1] = theSwitch[1];
  61.       foundIt = (strsearch(ts,theSwitch) == ts);
  62.       if (foundIt) strcopy(ts,ts,len, strlen(ts)-len);
  63.     }
  64.     i++;
  65.   }
  66.   if (!foundIt)
  67.     strcpy(sout,thedefault);
  68.   else {
  69.     for (i=0; i < strlen(ts); i++) {
  70.       if (ts[i] == 254) ts[i] = ' ';               /* character 254 == '■' */
  71.     }
  72.     len = strlen(thedefault);
  73.     strcopy(sout,pad(ts,ts,len,Right),0,len);
  74.   }
  75.   return(sout);
  76. }
  77.