AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 7zip im eigenen Programm zum Dateitransfer verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

7zip im eigenen Programm zum Dateitransfer verwenden

Ein Thema von gsh · begonnen am 29. Apr 2009 · letzter Beitrag vom 30. Apr 2009
Antwort Antwort
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 29. Apr 2009, 14:46
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?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.343 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 00:32
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#3

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 03:42
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.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 08:55
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 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 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 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
Gibt es eine genaue Auflistung der Unterschiede von diesen Algos?

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 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
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 09:32
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?
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#6

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 09:42
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
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#7

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 11:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#8

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 12:38
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.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#9

Re: 7zip im eigenen Programm zum Dateitransfer verwenden

  Alt 30. Apr 2009, 18:11
bzip2 ist halt auch ein algo. er komprimiert texte sehr gut.
Angehängte Dateien
Dateityp: rar bzlib2_786.rar (24,8 KB, 18x aufgerufen)
  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 11:00 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