Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Vorteile von Records gegenüber Objekten

  Alt 6. Mai 2011, 20:51
Da gibt es z.B. sowas
http://www.delphipraxis.net/122045-b...tml#post848903
welches man sich so kapseln könnte.
Delphi-Quellcode:
Type
  ThMD5 = Record
    Data: MD5_CTX;
    Procedure Init;
    Procedure Update(Input: Pointer; inLen: LongWord);
    Function Final: MD5_RES;
  End;
Dieser Record ist nun vollkommen kompatibel zur WinAPI
oder man nutzt die eingebetetten Record-Methoden.

Und am Ende kann man es auch noch ausmotzen, bis zum Geht nicht mehr und es bleibt immernoch kompatibel zur WinAPI.
Außerdem läßt sich soein Record direkt und ohne umwege irgendwo abspeichern/übertragen (Stream, Datei, Indy usw.)
Delphi-Quellcode:
Type
  ThMD5 = packed Record
    Data: MD5_CTX;

    Class Operator Implicit(Value: MD5_CTX): ThMD5;            Inline;
    Class Operator Implicit(Rec: ThMD5): MD5_CTX;              Inline;
    Class Operator Implicit(Rec: ThMD5): MD5_DIGEST;           Inline;
    Class Operator Equal   (Left, Right: MD5_CTX):    Boolean; Inline;
    Class Operator Equal   (Left, Right: MD5_DIGEST): Boolean; Inline;
    Class Operator NotEqual(Left, Right: MD5_CTX):    Boolean; Inline;
    Class Operator NotEqual(Left, Right: MD5_DIGEST): Boolean; Inline;

    Procedure Init;                                              Inline;
    Procedure Update(Input: Pointer; inLen: LongWord); Overload; Inline;
    Procedure Update(Const Input: AnsiString);         Overload; Inline;
    Procedure Update(Const Input: WideString);         Overload; Inline;
    Procedure Update(Input: TStream; inLen: LongInt);  Overload;
    Function  Final: MD5_RES;                                    Inline;

    Function Calc(Input: Pointer; inLen: LongWord):     ThMD5; Overload; Inline;
    Function Calc(Const Input: AnsiString):             ThMD5; Overload; Inline;
    Function Calc(Const Input: WideString):             ThMD5; Overload; Inline;
    Function Calc(Var Input: TnStream; inLen: LongInt): ThMD5; Overload; Inline;
    Function CalcFile(Const FileName: WideString; Var Hash: MD5_DIGEST): Boolean;

    Function asBin:       MD5_DIGEST; Inline;
    Function asHexString: String;

    Function asGUID:      TGUID;
  End;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 6. Mai 2011 um 20:56 Uhr)
  Mit Zitat antworten Zitat