AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?
Thema durchsuchen
Ansicht
Themen-Optionen

Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

Ein Thema von a.def · begonnen am 6. Mai 2017 · letzter Beitrag vom 11. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
a.def
(Gast)

n/a Beiträge
 
#1

Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 17:31
Ich bin heute auf Wolfgang Ehrhardts CRC- und Hash-Routinen gestoßen. Die sollen wohl wahnsinnig schnell sein, weswegen ich mich dafür interessiere.

Ich habe aber ein seltsames Problem, wenn ich mir die Units die ich brauche ins Projekt hinzufüge und kompilieren möchte.
Der Compiler meckert, dass der Bezeichner THashContext nicht deklariert sei. Wenn ich aber STRG+Linkklick drauf mache, lande ich in der Unit Hash.pas.

Wieso findet der Compiler die Unit nicht?

Ein Beispielprojekt mit allen benötigten Units befindet sich im Anhang. Bekommt ihr das Projekt kompiliert?

Link zu Wolfgang Ehrhardts Units: http://www.wolfgang-ehrhardt.de/crchash_de.html
Angehängte Dateien
Dateityp: zip HashTest.zip (462,7 KB, 10x aufgerufen)

Geändert von a.def ( 6. Mai 2017 um 20:01 Uhr) Grund: Titel
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 20:17
Ich bin heute auf Wolfgang Ehrhardts CRC- und Hash-Routinen gestoßen. Die sollen wohl wahnsinnig schnell sein, weswegen ich mich dafür interessiere.

Wieso findet der Compiler die Unit nicht?

Ein Beispielprojekt mit allen benötigten Units befindet sich im Anhang. Bekommt ihr das Projekt kompiliert?

Link zu Wolfgang Ehrhardts Units: http://www.wolfgang-ehrhardt.de/crchash_de.html
Das Problem liegt darin, daß Delphi ab XE8 eine eigene Hash-Unit hat, und durch nichts zu überzeugen ist, daß es die Unit im Arbeitsverzeichnis oder entsprechend der Uses-Liste verwendet soll. Ist bekannt, siehe hier http://www.delphipraxis.net/190245-u...nd-hash-2.html und http://www.delphipraxis.net/184810-x...stem-hash.html. Aber selbst dann kann man deinen Code nicht übersetzen (zB mit D18) weil er einige Fehler hat. Eine korrigierte Funktion sieht so aus
Delphi-Quellcode:
function SHA1Text(const s: string): string;
var
 Context: THashContext;
 SHA256Digest: Hash.TSHA256Digest;
begin
 SHA256.SHA256Init(Context);
 SHA256.SHA256Update(Context, pChar(s), length(s));
 SHA256.SHA256Final(Context, SHA256Digest);
 Result := Mem_Util.HexStr(@SHA256Digest, SizeOf(SHA256Digest));
end;
und sollte dann sinnvollerweise SHA256Text heißen. Ich kann selbst dann nicht übersetzen, weil die res-Datei fehlt.

Gruß Gammatester
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 20:21
Heißt das also die einzige Lösung besteht darin, dass ich die Unit Hash von Wolfgang E. umbenennen muss?

Zitat:
Aber selbst dann kann man deinen Code nicht übersetzen (zB mit D18) weil er einige Fehler hat. Eine korrigierte Funktion sieht so aus
Das waren leider noch Code-Leichen. Im neuen Archive oben sind die raus.

Zitat:
Ich kann selbst dann nicht übersetzen, weil die res-Datei fehlt.
Die ist doch gar nicht zwingend erforderlich oder?
Ich kann die aus meinem Projektverzeichnis löschen und nicht kompilieren (siehe Fehler erster Post). Aber auch wenn sie vorhanden ist kann ich nicht kompilieren.

