AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi THashSHA1 funktioniert nicht mehr in 10.2(.1)?
Thema durchsuchen
Ansicht
Themen-Optionen

THashSHA1 funktioniert nicht mehr in 10.2(.1)?

Ein Thema von Whookie · begonnen am 24. Aug 2017 · letzter Beitrag vom 25. Aug 2017
Antwort Antwort
Seite 2 von 2     12   
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#11

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

  Alt 24. Aug 2017, 15:58
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?
procedure Update(const AData: TBytes; ALength: Cardinal = 0); overload; inline; ist ja INLINE deklariert und wird dadurch vom Debugger gar nicht angesprungen?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#12

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

  Alt 24. Aug 2017, 16:01
Einzige Änderung die ich sehe ist die Hinzunahme von System.Classes in die Uses, aber kann das die Ursache sein?
  Mit Zitat antworten Zitat
gammatester

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

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

  Alt 24. Aug 2017, 16:26
Zumindest bei kleinen Files bringt 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.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#14

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

  Alt 24. Aug 2017, 16:48
Zumindest bei kleinen Files bringt 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 BUFFERSIZE = 4 * 1024; Bytes funktionieren.
Wer die Konstante in der Tokyo-System.Hash-Unit findet, darf sie behalten.
  Mit Zitat antworten Zitat
gammatester

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

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

  Alt 24. Aug 2017, 16:54
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.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

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

  Alt 24. Aug 2017, 17:24
Ich verstehe nicht warum ihr euch das mit untypisierten Zeigern überhaupt antut. Warum nicht einfach ein TBytesStream , dessen Bytes nehmen und fertig?

PS: 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;

Geändert von Der schöne Günther (24. Aug 2017 um 17:28 Uhr)
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#17

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

  Alt 25. Aug 2017, 08:42
Ich verstehe nicht warum ihr euch das mit untypisierten Zeigern überhaupt antut. Warum nicht einfach ein TBytesStream , dessen Bytes nehmen und fertig?
(Bei mir) zum größten Teil aus historischen Gründen, never change running code ...

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

  end; // deprecated 'Use TBytesStream'; bei der Klassendeklaration entdeckt , 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.
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:10 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