| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | 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
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |