Autor Beitrag
Mr_Sven
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D7 Prof., C# (VS 2008)
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D7 Prof., C# (VS 2008)
BeitragVerfasst: Mo 12.02.07 17:31 
naja, wenns funktioniert.

haste nen Tut irgentwo?

Gruß Sven
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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: Suche bei Google DOWNLOAD TURBO C oder bei borland/codegear zum kostenlosen download. <HTH>
Mr_Sven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D7 Prof., C# (VS 2008)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Di 13.02.07 16:43 
user profile iconMr_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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mi 14.02.07 15:54 
user profile iconBenBE 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. :gruebel: Bei mir ist jedenfalls keine da. :nixweiss:
Mr_Sven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D7 Prof., C# (VS 2008)
BeitragVerfasst: Di 20.02.07 15:57 
user profile iconBenBE 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.
user profile iconBenBE 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 20.02.07 19:37 
user profile iconMr_Sven hat folgendes geschrieben:
user profile iconBenBE 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D7 Prof., C# (VS 2008)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 24.02.07 16:17 
Eine kurze Suche bei Google ergab folgenden Link:
datacompression.info/LZW.shtml
HTH.
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.