Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Compiler erkennt TFileStream nicht (https://www.delphipraxis.net/197153-compiler-erkennt-tfilestream-nicht.html)

Frankieboy82 19. Jul 2018 10:33

Delphi-Version: 10.2 Tokyo

Compiler erkennt TFileStream nicht
 
Hallo,

ich habe gerade eine Unit für ein altes Projekt neu geschrieben und habe auch gleich ein Problem damit.
Es geht um die Berechnung der CRC32 und MD5 Prüfsumme für Dateien.

Den Code zur Errechnung der MD5 Daten habe ich von hier: https://www.thoughtco.com/md5-hashing-in-delphi-1058202
Die Funktion habe ich praktisch komplett übernommen, nur den Namen etwas geändert (in MD5File)... Die Units IdHashMessageDigest und idHash habe ich im Interface deklariert.

Probleme gibt es nur bei dieser Funktion.
Und zwar erkennt der Compiler den Typ "TFileStream" darin nicht. DIe Fehlermeldung ist
E2003: Undeklarierter Bezeichner: 'TFileSTream'

Dabei ist TFileStream doch aus der Unit System, und müsste auf jeden Fall gefunden werden!

Neutral General 19. Jul 2018 10:44

AW: Compiler erkennt TFileStream nicht
 
TFileStream ist aus der Unit System.Classes

Bernhard Geyer 19. Jul 2018 11:01

AW: Compiler erkennt TFileStream nicht
 
Und bei MD5 nimmt man die vorhanden Funktionalität aus der mitgelieferten Unit Sytem.Hash.

Die URL hat ein Codebeispiel den man bei alten Delphi-Versionen nutzen musste.

Frankieboy82 19. Jul 2018 13:56

AW: Compiler erkennt TFileStream nicht
 
ok.

Gibt es auch eine implementierte Funktion, um eine CRC32-Checksumme für Dateien zu erstellen?

Redeemer 19. Jul 2018 18:07

AW: Compiler erkennt TFileStream nicht
 
Die ist in der Unit pngimage, funktioniert aber nur mit TMemoryStream und dessen Erben (TBytesStream und TStringStream). Einen TFileStream kann man natürlich schnell in einen TMemoryStream kopieren, aber der hat auch LoadFromFile, von daher braucht man das nicht.

Delphi-Quellcode:
function CRC32(Stream: TMemoryStream): Cardinal;
var
  Bytes: PNGImage.pByteArray;
begin
  Bytes := Stream.Memory;
  Result := not PNGImage.update_crc(not 0, Bytes, Stream.Size);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 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