Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert' (https://www.delphipraxis.net/196039-tzipfile-unterstuetzung-fuer-komprimierungsmethode-nicht-registriert.html)

sko1 17. Apr 2018 14:46

TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Hallo,

weil ich Probleme mit Dateien mit Umlauten in Abbrevia TABZipper habe, wollte ich TZipFile verwenden, aber egal welchen Komprimierungsmodus ich einstelle, ich bekomme immer diese Fehlermeldung:

'Unterstützung für Komprimierungsmethode nicht registriert'

Hat jemand eine Idee dazu?

Ciao
Stefan

KodeZwerg 17. Apr 2018 15:58

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Delphi-Quellcode:
if FItemInfo.IsUTF8 or (AbDetectCharSet(FItemInfo.FileName) = csUTF8) then FFileName := UTF8ToString(FItemInfo.FileName)
Das wäre mein Tipp für Abbrevia/Unicode Namen.

günni0 17. Apr 2018 16:04

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Wenn Tipps außerhalb Abbrevia und TZipFile erlaubt sind, dann empfehle ich JCL und 7z zu verwenden.
Ich bin damals von Abbrevia zu TZipFile, über irgendwas anderes dann zu JCL mit 7z gewechselt. Habe es nicht bereut.

KodeZwerg 17. Apr 2018 16:07

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Hier ist Abbrevia und FlexCompress am Start, das letztere ist für uns echt gut.

hoika 17. Apr 2018 16:38

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Hallo,
etwas Code wäre schön.
Und klappt es prinzipiell nicht, oder nur bei Umlauten?

zeras 17. Apr 2018 18:13

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Mein Tipp : http://www.delphizip.org/: Dass nutze ich schon mehrere Jahre ohne Probleme.

KodeZwerg 17. Apr 2018 18:33

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
@zeras: Unterstützt dein Tipp Unicode? Ich finde auf dieser Webseite keine Informationen.

sko1 18. Apr 2018 08:09

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399587)
Delphi-Quellcode:
if FItemInfo.IsUTF8 or (AbDetectCharSet(FItemInfo.FileName) = csUTF8) then FFileName := UTF8ToString(FItemInfo.FileName)
Das wäre mein Tipp für Abbrevia/Unicode Namen.

Kannst Du mir bitte mal erläutern was ich jetzt mit dem Schnipsel anfangen soll?
Mein Problem:
Ich muss Dateien mit Umlauten zippen, egal womit ich zippe ist das augenscheinlich bei mir im Windows Explorer und im Totalcommander korrekt, die enthaltenen Dateien werden da korrekt angezeigt und sind extrahierbar, aber bei einem Anwender des fertigen Programms meckert der DATEV Importer dass er die enthaltene Datei nicht findet.
Ein Kollege wiederum öffnet das Zip in seinem Totalcommander und sieht anstelle der Umlaute "Müllzeichen".

Wie gehe ich das nun an?


Ciao
Stefan

Redeemer 18. Apr 2018 09:16

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Screenshot von den "Müllzeichen" bitte.

KodeZwerg 18. Apr 2018 11:47

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Zitat:

Zitat von sko1 (Beitrag 1399631)
Kannst Du mir bitte mal erläutern was ich jetzt mit dem Schnipsel anfangen soll?

Ich dachte es wäre klar da es Abbrevia Code ist.
Mache Datei AbZipTyp.pas auf und suche
Delphi-Quellcode:
  { decode filename (ANSI/OEM/UTF-8) }
  if FItemInfo.IsUTF8 or (AbDetectCharSet(FItemInfo.FileName) = csUTF8) then
    FFileName := UTF8ToString(FItemInfo.FileName)
das sollte/könnte der Fehler sein, eine korrektur nach
Delphi-Quellcode:
  { decode filename (ANSI/OEM/UTF-8) }
  if FItemInfo.IsUTF8 = csUTF8 then
    FFileName := UTF8ToString(FItemInfo.FileName)
sollte abhilfe schaffen.

Zum testen ob bei Dir bzw Kunden nun alles richtig läuft empfehle ich Dir hier die Test-Archive mal mit Deinem Code durchzuprobieren.
Die Test-Archive kannst Du natürlich auch mit jeder anderen Archiver Software auf korrektheit prüfen lassen.

sko1 18. Apr 2018 12:27

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein Screenshot im Anhang...

Die Datei heißt eigentlich Freizeitföüährer.pdf

