// People who are used to Java or C # may be very angry with Delphi, even the basic types, I usually work, I often try to collect some functions, and often do some of my own basic types. Here, it makes them out, if you have an improper, please comment .unit baseclass;
Interface
Uses sysutils, classes, structils, idglobal, math;
TYPE TCHARSET = set of char; var TNORMALCHARSET: TCHARSET = [# 13, # 10, # 32, '.', ',', ';'; type
TString = class private FText: string; public function CharAt (APosition: Integer): Char; // specified position letters function toLowerCase: string; overload; class function toLowerCase (AString: string): string; overload; // lowercase
Function Touppercase: string; overload; class function Touppercase (astring: string): string; overload; // uppercase
Class Function Valueof (Avalue: String): Boolean; OverLoad; Class Function Valueof (Avalue: Boolean): String; Overload;
Class Function Stringin (Avalue: String; Avalues: Array Of String): Boolean;
Class Function Left (Avalue: String; ALENGTH: STRING; ALENGTH: Integer: String;
Class Function DeletePrefix (Avalue: TCHARSET = [# 32]): String; // Remove Prefix Class Function Deletesuffix (Avalue: String; FixedString: Tcharset = [# 32]): String; // Delete Suffix // Class Function CompareString (Avalue1: String; Avalue2: String): Boolean;
Class Function Hashcode (Avalue: String): Integer;
Class Function Lastchar (Avalue: String): CHAR;
Class Function StringReplace (const S, oldpattern, newpattern: string; flags: TreplaceFlags): string; Class Function StringOfchar (CH: CHAR; Count: Integer): String;
Class function setstring (var s: string; buffer: pchar; len: integer): string;
class function GetPy (AStr: string): string; // get the corresponding phonetic class function IsAllChinese (AStr: string): Boolean; class function IsAllEnglish (AStr: string):. Boolean; class function GetFirstWord (AValue: string; var AWord : String; ASEPArator: tcharset): integer; overload;
Class Function GetFirstword (Avalue: String; ASEPArator: String): Integer; overload; // Return value is from the beginning to the length of the document.
Class Function GetAllWord (AValue: String; ASEPArator: String): TstringList; Overload; // Returns all keywords. After using it, please set free; // Note: In the later use, please do not use the function. Please use its overload // getAllWord (Avalue: string; assistist: string; astringlist: tstringlist); class procedure getAllWord (Avalue: string; assistance; string; astringlist: tstrings); overload; // Put all result set Load astringlist;
class procedure GetAllWordWithAll (AValue: string; ASeparator: string; AStringList: TStrings); class function StringToCharSet (AValue: string): TCharSet; class function CharSetToString (AValue: TCharSet): string;
Class Function Updatesence (AoldString: String; // Manage string AUPDATESOURCE: STRING; / / Find word. AUPDATESTRING: STRING; // Replacement document. AsentenceseseParetor: String; // Springs Separator. AWordSeparator: string // document Separator;): String; // Returns the result. / / Return value of 'DBarcode ASC, DNAME DESC', 'DBARCODE', '', ',', '' is // 'DNAME DESC';
Class Function Deleterepeat (AoldString: String; // To process character aveleteString: char; // To delete characters arepeat: char): string; // Repeat character class function ifthen (aexpression: boolean; atrue: string; afalse: string) : String; // Returns the corresponding string according to the value of the expression. Class Function AbsoluteEtorele (AABSOLUTE: STRING; Acurrent: String): String; // Given two files to convert absolute paths into relative paths. Class Function RelateToabsolute (ARELATE: STRING; Acurrent: String): String; Class Function SimilarPosition: Integer;
Class function getcharnum (astring: string; achar: char): integer;
Class Function IndexOf (Astring, Asubstring: String): Integer;
Class Function Zerotoint (Astring: String): Integer; Class Function Zerotofloat (Astring: String): Double;
Class Function Zerotostr (Astring: String): STRING;
Class Function Sametext (Astring, Astring1: String): boolean;
Class Function Reverse (Astring: String): String;
Class Function isvalidip (const s: string): boolean;
Class function fixstring (achar: char; alength: integer): String;
Class Function Stuffstring (const at: string; ASTART, ALENGTH: Cardinal; const asubtext: string: string;
Class Function GetNextString (var SourceString: String; asplitchar: string): string;
// Integer. TINTEGER = Class Class Function INTOSTR (Ainteger: Integer): string; overload; class function INTTOSTR (ainteger: int64): string; overload;
Class function isvalidint (astring: string): boolean; class function isvalidint64 (astring: string): boolean
Class Function Maxint: Integer; Class Function Hashcode (ainteger: integer): Integer
class function IntToBin (AInteger: Cardinal): string; class function IntToHex (AInteger: Integer): string; class function HexToInt (AString: string): Integer; class function MakeSerialNo (AInteger: Integer; ADigit: Integer): string; end;
TFloat = class class function IsValidFloat (AString: string): Boolean; class function MaxDouble: Double; class function MinDouble: Double; class function MaxExtended: Extended; class function MinExtended: Extended;
Class Function Samevalue (Const A, B: SINGLE; EPSILON: SINGLE = 0): Boolean; OverLoad; Class Function Samevalue (Const A, B: Double; Epsilon: Double = 0): Boolean; Overload; Class Function Samevalue (Const A , B: Extended; Epsilon: Extended = 0): Boolean; OVERLOAD;
Class Function FloatTomoney (const value: double; round: bolean = true): string;
TBOOLEAN = Class Class Function Booltostr (Aboolean: Boolean): String; Class Function Strtobool (astring: String): Boolean; // If not 'true' is false; end; importation
{TString} Function getPyindexchar (ACHAR: STRING): Char; Begin Case Word (Achar [1]) SHL 8 Word (Achar [2]) of $ B0A1 .. $ B0C4: Result: = 'A'; $ B0C5. $ B2c0: result: = 'b'; $ b2c1 .. $ b4ed: result: = 'c'; $ b4ee .. $ b6e9: result: = 'd'; $ b6ea .. $ b7a1: result: = ' E '; $ B7A2 .. $ B8c0: Result: =' f '; $ b8c1 .. $ b9fd: result: =' g '; $ b9fe .. $ bbf6: Result: =' h '; $ bbf7 .. BFA5: RESULT: = 'J'; $ bfa6 .. $ C0AB: Result: = 'k'; $ C0AC .. $ C2E7: Result: = 'L'; $ C2E8 .. $ c4c2: result: = 'm' $ C4C3 .. $ C5B5: RESULT: = 'N'; $ C5B6 .. $ C5BD: Result: = 'o'; $ C5BE .. $ c6d9: result: = 'p'; $ C6DA .. $ c8ba: Result: = 'Q'; $ C8BB .. $ C8F5: Result: = 'R'; $ C8F6 .. $ CBF9: Result: = 's'; $ CBFA .. $ cdd9: result: = 't'; $ CDDA .. $ CEF3: RESULT: = 'W'; $ CEF4 .. $ D188: Result: = 'x'; $ d1b9 .. $ d4d0: result: = 'y'; $ d4d1 .. $ d7f9: result: = 'Z'; Else Result: = char (0); end; end; class function tstring.getpy (astr: string): string; var i: integer; begin result: = '; for i: = 1 to Length (Astr) DO Begin
IF BYTYPE (Astr, I) = Mbtrailbyte Ten Result: = Result getPyindexchar (Astr [i - 1] astr [I]) Else IF bytetype (astr, i) = MBSINGLT ASTR [i]; END;
END;
Function Tstring.Charat (aposition: integer): char; begin result: = fText [APSITION];
Class Function Tstring.Charsettostring (Avalue: tcharset): String; Begin
END;
class function TString.CompareString (AValue1, AValue2: string): Boolean; begin Result: = UpperCase (AValue1) = UpperCase (AValue2); end; class function TString.DeletePrefix (AValue: string; FixedString: TCharSet): string; begin while System.Length> 0 Do Begin if Avalue [1] in FixedString The Delete (Avalue, 1, 1) Else Break; End; Result: = AVALUE;
class function TString.GetFirstWord (AValue: string; var AWord: string; ASeparator: TCharSet): Integer; var tmpStr: string; tmpPos: Integer; begin tmpStr: = DeleteSuffix (AValue, ASeparator); tmpStr: = DeletePrefix (AValue, ASeparator );
Result: = Length (Avalue) - Length (Tmpstr); {if Length (tmpstr) = 0 dam;
IF (tmpstr [1] = '') and (tmpstr [2] = '' ') THEN BEGIN for TMPPOS: = 3 to Length (tmpstr) Do Begin if Tmpstr [TMPPOS] in [' ''] Then Break; end;
IF TMPOS> 3 THEN TMPPOS: = TMPOS 2;} for tmpos: = 1 to length (tmpstr) Do Begin if Tmpstr [TMPPOS] IN ASEPARATOR THEN BREAK;
TMPPOS: = TMPOS -1;
// {TODO: -OGHS repair the last parameter parsing is incorrect} IF (tmpos = 0) AND (Avalue <> ') THENTMPPOS: = Length (Avalue);
AWORD: = Copy (Avalue, Result 1, TMPOS);
RESULT: = Result TMPOS;
Class Function Tstring.hashcode (Avalue: integer; tmpvalue: integer; begin tmpvalue: = 0; for i: = 1 to system.length (avalue) do beg, tmpValue: = 3 * TmpValue ORD (Avalue [i]); end; result: = tmpValue;
Class Function Tstring.isallChinese (astr: string): Boolean; Var i: integer; begin result: = true; for i: = 1 to length (astr) Do Begin if bytetype (astr, i) = MBSINGLEBYTE THEN BEGIN RESULT: = False; break; end; end; class function tstring.isallenglish (astr: string): boolean; var i: integer; begin result: = true; for i: = 1 to length (astr) Do Begin if bytetype (astr) DO BEGIN IF BYTYPE , I) <> MBSINGLEBYTE THEN BEGIN RESULT: = FALSE; BREAK; END;
Class function tstring.lastchar (Avalue: string): char; begin result: = AVALUE [system.length];
Class function TString.Left (Avalue: String; ALENGTH: INTEGER): String; Begin Result: = COPY (Avalue, 1, Alength);
Class function tstring.right (Avalue: String; alength: integer: = strutils.rightstr (avalue, alength); end;
Class function tstring.setstring (var s: string; buffer: pchar; len: integer): string; begin system.setstring (s, buffer, len); result: = s;
Class function tstring.stringin (avalue: string): boolean; var i: integer; begin result: = false; for i: = low (avalues) To high (avalues) do beg Uppercase (Avalue) = Uppercase (Avalues [i]) The begin result: = true; Break; end; end;
Class function Tstring.StringOfchar (CH: CHAR; Count: integer): string; begin result: = system.stringofchar (ch, count);
Class Function Tstring.StringReplace (const S, oldpattern, newpattern: string; flags: TreplaceFlags): string; begin result: = sysutils.stringReplace (s, oldpattern, newpattern, flags); end;
Class function TString.StringToCharset: tcharset; var i: integer; begin result: = []; for i: = 1 to length (avalue) do begin result: = Result [Avalue [i]]; END End; function tstring.tolowercase: String; Begin Result: = LowerCase (fText);
Function TString.touppercase: String; Begin Result: = Uppercase (fText);
Class function tstring.valueof (avalue: boolean): string; begin if Avalue1 Result: = 'is' else result: ='; end;
Class function TString.Valueof (Avalue: string): boolean; begin result: = stringin (Avalue, ['is', 'yes', 'ok']);
Class function tstring.getfirstword (avalue: string; var aword: string; ass): integer; begin result: = getFirstword (Avalue, AWORD, STRINGTOCHARSET (ASEPARATOR);
class function TString.GetAllWord (AValue, ASeparator: string): TStringList; var tmpList: TStringList; tmpWord: string; begin tmpList: = TStringList.Create; while Length (AValue)> 0 do begin tmpWord: = ''; Delete (AValue , 1, GetFirstWord (Avalue, TmpWord, Aseparator); if TmpWord <> '' THENTMPLIST.ADD (TmpWord) else Break; end; result: = tmplist;
class function TString.UpdateSentence (AOldString, AUpdateSource, AUpdateString, ASentenceSeparator, AWordSeparator: string): string; var tmpSentence: string; tmpWord: string; tmpWord1: string; i: Integer; tmpResult: string; begin // get the first sentence tmpSentence: = AOldString; tmpResult: = ''; while Length (tmpSentence)> 0 do begin i: = GetFirstWord (tmpSentence, tmpWord, ASentenceSeparator); tmpResult: = tmpResult Left (tmpSentence, i - Length (tmpWord)); Delete (tmpSentence, 1, I); if tmpWord <> '' then begin i: = GetFirstWord (tmpWord, tmpWord1, AWordSeparator); tmpResult: = tmpResult Left (tmpWord, i - Length (tmpWord1)); if CompareString (tmpWord1, AUpdateSource) then begin tmpResult: = tmpResult AUpdateString; end else begin tmpResult: = tmpResult tmpWord; end; end; end; tmpResult: = DeletePrefix (tmpResult, [ '', ',']); tmpResult: = DeleteSuffix (tmpResult , ['', ',']); TMPRESULT: = Deleterepeat (TmpResult, ' , ',' '); TmpResult: = deleterepeat (tmpResult,' ','); result: = tmpResult; END;
class function TString.DeleteRepeat (AOldString: string; ADeleteString, ARepeat: Char): string; var I: Integer; tmpfind1: Boolean; begin tmpfind1: = False; for I: = Length (AOldString) downto 1 do begin if tmpfind1 then begin if AOldString [I] = ADeleteString then Delete (AOldString, I, 1) else begin if AOldString [I] = ARepeat then Continue; tmpfind1: = AOldString [I] = ADeleteString; end; end else begin if ADeleteString <> ARepeat then if AOldString [I] = ARepeat then Continue; tmpfind1: = AOldString [I] = ADeleteString end; end; Result: = AOldString; end; class function TString.DeleteSuffix (AValue: string; FixedString: TCharSet): string; begin while System. LENGTH (AVALUE)> 0 Do Begin if Avalue [System.Length (Avalue)] In Fixedstring The Delete (Avalue, System.Length (Avalue), 1) Else Break; end; result: = Avalue;
Class Procedure Tstring.GetAllWord (Avalue, Ases: String; AstringList: Tstrings); var TmpWord: string; begin if astringlist = nil damagelist: = tstringlist.create;
While Length> 0 Do Begin TmpWord: = '; Delete (Avalue, 1, GetFirstword (Avalue, TmpWord, Aseparator); if TmpWord <>' Ten AstringList.Add (TmpWord) else Break; end;
END;
Class function tstring.ifthen (aexpression: boolean; atrue, afclinger): string; begin if aexpression Then Result: = atrue else result: = afalse;
Class Function Tstring.absolute (Aabsolute, Acurrent: String): String; Var Tmpsimilarstring: String; AoldFile: string; i: integer; tmpos: integer; begin // Convert formation ../../a.ini ;///.... If not on the same drive, the process directly returns the absolute path if ExtractFileDrive (AAbsolute) <> ExtractFileDrive (ACurrent) then Result: = AAbsolute else begin tmpSimilarString: = ''; AOldFile:. = AAbsolute; AAbsolute: = ExtractFilePath (AAbsolute); Tmpos: = SimilarPosition (Aabsolute, Acurrent); Delete (Aoldfile, 1, Tmpos - 1); Delete (Acurrent, 1, Tmpos - 1); for i: = 0 to getcharnum (acurrent, '/') -1 do begin tmpSimilarString: = tmpSimilarString '../'; end; Result: = tmpSimilarString AOldFile; end; end; class function TString.RelateToAbsolute (ARelate, ACurrent: string): string; var tmpSimilarString: string; tmpRootCount: Integer; i: INTEGER; Begin if Length> 2 THEN BEGIN IRLATE [2] = ':' The begin result: = arelate;
TMPSIMILARSTRING: = '; TMPROTCOUNT: = 0; While True Do Begin if Leftstr (ARELATE, 3) =' ../ 'Then Begin INC (TMPROTCOT); Delete (ARELATE, 1, 3); ELSE BREAK; END;
TMPSIMILARSTRING: = ReverseString (accentfilepath (acurrent)); for i: = 0 to Tmprootcount Do Begin Delete (Tmpsimilarstring, 1, POS ('/', tmpsimilarstring); end;
Result: = REVERSSSTRING (Tmpsimilarstring) arelate;
Class Function Tstring.SimilarPosition (aone, atwo: string): Integer; Var i: integer; max: integer; begin if longth (aone)
class procedure TString.GetAllWordWithAll (AValue, ASeparator: string; AStringList: TStrings); var tmpI: Integer; tmpPos: Integer; begin if AStringList = nil then AStringList: = TStringList.Create;
TMPPOS: = 0; While Length> 0 Do Begin for Tmpi: = 1 to Length (Avalue) Do Begin Tmpos: = POS (Avalue [Tmpos], ASEPARATOR); if Tmpos> 0 THEN BEGIN AstringList.Add (COPY (Avalue, 1, Tmpos - 1)); AstringList.Add (Copy (Avalue, Tmpos, 1)); Delete (Avalue, 1, TMPOS); Break; End End;
End; // while end;
Class function tstring.tolowercase (astring: string): String; Begin Result: = LowerCase (astring);
Class function tstring.touppercase (astring: string): String; begin result: = Uppercase (astring);
Class function TString.indexof (Astring, Asubstring: String): Integer; Begin Result: = POS (asubstring, astring);
Class function tstring.zerotoint (astring: string): integer; begin if trim (assetring) = '' 'TEN astring: =' 0 ';
Result: = start (astring);
class function TString.ZeroToFloat (AString: string): Double; begin if Trim (AString) = '' then AString: = '0.0'; Result: = StrToFloat (AString); end; class function TString.SameText (AString, AString1: String): Boolean; Begin Result: = SYSUTILS.SAMETEXT (Astring, Astring1);
Class function tstring.reverse (astring: string): string; begin result: = reverseString (astring);
Class Function Tstring.issalidip (const S: String): Boolean; Var J, I: Integer; LTMP: String; Begin Result: = true; ltmp: = trim (s); for i: = 1 to 4 do begin J: = StrtointDef (Fetch (LTMP, '), -1); Result: = Result and (j> -1) AND (j <256); if NOT; END; END;
Class function tstring.zerotostr (astring: string): string; begin if trim (asseter) = '' Ten Res: = '0' Else Result: = astring;
Class function TString.FillString (ACHAR: CHAR; ALENGTH: Integer): String; Var i: integer; begin result: = '; for i: = 1 to a alength do // ipult achar; // forend;
class function TString.StuffString (const AText: string; AStart, ALength: Cardinal; const ASubText: string): string; begin Result: = StrUtils.StuffString (AText, AStart, ALength, ASubText); end;
class function TString.GetNextString (var SourceString: string; ASplitChar: string): string; var tmpPos: Integer; begin tmpPos: = Pos (ASplitChar, SourceString); if tmpPos = 0 then begin Result: = SourceString; SourceString: = '' END ELSE Begin Result: = TSTRING.LEFT (SourceString, TMPPOS - DELETE (SourceString, 1, TMPPOS); END;
{TINTEGER} Class Function TINTEGER.InTostr (ainteger: integer): string; begin result: = sysutils.inTostr (ainteger);
Class Function Tinteger.hashcode (ainteger: integer): integer; begin result: = ainteger;
Class Function TINTEGER.InTtostr (ainteger: int64): String; Begin Result: = SYSUTILS.Integer;
Class Function Tinteger.issalidint (Astring: String): Boolean; Begin Result: = True; Try StrtOINT (Astring); Except Result: = FALSE; END;
Class Function Tinteger.issAvalidint64 (Astring: String): Boolean; Begin Result: = true; Try StrtOINT (Astring); Except Result: = FALSE; END
Class Function Tinteger.Maxint: Integer; Begin Result: = System.Maxint;
Class function tinteger.maxlongint: integer; begin result: = system.maxlongint;
Class Function Tinteger.intTobin (Ainteger: Cardinal): String; Var i: integer; begin setlength (result, 32); for i: = 1 to 32 do beginiff ((Ainteger SHL (I-1)) SHR 31) = 0 Then Result [i]: = '0' else result [i]: = '1';
END;
Class Function Tinteger.intToHex (ainteger: integer): string; begin result: = sysutils.inttohex (ainteger, 0);
Class function tinteger.hextoint (astring: string): integer; begin if tstring.Left (astring, 1) = '$' TEN Result: = start (astring) Else Result: = start ('$' astring); end;
Class Function TINTEGER.MAKSERIALNO (Ainteger, Adigit: Integer): String; var Tmpstr: String; i: integer; begin tmpstr: = '; for i: = 0 to adigit - 1 do // ipstr '0'; End; // for
Result: = formatfloat (Tmpstr, ainteger);
END;
{Tfloat} Class Function Tfloat.floattomoney (const value: trunch): String; Begin // The default uses rounds to END;
Class function tfloat.isvalidfloat (astring: string): boolean; begin result: = true; tryness: = false; end;
Class function tfloat.maxdouble: double; begin result: = 1.7e 308;
Class function tfloat.maxextended: extended; begin result: = 1.1e 4932;
Class function tfloat.Mindouble: double; begin result: = 5.0e-324;
Class function tfloat.minextended: Extended; Begin Result: = 3.4e-4932;
Class Function Tfloat.sameValue (Const A, B: SINGLE; EPSILON: SINGLE): Boolean; Begin Result: = Math.SameValue (A, B, Epsilon);
Class Function Tfloat.sameValue (Const A, B: Double; Epsilon: Double): Boolean; Begin Result: = Math.sameValue (A, B, Epsilon);
Class function tfloat.samevalue (consarch): boolean; begin result: = Math.SameValue (A, B, Epsilon);
{Tboolean}
Class Function TBoolean.Booltostr (Aboolean: Boolean): String; Begin if Aboolean Then Result: = 'true' else result: = 'false';
Class function tboolean.strtobool (astring: string): boolean; begin if uppercase (astring) = 'True' Ten Result: = true else result: = false;
End.