Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 7zip im eigenen Programm zum Dateitransfer verwenden (https://www.delphipraxis.net/133312-7zip-im-eigenen-programm-zum-dateitransfer-verwenden.html)

gsh 29. Apr 2009 14:46


7zip im eigenen Programm zum Dateitransfer verwenden
 
Hallo Leute,

ich würde gerne die 7zip Komprimierung in meinem Programm nutzen und habe dadurch ein paar Fragen:

1.) 7zip ist meines Wissens Open-Source. Trotzdem wollte ich fragen ob es Lizenztechnisch in Ordnung ist wenn ich 7zip (die DLL oder den Source) in meinem Programm (Freeware) zum komprimieren und zum dekomprimieren verwende und auch bei der Installation/Update mitführe. Einen Hinweis, dass ich 7zip benutze würde ich auf jeden Fall im Info Fenster von meinem Programm hinzufügen.

2.) Wie binde ich 7zip am besten ein? Soll ich mir den Source nach Delphi portieren (gibt es so was schon?) oder doch besser eine DLL verwenden?

3.) Kann der 7zip Algorithmus überhaupt den Stream Stück für Stück komprimieren? Also kann ich ihm nach einander die Datei in 40KB Häppchen geben und bekomme sofort die ersten komprimierten Daten heraus die ich gleich über das Netzwerk übertragen kann bevor die Datei fertig komprimiert wurde?

jaenicke 30. Apr 2009 00:32

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
Du kannst laut der LGPL extern eingebundene Dateien wie DLLs benutzen ohne dass dein Programm auch unter der LGPL stehen muss, das gilt auch für kommerzielle Software.
Die DLL mitzuführen sollte also die problemloseste Lösung sein.

7zip unterstützt prinzipiell auch die Komprimierung von Streams. Ob das Format für eine Netzwerkübertragung so sinnvoll ist, bezweifle ich eigentlich, aber ich habe mich damit nicht näher auseinandergesetzt. Ich glaube aber, dass andere Formate sicher sinnvoller sein dürften.

cookie22 30. Apr 2009 03:42

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
wie jaenicke schon sagte ist es lizenztechnisch kein problem die dll zu benutzen.

was du allerdings wissen solltes, 7zip ist kein algo sondern ein archivformat. 7zip unterstützt verschiedene algorithmen. z.B. lzma, bzip2 oder ppmd.

je nachdem welcher art deine daten sind ist der eine besser als der andere.

lzma ist z.B. gut für binäre daten. ppmd und bzip2 sind gut für texte.

also für dich sollte das lzma sdk besser sein als die 7z dll. davon gibt es auch einen delphi port.

Lzma Sdk Pascal Port

sollte es nicht unbedingt nötig sein die daten sehr stark zu komprimieren, benutz doch einfach zlib. Das ist schon bei delphi dabei und ist schnell.

gsh 30. Apr 2009 08:55

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
Zitat:

Zitat von jaenicke
Du kannst laut der LGPL extern eingebundene Dateien wie DLLs benutzen ohne dass dein Programm auch unter der LGPL stehen muss, das gilt auch für kommerzielle Software.
Die DLL mitzuführen sollte also die problemloseste Lösung sein.

Wunderbar

Zitat:

Zitat von jaenicke
7zip unterstützt prinzipiell auch die Komprimierung von Streams. Ob das Format für eine Netzwerkübertragung so sinnvoll ist, bezweifle ich eigentlich, aber ich habe mich damit nicht näher auseinandergesetzt. Ich glaube aber, dass andere Formate sicher sinnvoller sein dürften.

Welche Formate würdest du den als sinnvoller ansehen? Zlib?

Zitat:

Zitat von cookie22
was du allerdings wissen solltes, 7zip ist kein algo sondern ein archivformat. 7zip unterstützt verschiedene algorithmen. z.B. lzma, bzip2 oder ppmd.

Da hast du natürlich recht.

Zitat:

Zitat von cookie22
je nachdem welcher art deine daten sind ist der eine besser als der andere.
lzma ist z.B. gut für binäre daten. ppmd und bzip2 sind gut für texte.

Hmm da ergeben sich ja interessante Erweiterungen für meinen intelligenten Filter. Der je nach Dateiendung entscheidet ob die Datei komprimiert werden muss oder nicht. Dann könnte er ja sogar entscheiden wie er die Dateien komprimiert :D
Gibt es eine genaue Auflistung der Unterschiede von diesen Algos?

Zitat:

Zitat von cookie22
also für dich sollte das lzma sdk besser sein als die 7z dll. davon gibt es auch einen delphi port.
Lzma Sdk Pascal Port

