Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kompressionsverfahren (https://www.delphipraxis.net/54935-kompressionsverfahren.html)

Prototypjack 13. Okt 2005 17:26


Kompressionsverfahren
 
Hallo,
Wir arbeiten zur Zeit an einem Installer für unser Projekt.
Mittlerweile sind wir an dem Punkt angelangt, die Kompressionsmethode zu bestimmen.
In den näheren Betrachtungswinkel sind bereits die bzlib mund die zlib geraten.
Ich wollte euch an dieser Stelle fragen ob ihr(In Sachen gute Kompression ohne extra Dlls) Alternativen kennt.
Desweiteren wollte ich an dieser Stelle fragen ob ihr irgendwelche Units kennt, welche die Arbeit mit diesen Libs erleichtern. Das würde mir/uns sehr viel arbeit ersparen.
Falls ihr alternativen kennt sollten diese Verzeichnisstrukturen unterstützen am besten in etwa so:
Delphi-Quellcode:
addfile(FFilename, 'testordner\datei.txt');
Aber das ist nur ein Beispiel

Danke schonmal
Gruß,
Max

Dax 13. Okt 2005 17:44

Re: Kompressionsverfahren
 
Wenn ihr einen Installer braucht, würde ich euch liebend gerne NSIS ans Herz legen ;)

alzaimar 13. Okt 2005 18:17

Re: Kompressionsverfahren
 
ZlibEx dürfte das Richtige sein: Sehr schnell, sehr kompakt, in jedem Fall besser als bzip.

ripper8472 13. Okt 2005 20:21

Re: Kompressionsverfahren
 
ich kenne auch noch Inno Setup, das irgendwie bekannt aussieht...

Prototypjack 13. Okt 2005 22:58

Re: Kompressionsverfahren
 
Danke für die guten Installer-Empfehlungen, jedoch brauche ich die nicht ;)
Wir schreiben uns deshalb einen eigenen weil wir sehen wollen wie es mit der Planung und Verteilung der Aufgaben aussieht, bevor wir das richtige Projekt beginnen ;)

Ich habe die ZLibEx gerade etwas angetestet.
Kann mir jemand bei gelegenheit eine Doku für die geben?
Mir wurde bis jetzt noch nicht klar wie man mit dieser mehrere Dateien auf einmal packt.

Danke schonmal,
Gruß,
Max

alzaimar 13. Okt 2005 23:28

Re: Kompressionsverfahren
 
Denk Dir doch einfach ein eigenes Format aus, z.B.:
Code:
CompressionFile ::= <CompressedFile> [<CompressionFile>]
CompressedFile ::= <Filename> <CRC32> <CompressedData>
CompressedData ::= <Length Int64> <Length Bytes Of Compressed Data>
Ja, natürlich, Handarbeit ist angesagt. Vermutlich gibt es auch ein ZIP-kompatibles Tool, aber ich denke, mit einem proprietären Format lernt man doch ne ganze Menge.

yankee 14. Okt 2005 04:06

Re: Kompressionsverfahren
 
*anmerk* die meisten Installer verwenden unter Windows .cab und unter Linux bz2. Also mit bzip liegst du schonmal gut. Aber .cab ist vielleicht auch einen Blick wert. Soweit ich weiß ist bei JVCL was dabei um mit .cab umzugehen.

Luckie 14. Okt 2005 04:11

Re: Kompressionsverfahren
 
.cab kennt keine Verzeichnisstrukturen und die Kompression ist auch mehr als dürftig. Ich würde meine Finger davon lassen. Ich werfe noch mal /z in die Runde, das dürfte bisher wohl das beste Komprimierungsverfahren sein, auch wenn man etwas Geschwindigkeitseinbußen hat.

yankee 14. Okt 2005 06:16

Re: Kompressionsverfahren
 
Zitat:

Zitat von Luckie
.cab kennt keine Verzeichnisstrukturen und die Kompression ist auch mehr als dürftig. Ich würde meine Finger davon lassen. Ich werfe noch mal /z in die Runde, das dürfte bisher wohl das beste Komprimierungsverfahren sein, auch wenn man etwas Geschwindigkeitseinbußen hat.

/z? Never heard. Wer denkt sich denn so einen doofen Namen aus? Das ist genau der Typ Name, wo man mit google oder jeglicher anderen Suchmaschine kein brauchbares Ergebnis erwarten kann :roll: .

