home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / vrac / homonlib.zip / PAD.BAS < prev    next >
BASIC Source File  |  1995-04-13  |  3KB  |  85 lines

  1. DEFINT A-Z
  2.  
  3. DECLARE FUNCTION PadC$ (orig$, newlen)
  4. DECLARE FUNCTION PadL$ (orig$, newlen)
  5. DECLARE FUNCTION PadR$ (orig$, newlen)
  6. DECLARE FUNCTION PadX$ (orig$, newlen, side, char$)
  7.  
  8. FUNCTION PadC$ (orig$, newlen)
  9.  
  10. PadC$ = PadX$(orig$, newlen, 0, " ")
  11.  
  12. END FUNCTION
  13.  
  14. FUNCTION PadL$ (orig$, newlen)
  15.  
  16. PadL$ = PadX$(orig$, newlen, -1, " ")
  17.  
  18. END FUNCTION
  19.  
  20. FUNCTION PadR$ (orig$, newlen)
  21.  
  22. PadR$ = PadX$(orig$, newlen, 1, " ")
  23.  
  24. END FUNCTION
  25.  
  26. FUNCTION PadX$ (orig$, newlen, side, char$)
  27. '****************************************************************************
  28. 'Pads a string with a specified character on the specified side(s) up to the
  29. ' new length.  A more flexible version of the other "Pad" functions (all of
  30. ' which are merely translated into calls to PadX$() with a space for the pad
  31. ' character!).
  32. '
  33. 'The side argument is expressed like so:  <0 = Left
  34. '                                          0 = Center
  35. '                                         >0 = Right
  36. '
  37. 'Examples: PadX$("Hello!",10,1," ") --> "Hello!    "
  38. '          PadX$("$500",10,-1,"*")  --> "******$500"
  39. '          PadX$("WOW",20,0,"!")    --> "!!!!!!!!WOW!!!!!!!!!"
  40. '
  41. '****************************************************************************
  42.  
  43. IF char$ = "" THEN                 'If char$ is null, default to a space.
  44.      c$ = " "
  45. ELSE
  46.      c$ = char$
  47. END IF
  48.  
  49. l = LEN(orig$)                     'Find length of original.
  50.  
  51. IF l = newlen THEN                 'If already equal to new length, return
  52.      PadX$ = orig$                 'the original.
  53.      EXIT FUNCTION
  54. END IF
  55.  
  56. pad$ = STRING$(newlen, c$)         'Make a string completely of pad chars.
  57.  
  58. SELECT CASE side
  59.      CASE IS < 0                                       'Pad Left
  60.           PadX$ = RIGHT$(pad$ + orig$, newlen)
  61.      CASE IS > 0                                       'Pad Right
  62.           PadX$ = LEFT$(orig$ + pad$, newlen)
  63.      CASE ELSE                                         'Pad Center (default)
  64.           IF l > newlen THEN       'Original length > new length
  65.                c$ = orig$
  66.                DO WHILE l > newlen                'Trim one character off
  67.                     l = l - 1                     'alternating sides until
  68.                     IF l MOD 2 = 0 THEN           'the string equals the
  69.                          c$ = RIGHT$(c$, l)       'new length.
  70.                     ELSE
  71.                          c$ = LEFT$(c$, l)
  72.                     END IF
  73.                LOOP
  74.                PadX$ = c$
  75.           ELSE                     'New length > original length
  76.                diff = newlen - l
  77.                l = diff \ 2
  78.                r = diff - l
  79.                PadX$ = STRING$(l, c$) + orig$ + STRING$(r, c$)
  80.           END IF
  81. END SELECT
  82.  
  83. END FUNCTION
  84.  
  85.