Een Delphi

, touw, touw, touw, een functie incapsulates, heb ik deze kleine serie klassen op basis van qstrings en faststrings, zodat dit soort snelle behandeling van een reeks functies.Trouwens, het verzamelen en het gebruik van deze categorie, je moet faststrings (kun je op de voorpagina een Peter Morris).,,, waarom wil je een string?Hoewel dit soort gebrek aan de exploitant overbelast, ik heb het nodig, en is van mening dat het iemand kan profiteren.,,, bijgewerkt: de toevoeging van gevoelige begint en eindigt, een insect, vaste: links, rechts, snellere uitvoering (het kopiëren van qstrings),,,,,,,,,, imlcommon; eenheid,,, de interface. SysUtils;,,,,,,,,,,,, tcharset = cokes;,,, tstring =, klasse, privé,,,,, fwordseparators AnsiString; buffer:: tcharset;,,,,, de gehele lengte:,,,,,,,, getrefcount:. De functie van getcharacter (,,; index: totaal getal): de functie van de cokes;,,,, getwordseparators:tcharset;,,,,,,,, getaspchar:PChar vormen; de functie van getasinteger: gehele getal;,,,,,,,, getasword: woorden, pakkende;Tel: het gehele getal;,,,.,, SetLength (totaal, waarde, de gehele);,,,., SetCharacter (totaal: het gehele getal;,,, totaal, waarde een);,,,., SetWordSeparators (totaal, waarde, TCharSet);,,,.,,, SetAsPChar (totaal, waarde PChar);,,,., SetAsInteger (totaal, waarde, de gehele);,,,., SetAsWord (totaal, waarde, het woord);,,, beschermde, de functie, FindEx (totaal overzicht, SubString:, touw, CaseSensitive: booleaanse = totaal;,,,,, is een geheel getal, StartPos: = 1, ForwardSearch: booleaanse = totaal;,, waar de gehele):;,,, functie, InternalInteger (, var, variabele: de bestaande geheel getal;, totaal, HighBound, LowBound: geheel getal): booleaanse;,,, functie, InternalWord (totaal overzicht:,, de gehele): een,,,,,,., function ,Left(Count: Integer): ,String,;,, ,function ,Rigth(Count: Integer): ,String,;,, ,function ,Mid(,const ,AStart, ACount: Integer): ,String,;,, ,function ,Uppercase: ,String,;,, ,function ,LowerCase: ,String,;,,, ,function ,IsEmpty: Boolean;,, ,function ,StartsWith(,const ,AString:,String,;,, ,Const ,CaseSensitive: Boolean = False): Boolean;,, ,function ,EndsWith(,const ,AString: ,String,;,, ,const ,CaseSensitive: Boolean = False): Boolean;,, ,function ,Find(,Const ,SubString: ,String,; ,const ,StartPos: Integer = ,1,;,, ,const ,CaseSensitive: Boolean = True): Integer;,, ,function ,FindRev(,Const ,SubString: ,String,; ,const ,StartPos: Integer = -,1,;,, ,const ,CaseSensitive: Boolean = True): Integer;,, ,function ,Contains(,const ,SubString: ,String,;,, ,const ,CaseSensitive: Boolean = True): Boolean;,, ,function ,IsNumber: Boolean;,,, ,function ,Append(,const ,Value: ,String,): ,String,;,, ,function ,Prepend(,const ,Value: ,String,): ,String,;,, ,function ,Remove(,const ,Index, Length: Integer): ,String,;,,, ,procedure ,Truncate(,const ,NewLength: Integer);,, ,procedure ,Fill(,const ,AChar: Char; NewLength: Integer = -,1,);,, ,procedure ,Insert(,const ,Index: Integer; ,const ,AString: ,String,);,,, ,property ,Content: ,String Read ,Buffer ,Write ,Buffer;,, ,property ,RefCount:Integer ,read ,GetRefCount;,, ,property ,Characters[,Const Index,: Integer]: ChAr, lezen, schrijven, getcharacter, setcharacter;,,,,, de standaard eigendom, het woord [, totaal index: integer, string]: lezen, internalword;,,, eigendom, de uitvoering van getallen, lezen, getwordcount;,,, eigendom, lang getallen, lezen en schrijven, de lengte van De lengte van de buffer.,,,,, eigendom, wordseparators:tcharset, lezen, schrijven, getwordseparators, setwordseparators;,,,, eigendom, aspchar:PChar, lezen, schrijven, getaspchar, setaspchar;,,, eigendom, asinteger: integer, lezen, schrijven, getasinteger, setasinteger;,,, eigendom, het zwaard: woorden lezen, schrijven getasword, setasword;,,,,,,,,,,,,,,,,, de uitvoering van het jclstrings} {,,,,,, faststrings;} {tstring,,,,,, tstring. EndsWith (totaal, touw, touw,,,,,,, totaal, onderscheid te maken tussen de omvang booleaanse) schrijven:: Boolean;,,begin,, if ,CaseSensitive ,then,, ,Result := AnsiSameStr(AString, Rigth(System.Length(AString))),, ,else,, ,Result := AnsiSameText(AString,Rigth(System.Length(AString)));,,end,;,,,function ,TString.FindEx(,const ,SubString: ,String,;,, ,const ,CaseSensitive: Boolean; ,const ,StartPos: Integer;,, ,const ,ForwardSearch: Boolean): Integer;,,begin,, ,Result := SmartPos(SubString, Buffer, CaseSensitive, StartPos, ForwardSearch);,,end,;,,,procedure ,TString.Fill(,const ,AChar: Char; NewLength: Integer);,,begin,, if ,(NewLength < ,0,) ,then,, begin,, if ,Length > ,0 ,,then,, ,FillChar(Buffer[,1,], Length, ord(AChar)),, ,else,, ,FillChar(Buffer[,1,],1,, ord(AChar));,, ,end,, else,, begin,, ,SetLength(NewLength);,, FillChar(Buffer[,1,], Length, ord(AChar));,, ,end,;,,end,;,,,function ,TString.Find(,const ,SubString: ,String,; ,const ,StartPos: Integer;,, ,const ,CaseSensitive: Boolean): Integer;,,begin,, ,Result := FindEx(SubString, CaseSensitive, StartPos);,,end,;,,,function ,TString.FindRev(,const ,SubString: ,String,; ,const ,StartPos: Integer;,, ,const ,CaseSensitive: Boolean): Integer;,,var,, ,RealStartPos: Integer;,,begin,, if ,StartPos < ,0 ,,then ,RealStartPos := Length ,else ,RealStartPos := StartPos;,, Result := FindEx(SubString, CaseSensitive, RealStartPos, False);,,end,;,,,function ,TString.GetAsPChar: PChar;,,begin,, ,Result := PChar(Buffer);,,end,;,,,function ,TString.GetCharacter(,const ,Index: Integer): Char;,,begin,, if ,IsEmpty ,or ,(Index > Length) ,then,, ,Result := ,#0,, ,,else,, ,Result := Buffer[Index];,,end,;,,,function ,TString.GetLength: Integer;,,var,, ,P: Pointer;,,begin,, ,Result := ,0,;,, ,if ,Pointer(Buffer) <> ,nil then,, begin,, ,P := Pointer(Integer(Pointer(Buffer)) - ,4,);,, Result := Integer(P^) ,and ,(,not ,,$80000000 ,,shr ,,1,);,, ,end,;,,end,;,,,function ,TString.IsEmpty: Boolean;,,begin,, ,Result := (Length = ,0,);,,end,;,,,function ,TString.Left(Count: Integer): ,String,;,,begin,, if ,Count > Length ,then,, ,Result := Buffer,, ,else begin,, ,System.SetLength(Result, Count);,, Move(Buffer[,1,],Result[,1,],Count);,, ,end,;,,end,;,,,function ,TString.LowerCase: ,String,;,,begin,, ,Result := SysUtils.LowerCase( Buffer );,,end,;,,,function ,TString.Mid(,const ,AStart, ACount: Integer): ,String,;,,begin,, ,Result := Copy(Buffer, AStart, ACount);,,end,;,,,function ,TString.Rigth(Count: Integer): ,String,;,,begin,, if ,Count > Length ,then,, ,Result := ,'',, ,,else begin, , , ,System.SetLength(Result, Count);,, Move(Buffer[Length -(Count-,1,)],Result[,1,],Count);,, ,end,;,,end,;,,,procedure ,TString.SetAsPChar(,const ,Value: PChar);,,begin,, ,Buffer := Value;,,end,;,,,procedure ,TString.SetCharacter(,const ,Index: Integer; ,const ,Value: Char);,,begin,, if not ,IsEmpty ,then,, if ,(Index < Length) ,and ,(Value <> GetCharacter(Index)) ,then,, ,Buffer[Index] := Value;,,end,;,,,procedure ,TString.SetLength(,const ,Value: Integer);,,begin,, ,System.SetLength( Buffer, Value );,,end,;,,,function ,TString.StartsWith(,const ,AString: ,String,;,, ,const ,CaseSensitive: Boolean): Boolean;,,begin,, if ,CaseSensitive ,then,, ,Result := AnsiSameStr(AString, Left(System.Length(AString))),, ,else,, ,Result := AnsiSameText(AString,Left(System.Length(AString)));,,end,;,,,procedure ,TString.Truncate(,const ,NewLength: Integer);,,begin,, ,Length := NewLength;,,end,;,,,function ,TString.Uppercase: ,String,;,,begin,, ,Result := SysUtils.UpperCase( Buffer );,,end,;,,,function ,TString.Contains(,const ,SubString: ,String,;,, ,const ,CaseSensitive: Boolean): Boolean;,,begin,, ,Result := Find(SubString,1,, CaseSensitive) > ,0,;,,end,;,,,procedure ,TString.Insert(,const ,Index: Integer; ,const ,AString: ,String,);,,begin,, ,System.Insert(AString, Buffer, Index);,,end,;,,,function ,TString.Append(,const ,Value: ,String,): ,String,;,,begin,, ,Insert(Length, Value);,, Result := Buffer;,,end,;,,,function ,TString.Prepend(,const ,Value: ,String,): ,String,;,,begin,, ,Insert(,1,, Value);,, Result := Buffer;,,end,;,,,function ,TString.Remove(,const ,Index, Length: Integer): ,String,;,,begin,, ,Result := Buffer;,, Delete(Result, Index, Length);,,end,;,,,function ,TString.IsNumber: Boolean;,,var,, ,i: Integer;,,begin,, ,Result := True;,, ,for ,i := ,1 ,,to ,Length ,do,, if not ,(GetCharacter(i) ,in ,[,'0',..,'9',,'+',,,'-',,,'.',]) ,then,, begin,, ,Result := False;,, Exit;,, ,end,;,,end,;,,,function ,TString.InternalInteger(,var ,Variable: Integer; ,const ,HighBound,,, LowBound: Integer): Boolean;,,var,, ,ErrorCode: Integer;,,begin,, ,Result := False;,, ,if ,IsEmpty ,or not ,IsNumber ,then ,Exit;,, Val(Buffer, Variable, ErrorCode);,, Result := (Errorcode = ,0,) ,and ,((Variable >= LowBound) ,and ,(Variable <= HighBound));,,end,;,,,function ,TString.GetAsInteger: Integer;,,begin,, ,InternalInteger(Result, High(Integer), Low(Integer));,,end,;,,,procedure ,TString.SetAsInteger(,const ,Value: Integer);,,begin,, ,Str(Value, Buffer);,,end,;,,,function ,TString.GetAsWord: Word;,,var,, ,Tmp: Integer;,,begin,, if ,InternalInteger(Tmp,0,,65535,) ,then,, ,Result := Tmp,, ,else,, ,Result := ,0,;,,end,;,,,procedure ,TString.SetAsWord(,const ,Value: Word);,,begin,, ,Str(Value, Buffer);,,end,;,,,function ,TString.GetWordSeparators: TCharSet;,,begin,, ,Result := FWordSeparators;,,end,;,,,procedure ,TString.SetWordSeparators(,const ,Value: TCharSet);,,begin,, if ,FWordSeparators <> Value ,then,, ,FWordSeparators := Value;,,end,;,,,function ,TString.InternalWord(,const ,Index: Integer): ,String,;,,var,, ,I,J,N: Integer;,, L: LongWord;,, P: PChar;,, A: Boolean;,,begin,, if ,(Index <= ,0,) ,then ,Exit;,, L := Length;,, P := Pointer(Buffer);,, A := False;,, N := ,1,;,, ,for ,I := ,1 ,,to ,L ,do,, begin,, if not ,(P^ ,in ,WordSeparators) ,then,, begin,, if not ,A ,then,, begin,, if ,N = Index ,then,, begin,, ,N := L+,1,;,, Inc(P);,, ,for ,J := I+,1 ,,to ,L ,do,, begin,, if ,P^ ,in ,WordSeparators ,then,, begin,, ,N := J;,, Break;,, ,end,;,, Inc(P);,, ,end,;,, Result := Copy(Buffer,I,N-I);,, Exit;,, ,end,;,, A := True;,, Inc(N);,, ,end,;,, ,end,, else if ,A ,then,, ,A := False;,, Inc(P);,, ,end,;,, Result := ,'',;,,end,;,,,function ,TStrinG.GetWordCount: het gehele getal;,,,, functie, CountOfWords (totaal:,,, de string, totaal, Delimiters:;, TCharSet): het gehele getal;,,,,,, - het, ebx, test Eax, is @@q0 Eax,,,,, [EAX-4] e ecx, e ebx Eax, DEC ecx - waarden.,,, - 1, is @@qz, ingesteld, gevolgd @@lp2 Eax Eax,,,,,, @@iw: Inc. Eax, dec ecx, is @@ex, @@lp1:, MOVZX 1 byte per [EBX+ECX], BT, [EDX], 1, @@nx, jC,, dec ecx jns @@lp1 @@ex: pop,,, 1. Ebx, pop,,, @@lp2: ret, MOVZX 1 byte per [EBX+ECX], BT, [EDX], 1, @@iw, @@nx: dec ecx Jnc,,,,Jns @ ruimte, de schietstoel, ebx, RTE, QZ:XOR Eax @ @ @ @, Eax, ebx q0: pop,,,,,,,,,,, en als het leeg is, dan,,,,,, de resultaten: = 0;,,,,, uit de resultaten van,,,,,, countofwords: = (buffer, fwordseparators);,,,,,,,,,, tstring.getrefcount: gehele getal; var,, P.: aanwijzing;,,,,, de resultaten: = 0;,,,,,, als aanwijzing (buffer) < >, nul, dan begon,,,, P = (geheel getal aanwijzing (punten (buffer)), 8);,, resultaten: = integer (P ^);,,,,,,,,,,,,,,,,,,,,.



Previous:
Next Page: