{************************************************************************} { } { Borland Delphi Visual Component Library } { InterBase Express core components } { } { Copyright (c) 1998-2000 Inprise Corporation } { } { InterBase Express is based in part on the product } { Free IB Components, written by Gregory H. Deatz for } { Hoagland, Longo, Moran, Dunst & Doukas Company. } { Free IB Components is used under license. } { } { The contents of this file are subject to the InterBase } { Public License Version 1.0 (the "License"); you may not } { use this file except in compliance with the License. You } { may obtain a copy of the License at http://www.Inprise.com/IPL.html } { Software distributed under the License is distributed on } { an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either } { express or implied. See the License for the specific language } { governing rights and limitations under the License. } { The Original Code was created by InterBase Software Corporation } { and its successors. } { Portions created by Inprise Corporation are Copyright (C) Inprise } { Corporation. All Rights Reserved. } { Contributor(s): Jeff Overcash } { } { IBX For Lazarus (Firebird Express) } { Contributor: Tony Whyman, MWA Software http://www.mwasoftware.co.uk } { Portions created by MWA Software are copyright McCallum Whyman } { Associates Ltd 2011 } { } {************************************************************************} unit IBUtils; {$Mode Delphi} interface uses {$IFDEF WINDOWS } Windows, {$ELSE} unix, {$ENDIF} Classes, SysUtils; const CRLF = #13 + #10; CR = #13; LF = #10; TAB = #9; NULL_TERMINATOR = #0; function Max(n1, n2: Integer): Integer; function Min(n1, n2: Integer): Integer; function RandomString(iLength: Integer): String; function RandomInteger(iLow, iHigh: Integer): Integer; function StripString(st: String; CharsToStrip: String): String; function FormatIdentifier(Dialect: Integer; Value: String): String; function FormatIdentifierValue(Dialect: Integer; Value: String): String; function ExtractIdentifier(Dialect: Integer; Value: String): String; function QuoteIdentifier(Dialect: Integer; Value: String): String; implementation function Max(n1, n2: Integer): Integer; begin if (n1 > n2) then result := n1 else result := n2; end; function Min(n1, n2: Integer): Integer; begin if (n1 < n2) then result := n1 else result := n2; end; function RandomString(iLength: Integer): String; begin result := ''; while Length(result) < iLength do result := result + IntToStr(RandomInteger(0, High(Integer))); if Length(result) > iLength then result := Copy(result, 1, iLength); end; function RandomInteger(iLow, iHigh: Integer): Integer; begin result := Trunc(Random(iHigh - iLow)) + iLow; end; function StripString(st: String; CharsToStrip: String): String; var i: Integer; begin result := ''; for i := 1 to Length(st) do begin if AnsiPos(st[i], CharsToStrip) = 0 then result := result + st[i]; end; end; function FormatIdentifier(Dialect: Integer; Value: String): String; begin Value := Trim(Value); if Dialect = 1 then Value := AnsiUpperCase(Value) else if (Value <> '') and (Value[1] = '"') then Value := '"' + StringReplace (TrimRight(Value), '"', '""', [rfReplaceAll]) + '"' else Value := AnsiUpperCase(Value); Result := Value; end; function FormatIdentifierValue(Dialect: Integer; Value: String): String; begin Value := Trim(Value); if Dialect = 1 then Value := AnsiUpperCase(Value) else begin if (Value <> '') and (Value[1] = '"') then begin Delete(Value, 1, 1); Delete(Value, Length(Value), 1); Value := StringReplace (Value, '""', '"', [rfReplaceAll]); end else Value := AnsiUpperCase(Value); end; Result := Value; end; function ExtractIdentifier(Dialect: Integer; Value: String): String; begin Value := Trim(Value); if Dialect = 1 then Value := AnsiUpperCase(Value) else begin if (Value <> '') and (Value[1] = '"') then begin Delete(Value, 1, 1); Delete(Value, Length(Value), 1); Value := StringReplace (Value, '""', '"', [rfReplaceAll]); end else Value := AnsiUpperCase(Value); end; Result := Value; end; function QuoteIdentifier(Dialect: Integer; Value: String): String; begin if Dialect = 1 then Value := AnsiUpperCase(Trim(Value)) else Value := '"' + Value + '"'; Result := Value; end; end.