Einzelnen Beitrag anzeigen

TiGü

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

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

  Alt 24. Aug 2017, 15:38
Sicher, daß das je richtig gelaufen ist? IMO gibt es (laut Hilfe) kein Overlay für TMemoryStream. Dein Code bringt auch unter 10.2 falsche Ergebnis. Ich vermute, es wird der Zweig für  Update(const AData; ALength: Cardinal); overload; verwendet.
Also Whookie verwendet diesen Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
  LSHA1: THashSHA1;
  LFile: TMemoryStream;
begin
  if OpenDialog1.Execute then
  begin
    LFile := TMemoryStream.Create;
    try
      LFile.LoadFromFile(OpenDialog1.FileName);

      LSHA1 := THashSHA1.Create;
      LSHA1.Update(LFile.Memory, LFile.Size);
      Edit1.Text := LSHA1.HashAsString;
    finally
      LFile.Free;
    end;

  end;
end;
Da wird der Zeiger auf den internen Buffer und die Größe übergeben. Er übergibt NICHT LFile direkt.
  Mit Zitat antworten Zitat