{* * SQLite for Delphi and FreePascal/Lazarus * * This unit contains miscellaneous utility functions * * Copyright 2010-2013 Yury Plashenkov * http://plashenkov.github.com/sqlite/ * * The MIT License (MIT) * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom * the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. *} unit SQLite3Utils; {$IFDEF FPC} {$MODE DELPHI} {$ENDIF} interface function StrToUTF8(const S: WideString): AnsiString; function UTF8ToStr(const S: PAnsiChar; const Len: Integer = -1): WideString; function QuotedStr(const S: WideString): WideString; function FloatToSQLStr(Value: Extended): WideString; implementation uses {$IFNDEF FPC}Windows,{$ENDIF} SysUtils; function StrToUTF8(const S: WideString): AnsiString; begin Result := UTF8Encode(S); end; function UTF8ToStr(const S: PAnsiChar; const Len: Integer): WideString; var UTF8Str: AnsiString; begin if Len < 0 then begin Result := UTF8Decode(S); end else if Len > 0 then begin SetLength(UTF8Str, Len); Move(S^, UTF8Str[1], Len); Result := UTF8Decode(UTF8Str); end else Result := ''; end; function QuotedStr(const S: WideString): WideString; const Quote = #39; var I: Integer; begin Result := S; for I := Length(Result) downto 1 do if Result[I] = Quote then Insert(Quote, Result, I); Result := Quote + Result + Quote; end; function FloatToSQLStr(Value: Extended): WideString; var FS: TFormatSettings; begin {$IFDEF FPC} FS := DefaultFormatSettings; {$ELSE} GetLocaleFormatSettings(GetThreadLocale, FS); {$ENDIF} FS.DecimalSeparator := '.'; Result := FloatToStr(Value, FS); end; end.