/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Komprimering med Delphi og Java
Fra : NB


Dato : 07-06-04 16:10

Er der nogen som kender til en komprimeringsrutine som virker med både
Delphi og Java? Mit problem er, at jeg skal komprimere noget tekst (XML-
dokument) med Delphi og dernæst udpakke det med Java.

Jeg har kigget lidt på ZLib som findes til Delphi og der skulle være
understøttelse for filer pakket med ZLib i java.util.zip-pakken. Jeg kan
bare ikke overskue hvilken kode der skal til for, at min Java- og
Delphi-rutine bliver kompatible. Er der nogen som kan hjælpe mig på vej?

/Niels

 
 
Stig Johansen (08-06-2004)
Kommentar
Fra : Stig Johansen


Dato : 08-06-04 04:45

NB wrote:

> Er der nogen som kender til en komprimeringsrutine som virker med både
> Delphi og Java? Mit problem er, at jeg skal komprimere noget tekst (XML-
> dokument) med Delphi og dernæst udpakke det med Java.
>
> Jeg har kigget lidt på ZLib som findes til Delphi og der skulle være
> understøttelse for filer pakket med ZLib i java.util.zip-pakken. Jeg kan
> bare ikke overskue hvilken kode der skal til for, at min Java- og
> Delphi-rutine bliver kompatible. Er der nogen som kan hjælpe mig på vej?

Her er en lille unit, jeg bruger i forbindelse med XML/SOAP.
Hvis du evt. får brug for deflate/gzip, så giv et praj.

unit CompressU;
interface
uses
Types,Classes;

FUNCTION StringToCompressed ( Input : STRING ) : TByteDynArray ;
FUNCTION CompressedToString ( Input : TByteDynArray ) : STRING ;
FUNCTION StringToCompressedStream ( Input : STRING ) : TMemoryStream ;

implementation
uses
SysUtils,
ZLib;// Ex ;

FUNCTION StringToCompressed ( Input : STRING ) : TByteDynArray ;
VAR
CompressionStream : TCompressionStream ;
ResultStream : TMemoryStream ;
BEGIN
ResultStream := TMemoryStream.Create ;
CompressionStream := TCompressionStream.Create(clMax,ResultStream) ;
try
CompressionStream.Write(Input[1],Length(Input));
CompressionStream.Free ;
SetLength(Result,ResultStream.Size);
ResultStream.Position := 0 ;
ResultStream.Read(Result[0],ResultStream.Size);
FINALLY
ResultStream.Free ;
END;
END;

FUNCTION StringToCompressedStream ( Input : STRING ) : TMemoryStream ;
VAR
CompressionStream : TCompressionStream ;
BEGIN
Result := TMemoryStream.Create ;
CompressionStream := TCompressionStream.Create(clMax,Result) ;
try
CompressionStream.Write(Input[1],Length(Input));
CompressionStream.Free ;
Result.Position := 0 ;
FINALLY
END;
END;


FUNCTION CompressedToString ( Input : TByteDynArray ) : STRING ;
VAR
DeCompressionStream : TDeCompressionStream ;
ResultStream : TMemoryStream ;
Buffer : Array [1..8192] of BYTE ;
RLength : INTEGER ;
PrevLength : INTEGER ;
BEGIN
ResultStream := TMemoryStream.Create ;
ResultStream.Write(Input[0],Length(Input));
ResultStream.Position := 0 ;
DeCompressionStream := TDeCompressionStream.Create(ResultStream) ;
Result := '';
REPEAT
TRY
RLength := DeCompressionStream.Read(Buffer,Sizeof(Buffer));
IF RLength > 0 THEN BEGIN
PrevLength := Length(Result);
SetLength(Result,PrevLength+RLength);
Move(Buffer,Result[PrevLength+1],RLength);
END;
EXCEPT ON E:EXCEPTION DO BEGIN
RLength := 0 ;
writeln('Error reading compressionstream '+E.Message );
END;
END;
UNTIL RLength <= 0 ;
DeCompressionStream.Free ;
ResultStream.Free ;
END;

end.


--
Med venlig hilsen
Stig Johansen

NB (09-06-2004)
Kommentar
Fra : NB


Dato : 09-06-04 18:44

In article <40c536eb$0$3056$14726298@news.sunsite.dk>, Stig Johansen
<stig_johansen_it_at_=(@)hotmail.com> says...

> Hvis du evt. får brug for deflate/gzip, så giv et praj.

Jeg ville være meget taknemmelig hvis du gad at poste koden til
deflate/inflate, da det egentlig er disse rutiner jeg er mest
interesseret i, men ikke har kunne finde noget brugbart. På forhånd tak..

NB (09-06-2004)
Kommentar
Fra : NB


Dato : 09-06-04 20:24

In article <40c536eb$0$3056$14726298@news.sunsite.dk>, Stig Johansen
<stig_johansen_it_at_=(@)hotmail.com> says...

> Hvis du evt. får brug for deflate/gzip, så giv et praj.

Jeg ville være meget taknemmelig hvis du gad at poste koden til
deflate/inflate, da det egentlig er disse rutiner jeg er mest
interesseret i, men ikke har kunne finde noget brugbart. På forhånd tak..

Stig Johansen (10-06-2004)
Kommentar
Fra : Stig Johansen


Dato : 10-06-04 05:25

NB wrote:

> In article <40c536eb$0$3056$14726298@news.sunsite.dk>, Stig Johansen
> <stig_johansen_it_at_=(@)hotmail.com> says...
>
>> Hvis du evt. får brug for deflate/gzip, så giv et praj.
>
> Jeg ville være meget taknemmelig hvis du gad at poste koden til
> deflate/inflate, da det egentlig er disse rutiner jeg er mest
> interesseret i, men ikke har kunne finde noget brugbart. På forhånd tak.

For deflate til *browsere*, bruger jeg 'ZSendToBrowser' fra ZlibEx:
<http://www.dellapasqua.com/delphizlib/>

Jeg mener, at zlib derudover er std. deflate/inflate.
Har du testet?

--
Med venlig hilsen
Stig Johansen

Thorbjoern Ravn Ande~ (08-06-2004)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 08-06-04 07:37

NB <nej@tak.dk> writes:

> Jeg har kigget lidt på ZLib som findes til Delphi og der skulle være
> understøttelse for filer pakket med ZLib i java.util.zip-pakken. Jeg kan
> bare ikke overskue hvilken kode der skal til for, at min Java- og
> Delphi-rutine bliver kompatible. Er der nogen som kan hjælpe mig på vej?

ZLib er samme rutine som der findes i programmet "gzip". Hvis du har
som mål at arbejde med noget som gzip accepterer, skulle du være
kørende.

Altså, skrive Delphi som gzip kan acceptere (gzip -t), og java som kan
spise en minfil.gz.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste