![]() |
Anleitung zum Einbinden von DEC in Delphi 2005 (getestet)
Ich hab mitbekommen, das Viele hier Probleme mit der Installation von DEC in Delphi 2005 haben.
Da ich auch Delphi 2005 verwende, hab ich DEC für Delphi 2005 angepasst. Ich bedank mich bei Hagen. Durch einen von seinen Beiträgen hab ich die Lösung gefunden. Hier nochmal zum Nachlesen: Zitat:
Da fast garnichts verändert wurde an der Source beschreibe ich Euch nun, wie Ihr mein Project nachbauen könnt. Zuerst müsst Ihr Hagens Dec downloaden. ![]() Öffnet die DECReg.pas (z.B. mit dem Editor) und geht bis zu dieser Stelle:
Delphi-Quellcode:
Ändert den Part folgendermaßen ab:
interface
uses DECConst, DECUtil, Hash, Cipher, HCMngr, SysUtils, Classes, DsgnIntf, Cipher1, RFC2289 {$IFDEF Part_II} {$ENDIF} {$IFDEF Part_III} {$ENDIF};
Delphi-Quellcode:
Nun öffnen wir die DECUtil.pas. Geht bis zu diesen Part:
interface
uses DECConst, DECUtil, Hash, Cipher, HCMngr, SysUtils, Classes, DesignIntf, DesignEditors, Cipher1, RFC2289 {$IFDEF Part_II} {$ENDIF} {$IFDEF Part_III} {$ENDIF};
Delphi-Quellcode:
Ändert Ihn so ab:
{this calculate a Checksum (CRC32) over the function CRC32 and the TestVector,
if InitTestIsOk = False any modification from Testvector or CRC32() detected, :-) } InitTestIsOk := CRC32(CRC32($29524828, PChar(@CRC32) + 41, 1076), GetTestVector, 32) = $848B5964; finalization RemoveModuleUnloadProc(ModuleUnload); FStrFMTs.Free; FStrFMTs := nil; end.
Delphi-Quellcode:
Natürlich müsst Ihr die Dateien dann auch speichern ;)
{this calculate a Checksum (CRC32) over the function CRC32 and the TestVector,
if InitTestIsOk = False any modification from Testvector or CRC32() detected, :-) } InitTestIsOk := CRC32($29524828, GetTestVector, 32) = $9B497502; finalization RemoveModuleUnloadProc(ModuleUnload); FStrFMTs.Free; FStrFMTs := nil; end. Nun öffnen wir Delphi 2005. Wir erstellen ein Package (zu finden bei den Delphi Projects) und fügen dem die DECReg.pas hinzu. Danach speichern wir das Package unter einem Namen (z.B. DECD9). Nun können wir auf installieren klicken und DEC wird ohne Probleme in Delphi 2005 eingebunden. Ich hoffe das diese Anleitung Vielen hier weiterhilft. |
Re: Delphi Encryption Compendium 3.0 für Delphi 2005
Auch wenn ich das DEC nicht verwende: :thuimb: Super Einsatz!
|
Re: Delphi Encryption Compendium 3.0 für Delphi 2005
Hai Amnon82,
hast Du von Hagen die Erlaubniss sein DEC in abgewandelter Form hier zu veröffentlichen? Wenn nicht entferne doch bitte den Anhang und kläre es erst mit Haben ab. Danke für dein Verständniss. |
Re: Delphi Encryption Compendium 3.0 für Delphi 2005
Wir haben uns auf eine Anleitung geeinigt ...
|
Re: Anleitung zum Einbinden von DEC in Delphi 2005 (getestet
Ich hol' einfach mal in diesen Thread wieder nach oben.
System: Delphi 2005 inkl. Service Packs 2 und 3 (ganz frisch installiert). Beim kompilieren von DECUtil.pas kommen zwei Arten von Fehlern: 1. Zum einen mag Delphi das Schlüsselwort "register" in Zeile 247 und 249 nicht.
Delphi-Quellcode:
das kann ich lösen, indem ich Typen dafür deklariere:
{this is set to SwapInt for <= 386 and BSwapInt >= 486 CPU, don't modify}
SwapInteger : function(Value: LongWord): LongWord; register = nil; {Count of Integers Buffer} SwapIntegerBuffer : procedure(Source, Dest: Pointer; Count: Integer); register = nil;
Delphi-Quellcode:
2. Die andere Sache ist ein bisschen diffiziler: er mag die "T1 = class of T2" Typen nicht mit den Klassen-Methoden von "T2" verwenden.
type
TSwapIntegerProc = function(Value: LongWord): LongWord; register; TSwapIntegerBufferProc = procedure(Source, Dest: Pointer; Count: Integer); register; const {this is set to SwapInt for <= 386 and BSwapInt >= 486 CPU, don't modify} SwapInteger : TSwapIntegerProc = nil; {Count of Integers Buffer} SwapIntegerBuffer : TSwapIntegerBufferProc = nil; Zur Verdeutlichung mal ein Beispiel: Deklaration (DECUtil.pas:103):
Delphi-Quellcode:
Verwendung (DECUtil.pas:1142):
TStringFormatClass = class of TStringFormat;
TStringFormat = class(TObject) // for binary one to one convert = fmtCOPY public class function ToStr(Value: PChar; Len: Integer): String; virtual; class function StrTo(Value: PChar; Len: Integer): String; virtual; class function Name: String; virtual; class function Format: Integer; virtual; class function IsValid(Value: PChar; Len: Integer; ToStr: Boolean): Boolean; virtual; end;
Delphi-Quellcode:
... und hier meckert Delphi bei dem Vergleich, dass "TStringFormatClass" kein Element "Format" hätte.
function StringFormat(Format: Integer): TStringFormatClass;
var I: Integer; begin if Format = fmtDefault then Format := DefaultStringFormat; Result := nil; if FStrFmts <> nil then for I := 0 to FStrFMTs.Count-1 do if TStringFormatClass(FStrFmts[I]).Format = Format then begin Result := FStrFMTS[I]; Exit; end; end; Wäre schön wenn mir einer sagen könnte, woran das liegt? Rein theoretisch sollte es ja funktionieren, in der Delphi-Hilfe steht "Eine Klassenmethode kann über eine Klassenreferenz oder eine Objektreferenz aufgerufen werden.". |
Re: Anleitung zum Einbinden von DEC in Delphi 2005 (getestet
Hm, probiere doch mal statt
Delphi-Quellcode:
mit
if TStringFormatClass(FStrFmts[I]).Format = Format then
Delphi-Quellcode:
zu arbeiten. Allerdings verstehen kann ich das Problem nicht, bzw. ich kann nicht nachvollziehen warum Delphi 2005 damit Probleme haben sollte. (Habe aber auch kein D2005 installiert).
if TStringFormat(FStrFmts[I]).Format = Format then
Gruß Hagen |
Re: Anleitung zum Einbinden von DEC in Delphi 2005 (getestet
Hi,
ich kann das DEC ohne Probleme mit Delphi 2005 kompilieren. Der Fehler mit der Prozedurdeklaration, den Du da aufführst, werden lediglich im "Error Insight" angezeigt, die Unit lässt sich jedoch ohne Probleme kompilieren. In dem Sinne hat das Error Insight wohl noch nen Bug. Den anderen Fehler mit dem TStringFormat kann ich nicht nachvollziehen. Helph Insight zeigt zwar beim drüberfahren über den Format Bezeichner in der Zeile [i]if TStringFormatClass(FStrFmts).Format = ... "Errorneus Type" an, aber das beeinflusst den Kompilierprozess ebenso nicht. mfG mirage228 |
Re: Anleitung zum Einbinden von DEC in Delphi 2005 (getestet
@mirage228: Du hast Recht, die Fehler werden nur im Sourcecode angezeigt (rot unterschlängelt) und insbesondere als eine riesige Liste in der Strukturansicht auf der linken Seite (die ich jetzt erst einmal ausgeschaltet habe, die habe ich auch früher nie gebraucht). Übersetzen lässt sich alles ohne Probleme und auch installieren.
Ich war gestern schon kurz vor der Verzweiflung, weil nach der Umstellung von Delphi 5 auf 2005 zunächst erst einmal überhaupt nichts zu funktionieren schien. Wer kommt denn auch darauf, dass die Fehleranzeige einen Fehler hat und es sich überhaupt nicht um Fehler handelt :gruebel: Kann man eigentlich das ganze "Error Insight" ausschalten? Jetzt muss ich mich nur noch um den Fehler "Unit wurde mit einer anderen Version von Variants.@VarClr übersetzt" kümmern... Gruß Flocke |
Re: Anleitung zum Einbinden von DEC in Delphi 2005 (getestet
Ich bin jetzt nach der Anleitung von Amnon82 vorgegangen.
Nun kommt bei mir diese Fehlermeldung: [Fataler Fehler] DECReg.pas(18): F1026 Datei nicht gefunden: 'DsgnIntf.dcu' Die entsprechende Datei existiert nicht (auch nicht mit der Endung pas). was soll ich machen? Ups! Fehler gefunden! Falsche datei verwendet! |
Re: Anleitung zum Einbinden von DEC in Delphi 2005 (getestet
Jetzt findet er die Datei
DesignIntf nicht. liegt es vielleicht daran, das ich eine Personal verwende? Ok, jetzt funktioniert alles. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz