I have written several base types written by Delphi

xiaoxiao2021-03-06  45

// 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) atwo [i] dam; end; result: = i; end; class function tstring.getcharnum (Astring: string; achar: char): Integer , VAR i: integer; begin result: = 0; for i: = 1 to length (assenging) do beg if astring [i] = achar dam (result); end;

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.

转载请注明原文地址:https://www.9cbs.com/read-75025.html

New Post(0)