Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#4

AW: FileStream to Buffer

  Alt 18. Aug 2021, 21:23
Position:=0; ist hier nicht nötig, da nur einmal gelesen wird und zu Beginn, nach dem Create, die Position immer auf 0 steht. (außer beim Append)

Ja, geht so, so lange die Datei klein genug ist und immer in deinen virtuellen Speicher (2 GB) passt, sonst muß der Buffer kleiner sein und die Datei stückchenweise eingelesen werden.

Warum hast du keinen Ressourcenschutzblock verbaut?

Und ansonsten gibt es auch Streams, welche direkt einen "Buffer" eingebaut haben,
wie z.B. TMemoryStream und TBytesStream (ich glaub erst ab D2009 oder so).

Delphi-Quellcode:
// falls man HashBuf auch mit einem Pointer füttern kann, anstatt TBytes
FStream := TMemoryStream.Create;
try
  FStream.LoadFromFile(Edit3.Text);
  HashBuf(HASH_SHA256, FStream.Memory, FStream.Size, DestStr);
  Edit2.Text := DestStr;
finally
  FStream.Free;
end;
Und wie immer die Frage, warum so ein altes Delphi?
Denn Delphi-Referenz durchsuchenTHashSHA2 und Edit2.Text := THashSHA2.GetHashStringFromFile(Edit3.Text); .
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (18. Aug 2021 um 21:30 Uhr)
  Mit Zitat antworten Zitat