![]() |
TZIpFile Komprimierung
TZIpFile unterstützt
![]() Wenn TZipCompression.zcLZMA verwendet wird, erscheint diese Meldung: Zitat:
(D 10.3) Mein Testcode:
Delphi-Quellcode:
Zusatzfrage: Welche Komprimierung verwendet Windows (10) ?
uses
System.Zip; procedure TForm1.zipClick(Sender: TObject); const f = 'c:\irgendwas.zip'; // output file v = 'C:\temp' // Ordner, welcher komprimiert werden soll. var myZipFile: TZIpFile; begin if FileExists(f) then begin TFile.Delete(f); end; myZipFile := TZIpFile.Create; myZipFile.Open(f, TZipMode.zmWrite); myZipFile.Close; myZipFile.Free; TZIpFile.ZipDirectoryContents(f, v, TZipCompression.zcLZMA); end; |
AW: TZIpFile Komprimierung
Was hat das mit Win10 zu tun?
Es wird nichts von Windows verwendet. Es kann anzeigen, dass es diese offiziell registrierten Kompimierungsmethoden gibt, ![]() aber das heißt noch lange nicht, dass diese Alle auch in der Delphi-Komponente "implementiert" sind. Außer Stored und Deflate kann TZipFile nichts packen oder entpacken. Du kannst nur eine fremde Zip laden und dann nachsehn, ob sowas verwendet wurde. Alternativ kannst/mußt DU zusätzliche Methoden implementieren und bei TZipFile registrieren, dann ginge es auch damit. siehe TZipFile.Create |
AW: TZIpFile Komprimierung
Zitat:
Mittlerweile habe ich die ShellZipTool Unit gefunden: ![]() |
AW: TZIpFile Komprimierung
Windows ist egal.
Es macht das, was ZIP standardmäßig "selbst" kann, also was dort auch entwickelt oder lizenziert ist. Und das ist Deflate, sowie Stored (unkomprimiert). Alles Andere kommt/kam von Fremdentwicklern und ist "optional". Darum kann auch nie alles drin sein, was offiziell registriert ist oder auch nicht, wegen fehlender Lizenzen und so. |
AW: TZIpFile Komprimierung
![]() Zitat:
|
AW: TZIpFile Komprimierung
Das ist auch egal.
NTFS macht der Dateisystemtreiber. Das hat nichts mit ZIP zu tun. Es gibt nur noch das ZipFolder-Addon im Explorer und das kennt die MinimalAusstattung der ZIP-Spezifikation. (inkl. Zip64) im Dateisystem: FindFirstFile/GetFileAttribute/... mit FILE_ATTRIBUTE_COMPRESSED zum Lesen, oder DeviceIoControl mit FSCTL_SET_COMPRESSION zum Setzen und GetCompressedFileSize für die "reale" Dateigröße" Es gibt im .NET / C# eine Zip-Klasse System.IO.Compression.ZipFile (die Win32-API hat sowas wohl nicht) ![]() Der Lempel-Ziv-Algorithmus ist OpenSource von Microsoft auf GitHub zu finden. Aber es gibt auch passende APIs dafür, um es selbst im Programm zu nutzen. (außerhalb des NTFS) ![]() ![]() Das ist dann sowas ähliches wie TCompressedStream, womit man die Komprimierung von ZIP einzeln nutzen kann. Die NTFS-Verschlüsselung ist da schöner gelöst, als die Komprimierung. FILE_ATTRIBUTE_ENCRYPTED mit EncryptFile, DecryptFile, OpenEncryptedFileRaw usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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