Also mal im Ernst, wo, wie, wann, warum?

Luckie 14. Okt 2005 06:25

Re: Kompressionsverfahren
 
Bei Google suchen7z erste Ergebnis. :roll: Und unten auf der Seite sind sogar gleich Vergleiche zwischen dn verschiedenen Formaten.

yankee 14. Okt 2005 06:42

Re: Kompressionsverfahren
 
Zitat:

Zitat von Luckie
Bei Google suchen7z erste Ergebnis. :roll: Und unten auf der Seite sind sogar gleich Vergleiche zwischen dn verschiedenen Formaten.

achsop, 7z... Klar, das kenne ich natürlich. Sry, normalerweise habe ich mit Tippfehlern keine Probleme, aber das mit dem slash habe ich diesmal absolut nicht geckeckt...

Bernhard Geyer 14. Okt 2005 08:33

Re: Kompressionsverfahren
 
Schau dir mal Abbrevia an. Dieses unterstützt diverse Kompressionsverfahren und kann (mit etwas handarbeit) sogar einzelne Streams ohne Dateiinfo komprimieren

Prototypjack 14. Okt 2005 14:09

Re: Kompressionsverfahren
 
Hallo,
Die Abbrevia Komponenten sind mir bereits bekannt.
Jedoch ist das Package einfach zu groß und wir hatten uhrsprünglich vorgesehen keine 3rd Party VCL-Componenten zu verwenden.
Das LZMA verfahren, welches afair in 7z verwendet wird, wäre natürlich absolut perfekt. Leider müsste man entweder einen Wrapper für die DLL schreiben(Was untragbar wäre) oder den Code ganz umschreiben, was den Rahmen der Zeit wahrscheinlich sprengen würde.
Gruß,
Max

Bernhard Geyer 14. Okt 2005 14:41

Re: Kompressionsverfahren
 
Zitat:

Zitat von Prototypjack
Jedoch ist das Package einfach zu groß

Irgendwo muß ja die Logik implementiert sein. Und wenn du nur ein Pack-Format verwendest wird auch nur dieses in die Exe gelinkt.
Zitat:

Zitat von Prototypjack
und wir hatten uhrsprünglich vorgesehen keine 3rd Party VCL-Componenten zu verwenden.

Und wieso? :gruebel: Ein Hersteller eines Autos würde auch niemals auf die Idee kommen keine Normteile oder Zulieferteile zu verwenden?
Und diese "Normteile" bzw. Zulieferteile sind nun mal die 3rd Party Komponenten. Und falls Du dich nicht zu sehr davon abhängig machen willst schreib dir doch einen Wrapper drum rum um sie notfalls einfach austauschen zu können.

Luckie 14. Okt 2005 19:41

Re: Kompressionsverfahren
 
@yankee: Kann es sein, dass du im falschen Topic gelandet bist? ;)

yankee 14. Okt 2005 19:49

Re: Kompressionsverfahren
 
Zitat:

Zitat von Luckie
@yankee: Kann es sein, dass du im falschen Topic gelandet bist? ;)

ähm, oh ja, das gehört woander hin. Sry...
Du kannst es ja löschen...

Prototypjack 27. Okt 2005 14:32

Re: Kompressionsverfahren
 
Hallo,
Ich will euch jetzt nochmal fragen.
Ich hatte damals(ca. 1 Woche nach erstellung des Threads) ein bischen Zeit und hab es auf die gute alte russische art komplett selbst gemacht, wie alzaimar sagte.
Dabei habe ich an einer Stelle im Code den Zlib-CompressStream eingebaut damit ich die Compression habe. Das ganze hatte den Vorteil das ich die Streams komprimiere und sie absolut frei handlen kann. Ich habe jegliche Freheit im Bezug auf Archivstruktur etc. pp.

Auf jeden Fall habe ich jetzt wieder ein bischen Zeit, und da ich in diesem Projekt bestmöglichste Arbeit leisten möchte, will ich den 7-Zip LZMA Algorithmus implentieren. Gibt es vielleicht schon irgendwelche Hilfen die sich auf Delphi beziehen und die DLL nicht benötigen? Das würde mir doch sehr helfen ;)
Gruß,
Max


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