En streng klasse wich incapsulates flere strykere functionsI har gjort dette lille strengen klassen basere meg på QStrings og FastStrings, og dermed denne klassen er rask og håndterer flere strengfunksjoner. BTW for å samle og bruke denne klassen du trenger FastStrings (du kan få en kopi på Peter Morris Hjemmeside) .Why lage en streng klasse? godt selv om denne klassen mangler operatør overbelastning jeg trenger det, og tenkte noen migth nytte av it.UPDATE: Lagt case sensitive starts og EndsWithFIXED: Bugs i Venstre, Høyre, Faster Wordcount (kopiert fra QStrings)  enhet 
 IMLCommon;  interfaceuses 
 SysUtils, kurs;  skriv 
 TCharSet =  sett med 
 Char; TString =  klasse privat 
 Buffer: AnsiString; FWordSeparators: TCharset;  -funksjonen 
 GetLength: Integer;  -funksjonen 
 GetRefCount: Integer;  -funksjonen 
 GetCharacter ( konst 
 indeks: Integer): Char;  -funksjonen 
 GetWordSeparators: TCharSet;  -funksjonen 
 GetAsPChar: PChar;  -funksjonen 
 GetAsInteger: Integer;  -funksjonen 
 GetAsWord: Word;  -funksjonen 
 GetWordCount: Integer;  prosedyre 
 SetLength ( konst 
 Verdi: Integer);  prosedyre 
 SetCharacter ( konst 
 indeks: Integer;  konst 
 Verdi: Char);  prosedyre 
 SetWordSeparators ( konst 
 Verdi: TCharSet);  prosedyre 
 SetAsPChar ( konst 
 Verdi: PChar);  prosedyre 
 SetAsInteger ( konst 
 Verdi: Integer);  prosedyre 
 SetAsWord ( konst 
 Verdi: Word);  beskyttet funksjon 
 FindEx ( Const 
 treng:  String 
;  konst 
 CaseSensitive: Boolean = True;  const 
 StartPos: Integer = 1;  konst 
 ForwardSearch: Boolean = True): Integer;  -funksjonen 
 InternalInteger ( Var 
 Variabel: Integer;  konst 
 HighBound, nedre: Integer): Boolean;  -funksjonen 
 InternalWord ( Const 
 indeks: Integer):  String 
;  offentlig funksjon 
 Venstre (Count: Integer):  String 
;  -funksjonen 
 Rigth (Count: Integer):  String 
;  -funksjonen 
 Mid ( konst 
 AStart, acount: Integer):  String 
;  -funksjonen 
 store bokstaver:  String 
;  -funksjonen 
 små bokstaver:  String 
;  -funksjonen 
 IsEmpty: Boolean;  -funksjonen 
 starts ( konst 
 AString:  String 
;  Const 
 CaseSensitive: Boolean = False): Boolean;  -funksjonen 
 EndsWith ( konst 
 AString:  String 
;  konst 
 CaseSensitive: Boolean = False): Boolean;  -funksjonen 
 Finn ( Const 
 treng:  String 
;  const 
 StartPos: Integer = 1;  konst 
 CaseSensitive: Boolean = sann): Integer;  -funksjonen 
 FindRev ( Const 
 treng:  String 
;  const 
 StartPos: Integer = 1;  konst 
 CaseSensitive: Boolean = True): Integer;  -funksjonen 
 Inneholder ( konst 
 treng:  String 
;  konst 
 CaseSensitive: Boolean = True): Boolean;  -funksjonen 
 ISNUMBER: Boolean;  -funksjonen 
 Append ( konst 
 Verdi:  String 
):  String 
;  -funksjonen 
 foran ( konst 
 Verdi:  String 
):  String 
;  -funksjonen 
 Fjern ( konst 
 Index, Lengde: Integer):  String 
;  prosedyre 
 avkorte ( konst 
 NewLength: Integer);  prosedyre 
 Fill ( konst 
 achar: Char; NewLength: Integer = 1);  prosedyre 
 Sett ( konst 
 indeks: Integer;  konst 
 AString:  String 
);  eiendom 
 Innhold:  String Les 
 Buffer  Skriv 
 Buffer;  eiendom 
 RefCount: Integer  Les 
 GetRefCount;  eiendom 
 tegn [ Const Index 
: Integer]: Char  Les 
 GetCharacter  skrive 
 SetCharacter;  standard 
;  eiendom 
 Words [ Const Index 
: Integer]:  String lese 
 InternalWord;  eiendom 
 Wordcount: Integer  Les 
 GetWordCount;  eiendom 
 Lengde: Integer  Les 
 GetLength  skrive 
 SetLength;  eiendoms 
 WordSeparators: TCharSet  Les 
 GetWordSeparators  skrive 
 SetWordSeparators;  eiendom 
 AsPChar: PChar  Les 
 GetAsPChar  skrive 
 SetAsPChar;  eiendom 
 AsInteger: Integer  Les 
 GetAsInteger  skrive 
 SetAsInteger;  eiendom 
 AsWord: Word  Les 
 GetAsWord  skrive 
 SetAsWord;  slutten 