Geändert von a.def ( 6. Mai 2017 um 20:31 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 20:51
Ich kann die aus meinem Projektverzeichnis löschen und nicht kompilieren (siehe Fehler erster Post). Aber auch wenn sie vorhanden ist kann ich nicht kompilieren.
Naja, zum Nicht-kompilieren ist sie sicher nicht erforderlich
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#5

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 21:13
Wenn ich hash.pas in W.E.Hash.pas umbenenne, komme ich bereits weiter.
Wo man dann aber stecken bleibt ist in Mem_Util.Base64DecStr in Block
Delphi-Quellcode:
function Base64DecStr({$IFDEF CONST}const {$ENDIF} es: BString): BString;
var
 {$IFNDEF RESULT}
 result: BString;
 {$ENDIF}
...

// Funktioniert mit XE2 problemlos. Ab XE8 nicht mehr.
Wenn man das auskommentiert (ebenfalls in anderen Funktionen wo es diese Re-Deklaration gibt) kommt man weiter und es kompiliert.
Result: BString ist hier meiner laienhaftung Meinung doch gar nicht notwendig, da der Funktionsrückgabewert doch eh schon BString ist.


Resultat dieses kleinen Ausritts ist dann ein SHA256-Hash, der nicht mit dem übereinstimmt was andere Hasher sagen.
Es gibt vermutlich also noch weitere Probleme nur fraglich wo.

Wenn ich diese Library zum problemlosen Funktionieren bekomme, wird es definitiv meine erste Wahl vor allen anderen
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 21:28
Wenn ich hash.pas in W.E.Hash.pas umbenenne, komme ich bereits weiter.
Wo man dann aber stecken bleibt ist in Mem_Util.Base64DecStr in Block
Delphi-Quellcode:
function Base64DecStr({$IFDEF CONST}const {$ENDIF} es: BString): BString;
var
 {$IFNDEF RESULT}
 result: BString;
 {$ENDIF}
...

// Funktioniert mit XE2 problemlos. Ab XE8 nicht mehr.
Wenn man das auskommentiert (ebenfalls in anderen Funktionen wo es diese Re-Deklaration gibt) kommt man weiter und es kompiliert.
Result: BString ist hier meiner laienhaftung Meinung doch gar nicht notwendig, da der Funktionsrückgabewert doch eh schon BString ist.

Wenn man was auskommentiert? Und welche Re-Deklaration? BString ist ein String[255], also kein String (bei die wohl bei dir ein Unicode-String ist). Außerdem ist er statisch und nicht dynamisch (Strings in XE8 sind dynamisch).

Wenn du dynamische Strings brauchst, sieh mal in Unit base2n.pas für ansistrings.

Geändert von gammatester ( 6. Mai 2017 um 21:32 Uhr)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#7

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 21:30
Wenn man folgendes auskommentiert
Delphi-Quellcode:
 {$IFNDEF RESULT}
 result: BString;
 {$ENDIF}
Weil der Funktionsrückgabewert ist ja eh schon BString
function Base64DecStr({$IFDEF CONST}const {$ENDIF} es: BString): BString;

Nur dann funktioniert es. Aktuell versuche ich mit Tokyo Starter zu kompilieren.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 21:42
Wenn man folgendes auskommentiert
Delphi-Quellcode:
 {$IFNDEF RESULT}
 result: BString;
 {$ENDIF}
Weil der Funktionsrückgabewert ist ja eh schon BString
function Base64DecStr({$IFDEF CONST}const {$ENDIF} es: BString): BString; Nur dann funktioniert es. Aktuell versuche ich mit Tokyo Starter zu kompilieren.
Wenn Du das auskommentieren mußt, stimmt noch mehr nicht. Für Delphi sollte RESULT immer definiert sein: std.inc Zeile 494. (Hinweis: es gibt Pascal-Versionen die kein result für's Funktionsergebnis kennen!)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#9

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 22:12
Wie gesagt. Ich teste es mit XE8 Pro und Tokyo Starter und es tritt bei beiden auf.
Tritt nur bei Tokyo auf. Der Hash ist bei XE8 aber trotzdem nicht korrekt.

Geändert von a.def ( 6. Mai 2017 um 22:15 Uhr)
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#10

AW: Wolfgang Ehrhardts CRC/Hash Routinen - kompilieren schlägt fehl - IDE-Bug?

  Alt 6. Mai 2017, 22:35
Wie gesagt. Ich teste es mit XE8 Pro und Tokyo Starter und es tritt bei beiden auf.
Tritt nur bei Tokyo auf. Der Hash ist bei XE8 aber trotzdem nicht korrekt.
Für Tokyo solltest Du die neueste http://www.wolfgang-ehrhardt.de/std.zip verwenden. Deine ist über ein Jahr alt, da gab es Tokyo noch nicht.

PS: Warum hast du eigentlich so viele Änderungen am Code vorgenommen (zB 124 bei sha256)?
  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 09:45 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