Danke für den Link. Habs mir kurz angeschaut ... sieht aber ziemlich kompliziert aus. Außerdem hab ich dann den Nachteil, dass ich die anderen Algos nicht nutzen kann. Außerdem ist bei solchen Portierungen die Frage ob diese längere Zeit lang aktuell gehalten werden.

Zitat:

Zitat von cookie22
sollte es nicht unbedingt nötig sein die daten sehr stark zu komprimieren, benutz doch einfach zlib. Das ist schon bei delphi dabei und ist schnell.

Ich würde die Daten schon ganz gerne stark komprimieren. Dies dürfte zwar im LAN Bereich unnötig sein aber wenn jemand eine Datei über das Internet überträgt und nicht vorher ein Archiv daraus macht dann könnte dies erheblich die Übertragung beschleunigen da weniger Übertragen werden muss.

Ich kenne mich nicht so gut mit Komprimierungs Algorthimen aus deswegen frage ich euch. Glaubt ihr es lohnt sich 7zip (also lzma, bzip2 und ppmd ;) ) statt zlib zu nutzen? Natürlich ist mir klar, dass dies wahrscheinlich stark davon abhängt welche Dateien übertragen werden sollen. Genau kann ich das leider nicht sagen aber es dürften vor allem solche Dateien sein: .wav, .mp3, .avi, .jpg, .bmp, .png, .iso, .txt, .doc, .pps

Satty67 30. Apr 2009 09:32

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
Blöde Frage... früher wurden die Daten bereits vom Modem komprimiert (nicht besonders gut, aber immerhin). Ist das aktuell (DSL, TCP/IP, FTP) nicht mehr so?

gsh 30. Apr 2009 09:42

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
Zitat:

Zitat von Satty67
Blöde Frage... früher wurden die Daten bereits vom Modem komprimiert (nicht besonders gut, aber immerhin). Ist das aktuell (DSL, TCP/IP, FTP) nicht mehr so?

Also obs bei den alten Modems so war kann ich nicht sagen aber bei DSL, TCP/IP gibt es imho nichts was standartmäßig komprimiert wird. Bei FTP gibts zwar ein Komprimierungsverfahren dieses ist aber nicht standartmäßig und wird nicht von allen servern/clients unterstützt.
Das ganze ist aber ein bisschen OT :warn:

cookie22 30. Apr 2009 11:05

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
Zitat:

Zitat von gsh
... Ich kenne mich nicht so gut mit Komprimierungs Algorthimen aus deswegen frage ich euch. Glaubt ihr es lohnt sich 7zip (also lzma, bzip2 und ppmd ;) ) statt zlib zu nutzen? Natürlich ist mir klar, dass dies wahrscheinlich stark davon abhängt welche Dateien übertragen werden sollen. Genau kann ich das leider nicht sagen aber es dürften vor allem solche Dateien sein: .wav, .mp3, .avi, .jpg, .bmp, .png, .iso, .txt, .doc, .pps

zlib ist schnell und bietet moderate komprimierung, lzma und ppmd sind etwas langsamer komprimieren aber um bis zu einem drittel besser (manchmal auch mehr).

das problem ist, daß eine ganze menge der datei typen, die du hier aufgezählt hast schon komprimiert sind. bei jpg, mp3, avi und png wirst du nicht mehr viel komprimieren können. für text und doc files ist mit sicherheit ppmd am besten, für den rest lzma.

um sowas wie jpg zu komprimieren bräuchtest du den paq8 algo, der ist aber grotten lahm und für deine zwecke eher ungeeignet.

falls du eine dll für ppmd suchst könnte ich hier was posten.

gsh 30. Apr 2009 12:38

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
Zitat:

Zitat von cookie22
zlib ist schnell und bietet moderate komprimierung, lzma und ppmd sind etwas langsamer komprimieren aber um bis zu einem drittel besser (manchmal auch mehr).

das problem ist, daß eine ganze menge der datei typen, die du hier aufgezählt hast schon komprimiert sind. bei jpg, mp3, avi und png wirst du nicht mehr viel komprimieren können. für text und doc files ist mit sicherheit ppmd am besten, für den rest lzma.

um sowas wie jpg zu komprimieren bräuchtest du den paq8 algo, der ist aber grotten lahm und für deine zwecke eher ungeeignet.

falls du eine dll für ppmd suchst könnte ich hier was posten.

Was ist den mit bzip2 ist das sowas wie die zlib? Wenn ja dann kann ich einfach das jeden einstellen was er lieber hat. Weniger CPU oder schnellere Übertragung (bei einer langsamen Leitung).

MP3, avi, jpg, png werd ich wahrscheinlich noch standart mäßig im filter ausnehmen das diese nicht komprimiert werden.

cookie22 30. Apr 2009 18:11

Re: 7zip im eigenen Programm zum Dateitransfer verwenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
bzip2 ist halt auch ein algo. er komprimiert texte sehr gut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz