AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Große Dateien Komprimieren und zeit gleich verschlüsseln
Thema durchsuchen
Ansicht
Themen-Optionen

Große Dateien Komprimieren und zeit gleich verschlüsseln

Ein Thema von DelTurbo · begonnen am 24. Jan 2024 · letzter Beitrag vom 25. Jan 2024
Antwort Antwort
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#1

AW: Große Dateien Komprimieren und zeit gleich verschlüsseln

  Alt 24. Jan 2024, 16:20
@Delphi.Narium,
tut mir leid das die Rückmeldung so lange gedauert hat. Der Ansatz ist bei kleinen Files die Lokal auf der Platte liegen super. Ich habe das allerdings die ganze zeit auf dem LAN mit einem 15GB File getestet. Der Nachteil an dieser Lösung ist, das die gepackte Datei nochmal gelesen und geschrieben wird. Und das dauert halt. Möchte man dann noch ein Verify machen muss man es ein drittes mal lesen.
Alleine wie man verschlüsselt hätte ich suchen müssen. Was bei dir drin ist und gut beschrieben ist.

Aber ich habe auch eine Lösung. Ich habe mir die IdZLib.pas in meinen Projekt Ordner geholt und schreibe die "einfach" um. Ich habe die stelle gefunden an dem der gepackte Block geschrieben wird. Ist unter DoCompressStream eine Procedure die WriteOut heißt. Vor dem Schreiben werde ich den Stream dann verschlüsseln. Ich habe die IdZLib.pas extra kopiert weil ich ja das Indy selber nicht nur noch für das eine Projekt nutzen möchte.

@mytbo,
Deine Sache habe ich mir runtergeladen und schaue mal wie das dort gelöst ist.

Das Problem ist halt das es kleine oder auch richtig große Dateien sein können.

Ich danke euch beiden für die Hilfe.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Große Dateien Komprimieren und zeit gleich verschlüsseln

  Alt 24. Jan 2024, 17:08
Gab es nicht ZLib-Streams, welche den einen Stream per Constroktor rein bekommen und dann alle Schreib-/Lesevorgänge an diesen Stream durchreichen,
nachdem für das Stück vom aktuellen Write-Befehl durch die Komprimierung lief.

Ähliches hatte ich doch auch schon für Verschlüsselungs-Streams gesehen.

Also die beisen Streams hintereinander schalten, und dann innen das Read/Write/Copy, welches direkt oder mit je einem kleinen Puffer quasi direkt durchgereicht wird.


PS: Ziehe die ZIP-Klasse im Delphi ... da machen doch (glaub ich) die Streams sowas.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
482 Beiträge
 
#3

AW: Große Dateien Komprimieren und zeit gleich verschlüsseln

  Alt 24. Jan 2024, 18:15
Das Problem ist halt das es kleine oder auch richtig große Dateien sein können.
Einfach 7Zip nehmen:
Delphi-Quellcode:
uses
  mormot.core.base,
  mormot.core.text,
  mormot.core.unicode,
  mormot.core.os,
  mormot.lib.win7zip;

begin
  var dataFile: TFileName := MakePath([Executable.ProgramFilePath, 'TestData.dat']);
  var libWriter: I7zWriter := New7zWriter(fh7z);
  libWriter.SetCompressionLevel(3);
  libWriter.SetPassword('TopSecret');
  if libWriter.AddFile(dataFile, StringToUtf8(ExtractFileName(dataFile))) then
    libWriter.SaveToFile(MakePath([Executable.ProgramFilePath, 'TestData.7z']))
  else
    ShowMessage('Something went wrong!');
Die 7za.dll kann von der offiziellen Seite geladen werden.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#4

AW: Große Dateien Komprimieren und zeit gleich verschlüsseln

  Alt 25. Jan 2024, 09:51
Hi,
nun weiß ich noch vom letzten mal warum du die uses bei eschrieben hast. Ja, ich bin lernfähig, soweit es das Alter noch zulässt...
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz