Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi THashSHA1 funktioniert nicht mehr in 10.2(.1)? (https://www.delphipraxis.net/193640-thashsha1-funktioniert-nicht-mehr-10-2-1-a.html)

TiGü 24. Aug 2017 15:58

AW: THashSHA1 funktioniert nicht mehr in 10.2(.1)?
 
Aber an den Update-Methoden wurde ja laut meinen Beyond-Compare zwischen \18.0\source\rtl\common\System.Hash.pas und \18.0\source\rtl\common\System.Hash.pas nix geändert?

Sicher das ihr euch da nicht irrt?
Delphi-Quellcode:
procedure Update(const AData: TBytes; ALength: Cardinal = 0); overload; inline;
ist ja INLINE deklariert und wird dadurch vom Debugger gar nicht angesprungen?

TiGü 24. Aug 2017 16:01

AW: THashSHA1 funktioniert nicht mehr in 10.2(.1)?
 
Einzige Änderung die ich sehe ist die Hinzunahme von System.Classes in die Uses, aber kann das die Ursache sein? :gruebel:

gammatester 24. Aug 2017 16:26

AW: THashSHA1 funktioniert nicht mehr in 10.2(.1)?
 
Zumindest bei kleinen Files bringt
Delphi-Quellcode:
LSHA1.Update(LFile.Memory^, LFile.Size)
das richtige Ergebnis. Kann aber Zufall sein, daß die Größe paßt, also besser mit Original-Filegröße.

TiGü 24. Aug 2017 16:48

AW: THashSHA1 funktioniert nicht mehr in 10.2(.1)?
 
Zitat:

Zitat von gammatester (Beitrag 1379385)
Zumindest bei kleinen Files bringt
Delphi-Quellcode:
LSHA1.Update(LFile.Memory^, LFile.Size)
das richtige Ergebnis. Kann aber Zufall sein, daß die Größe paßt, also besser mit Original-Filegröße.

Wahrscheinlich wird alles kleiner als
Delphi-Quellcode:
BUFFERSIZE = 4 * 1024;
Bytes funktionieren.
Wer die Konstante in der Tokyo-System.Hash-Unit findet, darf sie behalten.

gammatester 24. Aug 2017 16:54

AW: THashSHA1 funktioniert nicht mehr in 10.2(.1)?
 
Für Filesize=1000000 funktioniert's jedenfalls noch. Es wäre doch ein noch schwererer 'Bug', wenn die Größen (von File und Stream) wirklich von einander abweichen. Von der Hilfe her (habe leider keinen Quellcode), bleibt dem Compiler IMO gar nichts anderes übrig. Vielleicht hat sich die Compiler-Magic im Vergleich zu Berlin geändert.

Der schöne Günther 24. Aug 2017 17:24

AW: THashSHA1 funktioniert nicht mehr in 10.2(.1)?
 
Ich verstehe nicht warum ihr euch das mit untypisierten Zeigern überhaupt antut. Warum nicht einfach ein
Delphi-Quellcode:
TBytesStream
, dessen
Delphi-Quellcode:
Bytes
nehmen und fertig?

PS:
Delphi-Quellcode:
Bytes
noch auf die entsprechende Länge einkürzen

PPS: Oder direkt einfach mit einem Byte-Array, ganz ohne Stream:

Delphi-Quellcode:
uses System.IoUtils;

procedure TForm1.Button1Click(Sender: TObject);
Var
   LSHA1: THashSHA1;
   payload: TBytes;
begin
   if OpenDialog1.Execute() then
      begin
         payload := TFile.ReadAllBytes(OpenDialog1.FileName);
         LSHA1 := THashSHA1.Create();
         LSHA1.Update(payload);
         Edit1.Text := LSHA1.HashAsString();
      end;
end;

Whookie 25. Aug 2017 08:42

AW: THashSHA1 funktioniert nicht mehr in 10.2(.1)?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1379391)
Ich verstehe nicht warum ihr euch das mit untypisierten Zeigern überhaupt antut. Warum nicht einfach ein
Delphi-Quellcode:
TBytesStream
, dessen
Delphi-Quellcode:
Bytes
nehmen und fertig?

(Bei mir) zum größten Teil aus historischen Gründen, never change running code :-D ...

Ich habe das jetzt auch auf
Delphi-Quellcode:
TBytesstream
umgestellt und dabei dann im System.Classes Source Code ein verrschrecktes

Delphi-Quellcode:
  end; // deprecated 'Use TBytesStream';
bei der Klassendeklaration entdeckt :stupid:, aber Grund dafür warum man das Compilerverhalten einfach so ändert das der alte Code nicht mehr funktioniert (und auch noch still und heimlich Unsinn treibt) sehe ich trotzdem keinen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 Uhr.
Seite 2 von 2     12   

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