;  implementationuses 
  {JclStrings,} 
 FastStrings;  {TString} 
  -funksjonen 
 TString.EndsWith ( konst 
 AString:  String 
;  konst 
 CaseSensitive: Boolean): Boolean;  begynne hvis 
 CaseSensitive  da 
 Resultat: = AnsiSameStr (AString , Rigth (System.Length (AString)))  annet 
 Resultat: = AnsiSameText (AString, Rigth (System.Length (AString)));  slutten 
;  -funksjonen 
 TString.FindEx ( konst 
 treng:  String 
;  konst 
 CaseSensitive: Boolean;  const 
 StartPos: Integer;  konst 
 ForwardSearch: Boolean): Integer;  begynner 
 Resultat: = SmartPos (delstreng, buffer, CaseSensitive, StartPos, ForwardSearch);  slutten 
;  prosedyre 
 TString.Fill (  konst 
 achar: Char; NewLength: Integer);  begynne hvis plakater (NewLength < 0)  da begynne hvis 
 Lengde > 0  deretter 
 FillChar (Buffer [1], Lengde, ord (achar))  annet 
 FillChar (Buffer [1], en, ord (achar));  end annet begynne 
 SetLength (NewLength); FillChar (Buffer [1], Lengde, ord (achar));  slutten 
;  slutten 
;  -funksjonen 
 TString.Find ( konst 
 treng:  String 
;  konst 
 StartPos: Integer;  konst 
 CaseSensitive: Boolean): Integer;  begynner 
 Resultat: = FindEx (delstreng, CaseSensitive, StartPos);  slutten 
;  -funksjonen 
 TString.FindRev ( konst 
 treng:  String 
;  const 
 StartPos: Integer;  konst 
 CaseSensitive: Boolean): Integer; < b> Var 
 RealStartPos: Integer;  begynne hvis 
 StartPos < 0  da 
 RealStartPos: = Lengde  annet 
 RealStartPos: = StartPos; Resultat: = FindEx (delstreng, CaseSensitive, RealStartPos, false);  slutten 
;  -funksjonen 
 TString.GetAsPChar: PChar;  begynner 
 Resultat: = PChar (buffer);  slutten 
;  -funksjonen 
 TString.GetCharacter ( konst 
 indeks: Integer): Char;  begynne hvis 
 IsEmpty  eller plakater ( Indeks > lengde)  da 
 Resultat: = # 0  annet 
 Resultat: = Buffer [Indeks];  slutten 
;  -funksjonen 
 TString.GetLength : Integer;  Var 
 P: Pointer;  begynner 
 Resultat: = 0;  hvis 
 Pointer (buffer) < >  nil deretter begynne 
 P: = Pointer (heltall (Pointer (buffer)) - 4); Resultat: = Integer (P ^)  og plakater ( ikke anbefale $ 80 millioner  shr 
 1);  slutten 
;  slutten 
;  -funksjonen 
 TString.IsEmpty: Boolean;  begynner 
 Resultat: = (Lengde = 0);  ende 
;  -funksjonen 
 TString.Left (Count: Integer):  String 
;  begynne hvis 
 Count > Lengde  da 
 Resultat: = Buffer  annet begynne 
 System.SetLength (Resultat, grev); Move (Buffer [1], Resultat [1], Count);  slutten 
;  slutten 
;  -funksjonen 
 TString.LowerCase:  String 
;  begynner 
 Resultat: = SysUtils.LowerCase (Buffer );  slutten 
;  -funksjonen 
 TString.Mid ( konst 
 AStart, acount: Integer):  String 
;  begynne 
 resultat: = Kopier (buffer, AStart, acount);  slutten 
;  -funksjonen 
 TString.Rigth (Count: Integer):  String 
;  begynne hvis 
 Count > Lengde  da 
 Resultat: = ''  annet begynne 
 System.SetLength (Resultat, grev); Move (Buffer [lengde - (Count-1)] Resultat [1], Count);  slutten 
;  slutten 
;  prosedyre 
 TString.SetAsPChar ( konst 
 Verdi: PChar);  begynner 
 Buffer: = Verdi;  slutten 
;  prosedyre 
 TString.SetCharacter ( konst 
 indeks: Integer;  konst 
 Verdi: Char);  begynne hvis ikke 
 IsEmpty  så hvis plakater (Index < lengde)  og plakater (Value < > GetCharacter (Index))  deretter 
 Buffer [Indeks]: = verdi;  slutten 
;  prosedyre 
 TString.SetLength ( konst 
 Verdi: Integer);  begynne 
 System.SetLength (buffer, verdi);  ende 
;  -funksjonen 
 TString.StartsWith ( konst 
 AString:  String 
;  konst 
 CaseSensitive: Boolean): Boolean;  begynne hvis 
 CaseSensitive  da 
 Resultat: = AnsiSameStr (AString, Venstre (System.Length (AString)))  annet 
 Resultat: = AnsiSameText (AString, Venstre (System.Length ( AString)));  slutten 
;  prosedyre 
 TString.Truncate ( konst 
 NewLength: Integer);  begynner 
 Lengde: = NewLength;  end 
;  -funksjonen 
 TString.Uppercase:  String 
;  begynner 
 Resultat: = SysUtils.UpperCase (buffer);  slutten 
;  funksjons 
 TString.Contains ( konst 
 treng:  String 
;  konst 

