Autor |
Beitrag |
Mr_Sven
      
Beiträge: 38
D7 Prof., C# (VS 2008)
|
Verfasst: Mo 12.02.07 17:19
Hi Leute,
habe ein Problem mit dem Dekomprimieren von UnixCompressed Files.
Ich habe die unlzw Funktion von gzip 1.24 von C nach Pascal portiert.
Es funktionier soweit alles, nur das er bei größeren Dateien probleme bekommt.
Vieleicht könnt ihr euch das mal anschauen, ich denke ich habe irgent ein Fehler bei der Portierung gemacht.
ZIP File:
comp.Z - Komptimiertes File
uncomp_tobe - Unkomprimiertes File wie es gZip entpackt
uncomp - Unkomprimiertes File wie es die Unit entpackt
lzwUnit.pas - LZW Unit
lzw.c - gZip LZW Code
lzw.h - gZip LZW Header
unlzw.c - gZip unLZW Code
Einloggen, um Attachments anzusehen!
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 12.02.07 17:28
sag mal, weshalb compilierst dir das C file nicht gleich in delphi? oder bindest das compilat dann anschliessend als Obj file in eine Unit ein?
dann würdest dir doch die ganze arbeit ersparen, von den möglichen fehlerquellen mal abgesehen.
|
|
Mr_Sven 
      
Beiträge: 38
D7 Prof., C# (VS 2008)
|
Verfasst: Mo 12.02.07 17:31
naja, wenns funktioniert.
haste nen Tut irgentwo?
Gruß Sven
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 12.02.07 17:47
kompilieren kannste es ja mit jeden handelsüblichen C compiler oder eben mit delphi2006 ab SP1, hier kannste das auch einbinden und mischen.
ansonsten gehts einfach per direktive
{$L DeinObjFile.OBJ}
und der deklaration der funktionen als external;
bspw: procedure moveword(var sourc, dest;count: integer); external;
'n C compiler gibts hier: DOWNLOAD TURBO C oder bei borland/codegear zum kostenlosen download. <HTH>
|
|
Mr_Sven 
      
Beiträge: 38
D7 Prof., C# (VS 2008)
|
Verfasst: Di 13.02.07 10:39
So, hab den fehler gefunden, (Happy)
nun funktionierts.
Habe das Unit noch mit nen Kommentar versehen, falls jemand mal drüber stolpert, könnt ihr gerne verwenden.
Gruß Sven
Einloggen, um Attachments anzusehen!
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Di 13.02.07 16:43
Mr_Sven hat folgendes geschrieben: | So, hab den fehler gefunden, (Happy)
nun funktionierts.
Habe das Unit noch mit nen Kommentar versehen, falls jemand mal drüber stolpert, könnt ihr gerne verwenden.
Gruß Sven |
Das Teil kann ich sogar sehr gut gebrauchen. Thx!
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Di 13.02.07 16:58
Ich mir gerade daraus eine DLL gebastelt, die die zwei Funktionen exportiert. Vielleicht kann es ja jemand gebrauchen. 
Einloggen, um Attachments anzusehen!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 14.02.07 15:30
Dein Goto zu ResetBuf kannst Du auch mit dem Befehl Continue realisieren, der immer auf den nächsten Schleifendurchlauf springt (zusätzlich aber auch die Abbruchbedingung neu prüft).
Ansonsten würde mich auch die Portierung der LZW Compress-Funktionen für ein Projekt interessieren.
BTW: Hatte nicht Windows auch eine LZW.dll???
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mi 14.02.07 15:54
BenBE hat folgendes geschrieben: | BTW: Hatte nicht Windows auch eine LZW.dll??? |
Ich dachte auch, ich hätte schon mal was von einer LZW.dll gehört.  Bei mir ist jedenfalls keine da. 
|
|
Mr_Sven 
      
Beiträge: 38
D7 Prof., C# (VS 2008)
|
Verfasst: Di 20.02.07 15:57
BenBE hat folgendes geschrieben: | Dein Goto zu ResetBuf kannst Du auch mit dem Befehl Continue realisieren, der immer auf den nächsten Schleifendurchlauf springt (zusätzlich aber auch die Abbruchbedingung neu prüft).
|
Kann sein, habe dies nicht so genau überprüft.
Ausserdem sind das zwei verschachtelte schleifen und ich weis nicht inwiefern sich die Abbruchbedingung verändert, habe das halt blanco übernommen.
Ich denke die werden sich schon was dabei gedacht haben.
BenBE hat folgendes geschrieben: |
Ansonsten würde mich auch die Portierung der LZW Compress-Funktionen für ein Projekt interessieren.
|
Das habe ich auch überlegt, nur das Problem ist hierbei, dass der Komprimierungsalgorithmus (watn langes Wort) Patentiert ist und man Lizensgebühren zahlen muss.
Siehe: de.wikipedia.org/wik...iv-Welch-Algorithmus
Ich wollt mir hier keine Geldstrafe einhandeln.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 20.02.07 19:37
Mr_Sven hat folgendes geschrieben: | BenBE hat folgendes geschrieben: | Ansonsten würde mich auch die Portierung der LZW Compress-Funktionen für ein Projekt interessieren.
|
Das habe ich auch überlegt, nur das Problem ist hierbei, dass der Komprimierungsalgorithmus (watn langes Wort) Patentiert ist und man Lizensgebühren zahlen muss. Siehe: de.wikipedia.org/wik...iv-Welch-Algorithmus
Ich wollt mir hier keine Geldstrafe einhandeln. |
Soweit ich das unter de.wikipedia.org/wik...-Algorithmus#Patente sehe, ist das betreffende Patent 2004 ausgelaufen. Für die anderen beiden erwähnten Patente, sieht das genauso aus (wenn man von den 20 Jahren ausgeht). IANAL.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Mr_Sven 
      
Beiträge: 38
D7 Prof., C# (VS 2008)
|
Verfasst: Do 22.02.07 12:53
Du könntest recht haben.
Hat vieleicht irgentjemand nen C Programm oder sowas was LZW Komprimieren kann.
Mittlerweite kann ich ja ganz gut C Programme nach Pascal portieren.
Gruß Sven
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 24.02.07 16:17
Eine kurze Suche bei Google ergab folgenden Link: datacompression.info/LZW.shtmlHTH. Dort hast Du eine kleine Linksammlung, wo auch zu den Patenten noch ein wenig was steht. Source findest Du ganz unten auf der Page. //Edit: Könnte auch helfen: www.codeproject.com/cpp/LZWCompression.asp
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|