Was das Testen betrifft, ich brauche eigentlich den umgekehrten Weg:
Ich muss wissen ob mein Zip korrekt ist und der entpackende Empfänger ein Problem hat...

Das mit der Abbrevia-Änderung probiere ich aus...

Ciao
Stefan

timog 18. Apr 2018 21:08

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Stefan,

leider schreibst Du nicht, welche Version vom TotalCommander Dein Kollege verwendet, sieht auf dem Bildschirmfoto aber schon älter aus. Der aktuelle TotalCommander 9.12 öffnet und entpackt eine mit TZipFile gepackte Umlautdatei aus einer ZIP-Datei (siehe unten) problemlos.

Der "DATEV Importer" wird von Dir nicht näher spezifiziert - es kann also sein, dass es vielleicht an der fehlenden "Unicode"-Unterstützung der Fremdprogramme liegen kann? Dann wäre die Aufgabenstellung eventuell eher, einen OEM/ANSI-Dateinamen in eine ZIP-Datei zu bekommen, um Kompatibilität herzustellen?

Die Prüfung auf Korrektheit der ZIP-Datei ist so eine Sache: Bedeutet korrekt, dass die ZIP RFC-1950 erfüllt, dass das Dateiformat nach PKZip eingehalten wurde oder dass der Kunde in seinem Fremdprogramm damit arbeiten kann?

Doch zurück zu Deiner Frage und dem Titel: 'Unterstützung für Komprimierungsmethode nicht registriert' - da Du leider keinen Code gepostet hast, der zu dem Fehler führt, hier mal ein Beispiel, welches unter Delphi 10.2.3 und Windows 10 Build 1709 die beigefügt ZIP-Datei erstellt hat.

Delphi-Quellcode:
uses
   System.Zip;

procedure ZipAFile(const AArchiveName, AFilename: string);
var
  LZip: TZipFile;
begin
  LZip:=TZipFile.Create;
  try
    if FileExists(AArchiveName) then DeleteFile(AArchiveName);
    LZip.Open(AArchiveName, zmWrite);
    LZip.Add(AFilename);
    LZip.Close;
  finally
    LZip.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ZipAFile('c:\temp\test.zip', 'c:\temp\Freißeitföüährer.txt');
end;
Die gepackte Datei Freißeitföüährer.txt kann mit Windows 10 und unter macOS 10.13 mit Bordmitteln sowie auf iPhone und iPad mit diversen Apps aus test.zip entpackt werden (Android gerade nicht parat) und die Umlaute bleiben intakt.

Modifiziere diesen Code-Schnipsel doch bitte einmal so, dass der Fehler auftritt (interessiert mich gerade, da wir bald etwas mit ZIP-Dateien vorhaben und eigentlich TZipFile nehmen wollten).

Viel Erfolg!

KodeZwerg 18. Apr 2018 21:45

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
TZipFile hat, abgesehen von keiner guten Kompression, den Nachteil das es nicht mit Passwörter klar kommt.
Zumindest in Delphi Berlin gab es da noch keine Passwort Unterstützung.
Vorteil wegen niedriger Komression ist allerdings die Geschwindigkeit.

Uwe Raabe 18. Apr 2018 21:55

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399751)
TZipFile hat, abgesehen von keiner guten Kompression, den Nachteil das es nicht mit Passwörter klar kommt.

Das kann man ja ändern: TZipFile with Password Encryption

timog 18. Apr 2018 21:59

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399751)
TZipFile hat, abgesehen von keiner guten Kompression, den Nachteil das es nicht mit Passwörter klar kommt.
Zumindest in Delphi Berlin gab es da noch keine Passwort Unterstützung.
Vorteil wegen niedriger Komression ist allerdings die Geschwindigkeit.

So wie Uwe das macht bzw. das Wiki es vorschlägt, würde reichen.

Und zur Kompression: Wenn etwas anderes als deflate verwendet wird, ist es kein normales ZIP File mehr, sondern ein durch WinZip populär gemachtes erweitertes Format, für das mittlerweile zipx als Dateierweiterung verwendet werden sollte. Aber wir schweifen ab...

timog 18. Apr 2018 22:01

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1399752)
Das kann man ja ändern: TZipFile with Password Encryption

Genau das habe ich mir auch gedacht :-)

KodeZwerg 18. Apr 2018 22:05

AW: TZipFile 'Unterstützung für Komprimierungsmethode nicht registriert'
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1399752)
Das kann man ja ändern: TZipFile with Password Encryption

Ich wusste nicht dass das möglich ist, Danke für den Link und Deine Arbeit damit!


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