home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / TPDB32 / TPDBSTR.PAS < prev    next >
Pascal/Delphi Source File  |  1991-10-28  |  6KB  |  215 lines

  1. unit TPDBStr;
  2.  
  3.                            (***********************************)
  4.                            (*               TPDB              *)
  5.                            (***********************************)
  6.                            (*         Object -Oriented        *)
  7.                            (*     Turbo Pascal 6.0 Units      *)
  8.                            (*    for Accessing dBASE III      *)
  9.                            (*             files.              *)
  10.                            (*        Copyright 1991           *)
  11.                            (*          Brian Corll            *)
  12.                            (*       All Rights Reserved       *)
  13.                            (*     dBASE is a registered       *)
  14.                            (* trademark of Ashton-Tate, Inc.  *)
  15.                            (*   Version 3.20  October, 1991   *)
  16.                            (***********************************)
  17.                            (*   Portions Copyright 1984,1991  *)
  18.                            (*    Borland International Corp.  *)
  19.                            (***********************************)
  20.  
  21. interface
  22.  
  23. const
  24. {Tables for translating foreign characters into English
  25.     characters during sorting and indexing.}
  26.     ForTable = 'ÇüéâäàåçêëèïîìÄÅÉæÆôöòùÿÖ܃íóúñÑ';
  27.     EngTable = 'CueaaaaceeeiiiAAEefooouyOUfiounN';
  28.  
  29. type
  30.     TslTable = string;
  31.     DBKey = string [254];
  32.  
  33. function For2Eng(StrToConvert: string; TslTable1, TslTable2: TslTable): DBKey;
  34. {Translates any string using a specified translation table.
  35.     Intended for use with ForTable and EngTable, declared above, for
  36.     translating extended ASCII characters to normal alphabetic characters
  37.     for indexin and sorting, but will work with any user-defined
  38.     translation tables.}
  39.  
  40. function Substr(BigStr: string; Start, Len: byte): string;
  41. {Same as dBASE's Substr function.}
  42.  
  43. function ReverseStr(StrToReverse: string): string;
  44. {Reverses the order of characters in a string.}
  45.  
  46. function JustL(InpStr: string; FieldLen: integer): string;
  47. {Left justify a string.}
  48.  
  49. function Lower(InpStr: string): string;
  50.  
  51. function LTrim(InpStr: string): string;
  52. {Trim leading blanks from a string.}
  53.  
  54. function PadL(InpStr: string; FieldLen: integer): string;
  55. {Pad a string with blanks on the left.}
  56.  
  57. function PadR(InpStr: string; FieldLen: integer): string;
  58. {Pad a string with blanks on the right.}
  59.  
  60. function Replicate(Ch: char; Count: word): string;
  61. {Create a string of a specified number of a character.}
  62.  
  63. function RTrim(InpStr: string): string;
  64. {Trim trailing blanks from a string.}
  65.  
  66.  
  67. function Upper(InpStr: string): string;
  68. {Convert a string to upper case.}
  69.  
  70. implementation
  71. {$F+}
  72. {All string functions are far calls for use in indexing and sorting.}
  73.  
  74. function For2Eng(StrToConvert: string; TslTable1, TslTable2: TslTable): DBKey;
  75.  
  76. var
  77.     OutStr: string;
  78.     I: byte;
  79.     OutChar: char;
  80.  
  81. procedure ScanTable;
  82.  
  83. var
  84.     J: byte;
  85.  
  86. begin
  87.     for J := 1 to Length(TslTable1) do
  88.         if StrToConvert[I] = TslTable1[J] then begin
  89.             OutChar := TslTable2[J];
  90.             Exit;
  91.         end else
  92.             OutChar := StrToConvert[I];
  93. end;
  94.  
  95. begin
  96.     OutStr := '';
  97.     for I := 1 to Length(StrToConvert) do begin
  98.         ScanTable;
  99.         OutStr := OutStr + OutChar;
  100.     end;
  101.     For2Eng := OutStr;
  102. end;
  103.  
  104. function Substr(BigStr: string; Start, Len: byte): string;
  105.  
  106. var
  107.     OutStr: string;
  108.  
  109. begin
  110.     OutStr := Copy(BigStr, Start, Len);
  111.     Substr := OutStr;
  112. end;
  113.  
  114. function ReverseStr(StrToReverse: string): string;
  115.  
  116. var
  117.     OutStr: string;
  118.     I: byte;
  119.  
  120. begin
  121.     OutStr := '';
  122.     for I := Length(StrToReverse) downto 1 do
  123.         OutStr := OutStr + StrToReverse[I];
  124.     ReverseStr := OutStr;
  125. end;
  126.  
  127.  
  128.  
  129. function JustL(InpStr: string; FieldLen: integer): string;
  130.  
  131. begin
  132.     JustL := PadR(LTrim(InpStr), FieldLen)
  133. end;
  134.  
  135. function LTrim(InpStr: string): string;
  136.  
  137. var
  138.     i, len: integer;
  139.  
  140. begin
  141.     len := Length(InpStr);
  142.     i := 1;
  143.     while (i <= len) and (InpStr[i] = ' ') do
  144.         i := i + 1;
  145.     LTrim := Copy(InpStr, i, len - i + 1)
  146. end;
  147.  
  148.  
  149. function PadL(InpStr: string; FieldLen: integer): string;
  150.  
  151. var
  152.     STemp: string;
  153.     i: integer;
  154.  
  155. begin
  156.     if FieldLen >= SizeOf(InpStr) then
  157.         FieldLen := SizeOf(InpStr) - 1;
  158.     if Length(InpStr) > FieldLen then
  159.         PadL := Copy(InpStr, 1, FieldLen)
  160.     else begin
  161.         STemp := InpStr;
  162.         for i := Length(STemp) + 1 to FieldLen do
  163.             Insert(' ', STemp, 1);
  164.         PadL := STemp
  165.     end
  166. end;                                                        {PadL}
  167.  
  168. function PadR(InpStr: string; FieldLen: integer): string;
  169.  
  170. var
  171.     STemp: string;
  172.     i: integer;
  173.  
  174. begin
  175.     if FieldLen >= SizeOf(InpStr) then
  176.         FieldLen := SizeOf(InpStr) - 1;
  177.     if Length(InpStr) > FieldLen then
  178.         PadR := Copy(InpStr, 1, FieldLen)
  179.     else begin
  180.         STemp := InpStr;
  181.         for i := Length(STemp) + 1 to FieldLen do
  182.             STemp := STemp + ' ';
  183.         PadR := STemp
  184.     end
  185. end;                                                        {PadR}
  186.  
  187. {$L tpdb.obj}
  188.  
  189. function Lower;
  190. external;
  191.  
  192. function Replicate;
  193. external;
  194.  
  195. function Upper;
  196. external;
  197.  
  198.  
  199. function RTrim(InpStr: string): string;
  200.  
  201. var
  202.     i: integer;
  203.  
  204. begin
  205.     i := Length(InpStr);
  206.     while (i >= 1) and (InpStr[i] = ' ') do
  207.         i := i - 1;
  208.     RTrim := Copy(InpStr, 1, i)
  209. end;                                                        {RTrim}
  210.  
  211. {$F-}
  212.  
  213. begin
  214. end.
  215.