Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Anleitung zum Einbinden von DEC in Delphi 2005 (getestet) (https://www.delphipraxis.net/45021-anleitung-zum-einbinden-von-dec-delphi-2005-getestet.html)

Amnon82 28. Apr 2005 09:42


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:

Weil du Delphi 6 oder 7 hast. Borland hat die benötigten Units einfach umbenannt von D3,D4,D5 zum D6,D7.

Unit DECReg.pas öffnen und dort in der Uses Klausel
"DsgnIntf" durch "DesignIntf, DesignEditors" ersetzen.

Unit DECUtil.pas in der initialization Sektion
InitTestIsOk := CRC32($29524828, GetTestVector, 32) = $9B497502;

Das wars, und DEC läuft auch in D6/D7.

Beide Änderungen sind nötig weil Borland Units umbenannt hat bzw. weil der integrierte Assembler geändert wurde.

Achso noch eines: die unit DECReg.pas MUSS unbedingt in ein DesignTime only Package eingebunden werden. Wird DECReg.pas als neue Komponente installiert so landet es meistens in das "Borland Benutzer Package", dies wäre ok.
Ansonsten bekommt man den allseits bekannten Fehler das Unit "Proxies.dcu" nicht neu kompiliert werden kann weil unit "Proxies.pas" nicht gefunden wurde. Auch dies ist eine Änderung die Bolrand zu verantworten hat.

Gruß Hagen

PS: die im WEB veröffentlichen DEC Sourcen wurden noch entwickelt als es kein Delphi 6 oder 7 gab.
Abgesehen davon sind also DEC's Sourcen absolut kompatibel programmiert wurden.
Ich hab ein Project erstellt sodass man DEC ganz einfach einbinden kann.

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. DEC @ luckie-online.de

Öffnet die DECReg.pas (z.B. mit dem Editor) und geht bis zu dieser Stelle:

Delphi-Quellcode:
interface

uses
  DECConst, DECUtil, Hash, Cipher, HCMngr, SysUtils, Classes, DsgnIntf, Cipher1, RFC2289
{$IFDEF Part_II}
{$ENDIF}
{$IFDEF Part_III}
{$ENDIF};
Ändert den Part folgendermaßen ab:

Delphi-Quellcode:
interface

uses
  DECConst, DECUtil, Hash, Cipher, HCMngr, SysUtils, Classes, DesignIntf, DesignEditors, Cipher1, RFC2289
{$IFDEF Part_II}
{$ENDIF}
{$IFDEF Part_III}
{$ENDIF};
Nun öffnen wir die DECUtil.pas. Geht bis zu diesen Part:

Delphi-Quellcode:
{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.
Ändert Ihn so ab:

Delphi-Quellcode:
{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.
Natürlich müsst Ihr die Dateien dann auch speichern ;)

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.

Phoenix 28. Apr 2005 09:44

Re: Delphi Encryption Compendium 3.0 für Delphi 2005
 
Auch wenn ich das DEC nicht verwende: :thuimb: Super Einsatz!

Sharky 28. Apr 2005 09:44

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.

Amnon82 28. Apr 2005 09:54

Re: Delphi Encryption Compendium 3.0 für Delphi 2005
 
Wir haben uns auf eine Anleitung geeinigt ...

Flocke 10. Jun 2005 15:10

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:
{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;
das kann ich lösen, indem ich Typen dafür deklariere:

Delphi-Quellcode:
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;
2. Die andere Sache ist ein bisschen diffiziler: er mag die "T1 = class of T2" Typen nicht mit den Klassen-Methoden von "T2" verwenden.

Zur Verdeutlichung mal ein Beispiel:

Deklaration (DECUtil.pas:103):
Delphi-Quellcode:
  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;
Verwendung (DECUtil.pas:1142):
Delphi-Quellcode:
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;
... und hier meckert Delphi bei dem Vergleich, dass "TStringFormatClass" kein Element "Format" hätte.

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.".

negaH 11. Jun 2005 01:06

Re: Anleitung zum Einbinden von DEC in Delphi 2005 (getestet
 
Hm, probiere doch mal statt

Delphi-Quellcode:
 if TStringFormatClass(FStrFmts[I]).Format = Format then
mit

Delphi-Quellcode:
 if TStringFormat(FStrFmts[I]).Format = Format then
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).

Gruß Hagen

mirage228 11. Jun 2005 08:25

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

Flocke 11. Jun 2005 10:50

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

maximus Caesar 9. Sep 2005 09:56

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!

maximus Caesar 9. Sep 2005 10:00

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 23:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz