Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#20

Re: Set of WideChar (TDynamicCharSet)

  Alt 22. Apr 2010, 13:13
Ups, da hatte ich doch glatt vergessen die letzte Version hochzuladen,
in welcher dieser saublöde Compilerfehler (defekte Referenzzählung
http://www.delphipraxis.net/internal...t.php?t=176345 )
behoben/umgangen wurde.

Und nun noch ein kleiner "Gag":
Das kleinste (vom Code her) und schnellste WideCharSet der Welt.
Delphi-Quellcode:
Type TWideCharRec = Record
    Lo: AnsiChar;
    Hi: Byte;
  End;
  TTinyWideCharSet = Record
    Sets: Array[Byte] of TSysCharSet;
    Procedure Include(C: WideChar); Inline;
    Procedure Exclude(C: WideChar); Inline;
    Function Test (C: WideChar): Boolean; Inline;
    Procedure Clear; Inline;
  End;

Procedure TTinyWideCharSet.Include(C: WideChar);
  Begin
    System.Include(Sets[TWideCharRec(C).Hi], TWideCharRec(C).Lo);
  End;

Procedure TTinyWideCharSet.Exclude(C: WideChar);
  Begin
    System.Exclude(Sets[TWideCharRec(C).Hi], TWideCharRec(C).Lo);
  End;

Function TTinyWideCharSet.Test(C: WideChar): Boolean;
  Begin
    Result := TWideCharRec(C).Lo in Sets[TWideCharRec(C).Hi];
  End;

Procedure TTinyWideCharSet.Clear;
  Var i: Byte;

  Begin
    For i := 0 to 255 do Sets[i] := [];
  End;
Es kann nicht viel, kennt kein Ansi, aber es ist dafür klein und komplett fehlerunanfällig.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat