AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Anleitung zum Einbinden von DEC in Delphi 2005 (getestet)
Tutorial durchsuchen
Ansicht
Themen-Optionen

Anleitung zum Einbinden von DEC in Delphi 2005 (getestet)

Ein Tutorial von Amnon82 · begonnen am 28. Apr 2005 · letzter Beitrag vom 18. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Amnon82
Amnon82
Registriert seit: 5. Jan 2005
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.
 
Benutzerbild von Phoenix
Phoenix
 
#2
  Alt 28. Apr 2005, 09:44
Auch wenn ich das DEC nicht verwende: Super Einsatz!
Sebastian Gingter
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

 
Delphi 2006 Professional
 
#3
  Alt 28. Apr 2005, 09:44
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.
Stephan B.
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

 
FreePascal / Lazarus
 
#4
  Alt 28. Apr 2005, 09:54
Wir haben uns auf eine Anleitung geeinigt ...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

 
Delphi 10.2 Tokyo Professional
 
#5
  Alt 10. Jun 2005, 15:10
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.".
Volker
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH
 
#6
  Alt 11. Jun 2005, 01:06
Hm, probiere doch mal statt

 if TStringFormatClass(FStrFmts[I]).Format = Format then mit

 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
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#7
  Alt 11. Jun 2005, 08:25
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
David F.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

 
Delphi 10.2 Tokyo Professional
 
#8
  Alt 11. Jun 2005, 10:50
@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

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
Volker
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

 
Turbo Delphi für Win32
 
#9
  Alt 9. Sep 2005, 09:56
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!
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

 
Turbo Delphi für Win32
 
#10
  Alt 9. Sep 2005, 10:00
Jetzt findet er die Datei
DesignIntf
nicht.
liegt es vielleicht daran, das ich eine Personal verwende?

Ok, jetzt funktioniert alles.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.
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