summaryrefslogtreecommitdiff
path: root/rtl/objpas/sysutils/sysstrh.inc
diff options
context:
space:
mode:
authorfpc <fpc@3ad0048d-3df7-0310-abae-a5850022a9f2>2005-05-16 18:37:41 +0000
committerfpc <fpc@3ad0048d-3df7-0310-abae-a5850022a9f2>2005-05-16 18:37:41 +0000
commitf206a9c2b1ae1d8727ca27a96d448b61fdb4c766 (patch)
treef28256ff9964c1fc7c0f7fb00891268a117b745d /rtl/objpas/sysutils/sysstrh.inc
downloadfpc-f206a9c2b1ae1d8727ca27a96d448b61fdb4c766.tar.gz
initial import
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@1 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/objpas/sysutils/sysstrh.inc')
-rw-r--r--rtl/objpas/sysutils/sysstrh.inc229
1 files changed, 229 insertions, 0 deletions
diff --git a/rtl/objpas/sysutils/sysstrh.inc b/rtl/objpas/sysutils/sysstrh.inc
new file mode 100644
index 0000000000..1b775bce69
--- /dev/null
+++ b/rtl/objpas/sysutils/sysstrh.inc
@@ -0,0 +1,229 @@
+{
+ *********************************************************************
+ $Id: sysstrh.inc,v 1.18 2005/04/28 09:15:44 florian Exp $
+ Copyright (C) 1997, 1998 Gertjan Schouten
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *********************************************************************
+
+ System Utilities For Free Pascal
+}
+
+{==============================================================================}
+{ standard functions }
+{==============================================================================}
+
+type
+ PString = ^String;
+
+ { For FloatToText }
+ TFloatFormat = (ffGeneral, ffExponent, ffFixed, ffNumber, ffCurrency);
+ TFloatValue = (fvExtended, fvCurrency, fvSingle, fvReal, fvDouble, fvComp);
+ TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
+
+ TFloatRec = Record
+ Exponent: Integer;
+ Negative: Boolean;
+ Digits: Array[0..18] Of Char;
+ End;
+
+const
+ { For floattodatetime }
+ MinDateTime: TDateTime = -657434.0; { 01/01/0100 12:00:00.000 AM }
+ MaxDateTime: TDateTime = 2958465.99999; { 12/31/9999 11:59:59.999 PM }
+
+{$ifndef VER1_0}
+{$if defined(FPC_HAS_TYPE_EXTENDED) or defined(FPC_HAS_TYPE_FLOAT128)}
+ MinCurrency: Currency = -922337203685477.5807;
+ MaxCurrency: Currency = 922337203685477.5807;
+{$else}
+ MinCurrency: Currency = -922337203685477.0000;
+ MaxCurrency: Currency = 922337203685477.0000;
+{$endif}
+{$endif VER1_0}
+
+Type
+ TTextLineBreakStyle = (tlbsLF, tlbsCRLF,tlbsCR); // Must move to system unit, and add Mac tlbsCR too ?
+
+Const
+ DefaultTextLineBreakStyle: TTextLineBreakStyle =
+ {$ifdef unix} tlbsLF {$else} {$ifdef macos} tlbsCR {$else} tlbsCRLF {$endif} {$endif} ;
+
+
+Const
+ LeadBytes: set of Char = [];
+ EmptyStr : string = '';
+ NullStr : PString = @EmptyStr;
+
+{$IFDEF VIRTUALPASCAL}
+ EmptyWideStr : AnsiString = '';
+ NullWideStr : PString = @EmptyWideStr;
+{$ELSE}
+ EmptyWideStr : WideString = '';
+// NullWideStr : PWideString = @EmptyWideStr;
+{$ENDIF}
+
+function NewStr(const S: string): PString;
+procedure DisposeStr(S: PString);
+procedure AssignStr(var P: PString; const S: string);
+procedure AppendStr(var Dest: String; const S: string);
+function UpperCase(const s: string): string;
+function LowerCase(const s: string): string; overload;
+function CompareStr(const S1, S2: string): Integer;
+function CompareMemRange(P1, P2: Pointer; Length: cardinal): integer;
+function CompareMem(P1, P2: Pointer; Length: cardinal): Boolean;
+function CompareText(const S1, S2: string): integer;
+function SameText(const s1,s2:String):Boolean;
+
+function AnsiUpperCase(const s: string): string;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiLowerCase(const s: string): string;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiCompareStr(const S1, S2: string): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiCompareText(const S1, S2: string): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiSameText(const s1,s2:String):Boolean;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiSameStr(const s1,s2:String):Boolean;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiStrComp(S1, S2: PChar): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiStrIComp(S1, S2: PChar): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiStrLComp(S1, S2: PChar; MaxLen: cardinal): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiStrLIComp(S1, S2: PChar; MaxLen: cardinal): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiStrLower(Str: PChar): PChar;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiStrUpper(Str: PChar): PChar;{$ifdef SYSUTILSINLINE}inline;{$endif}
+function AnsiLastChar(const S: string): PChar;
+function AnsiStrLastChar(Str: PChar): PChar;
+
+function Trim(const S: string): string;
+function TrimLeft(const S: string): string;
+function TrimRight(const S: string): string;
+function QuotedStr(const S: string): string;
+function AnsiQuotedStr(const S: string; Quote: char): string;
+function AnsiExtractQuotedStr(var Src: PChar; Quote: Char): string;
+function AdjustLineBreaks(const S: string): string;
+function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle): string;
+function IsValidIdent(const Ident: string): boolean;
+function IntToStr(Value: integer): string;
+{$IFNDEF VIRTUALPASCAL}
+function IntToStr(Value: Int64): string;
+{$ENDIF}
+function IntToStr(Value: QWord): string;
+function IntToHex(Value: integer; Digits: integer): string;
+function IntToHex(Value: Int64; Digits: integer): string;
+function StrToInt(const s: string): integer;
+function TryStrToInt(const s: string; var i : integer) : boolean;
+{$IFNDEF VIRTUALPASCAL}
+function StrToInt64(const s: string): int64;
+function TryStrToInt64(const s: string; var i : int64) : boolean;
+{$ENDIF}
+function StrToIntDef(const S: string; Default: integer): integer;
+{$IFNDEF VIRTUALPASCAL}
+function StrToInt64Def(const S: string; Default: int64): int64;
+{$ENDIF}
+function LoadStr(Ident: integer): string;
+// function FmtLoadStr(Ident: integer; const Args: array of const): string;
+Function Format (Const Fmt : String; const Args : Array of const) : String;
+Function FormatBuf (Var Buffer; BufLen : Cardinal; Const Fmt; fmtLen : Cardinal; Const Args : Array of const) : Cardinal;
+Function StrFmt(Buffer,Fmt : PChar; Const args: Array of const) : Pchar;
+Function StrLFmt(Buffer : PCHar; Maxlen : Cardinal;Fmt : PChar; Const args: Array of const) : Pchar;
+Procedure FmtStr(Var Res: String; Const Fmt : String; Const args: Array of const);
+Function FloatToStrF(Value: Extended; format: TFloatFormat; Precision, Digits: Integer): String;
+Function FloatToStr(Value: Extended): String;
+Function StrToFloat(Const S : String) : Extended;
+Function StrToFloatDef(Const S: String; Const Default: Extended): Extended;
+Function TryStrToFloat(Const S : String; Var Value: Single): Boolean;
+Function TryStrToFloat(Const S : String; Var Value: Double): Boolean;
+{$ifdef FPC_HAS_TYPE_EXTENDED}
+Function TryStrToFloat(Const S : String; Var Value: Extended): Boolean;
+{$endif FPC_HAS_TYPE_EXTENDED}
+Function TextToFloat(Buffer: PChar; Var Value: Extended): Boolean;
+Function TextToFloat(Buffer: PChar; Var Value; ValueType: TFloatValue): Boolean;
+Function FloatToText(Buffer: PChar; Value: Extended; format: TFloatFormat; Precision, Digits: Integer): Longint;
+Function FloatToDateTime (Const Value : Extended) : TDateTime;
+Function FloattoCurr (Const Value : Extended) : Currency;
+function TryFloatToCurr(const Value: Extended; var AResult: Currency): Boolean;
+Function CurrToStr(Value: Currency): string;
+function StrToCurr(const S: string): Currency;
+function TryStrToCurr(const S: string;Var Value : Currency): Boolean;
+function StrToCurrDef(const S: string; Default : Currency): Currency;
+function StrToBool(const S: string): Boolean;
+function BoolToStr(B: Boolean): string;
+function LastDelimiter(const Delimiters, S: string): Integer;
+function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
+Function FloatToTextFmt(Buffer: PChar; Value: Extended; format: PChar): Integer;
+Procedure FloatToDecimal(Var Result: TFloatRec; Value: Extended; Precision, Decimals : integer);
+Function FormatFloat(Const Format : String; Value : Extended) : String;
+Function IsDelimiter(const Delimiters, S: string; Index: Integer): Boolean;
+function FormatCurr(const Format: string; Value: Currency): string;
+
+{// MBCS Functions. No MBCS yet, so mostly these are calls to the regular counterparts.}
+Type
+ TMbcsByteType = (mbSingleByte, mbLeadByte, mbTrailByte);
+
+Function ByteType(const S: string; Index: Integer): TMbcsByteType;
+Function StrByteType(Str: PChar; Index: Cardinal): TMbcsByteType;
+Function ByteToCharLen(const S: string; MaxLen: Integer): Integer;
+Function CharToByteLen(const S: string; MaxLen: Integer): Integer;
+Function ByteToCharIndex(const S: string; Index: Integer): Integer;
+Function StrCharLength(const Str: PChar): Integer;
+
+
+const
+{$ifndef unix}
+ SwitchChars = ['/','-'];
+{$else}
+ SwitchChars = ['-'];
+{$endif}
+
+Type
+ TSysCharSet = Set of char;
+
+Function FindCmdLineSwitch(const Switch: string; const Chars: TSysCharSet;IgnoreCase: Boolean): Boolean;
+Function FindCmdLineSwitch(const Switch: string; IgnoreCase: Boolean): Boolean;
+Function FindCmdLineSwitch(const Switch: string): Boolean;
+
+function WrapText(const Line, BreakStr: string; const BreakChars: TSysCharSet; MaxCol: Integer): string;
+function WrapText(const Line: string; MaxCol: Integer): string;
+
+
+{==============================================================================}
+{ extra functions }
+{==============================================================================}
+
+function LeftStr(const S: string; Count: integer): string;
+function RightStr(const S: string; Count: integer): string;
+function BCDToInt(Value: integer): integer;
+
+{
+ $Log: sysstrh.inc,v $
+ Revision 1.18 2005/04/28 09:15:44 florian
+ + variants: string -> float/int casts
+
+ Revision 1.17 2005/04/26 16:40:51 michael
+ + Added FormatCurr by Uberto Barbini
+
+ Revision 1.16 2005/03/12 14:56:22 florian
+ + added Ansi* routines to widestring manager
+ * made them using OS calls on windows
+
+ Revision 1.15 2005/02/14 17:13:31 peter
+ * truncate log
+
+ Revision 1.14 2005/02/06 09:38:45 florian
+ + StrCharLength infrastructure
+
+ Revision 1.13 2005/01/17 18:38:48 peter
+ * extended overload disabled for powerpc
+
+ Revision 1.12 2005/01/16 17:53:27 michael
+ + Patch from Colin Western to implemenet TryStrToFLoat
+
+}