Показать сообщение отдельно
Старый 11.08.2007, 20:05   #1
jimon
 
Сообщений: n/a
zlib, работа с потоками

что-то я совсем туплю после программирования гуи ...
есть вот такой код
Function PackStream:TStream(in_st:TStream)
	in_st.Seek(0)

	Local bank:TBank = New TBank
	Local out_st:TStream = OpenStream(bank)		

	Local size% = in_st.Size()
	Local size_dest% = size
	Local in:Byte[size]
	Local out:Byte[size]
		
	in_st.ReadBytes(in,size)
	compress(out,size_dest,in,size)

	out_st.WriteInt(size_dest)
	out_st.WriteInt(size)
	out_st.WriteBytes(out,size_dest)
		
	Return out_st
End Function
	
Function UnPackStream:TStream(in_st:TStream)
	in_st.Seek(0)

	Local bank:TBank = New TBank
	Local out_st:TStream = OpenStream(bank)		

	Local size_dest% = in_st.ReadInt()
	Local size% = in_st.ReadInt()
	Local in:Byte[size]
	Local out:Byte[size]
		
	in_st.ReadBytes(in,size_dest)

	uncompress(out,size,in,size_dest)

	out_st.WriteBytes(out,size)
	Return out_st
End Function
тест, где туда суется поток размером 17-32 кб с символами 0-255, он не проходит ... тестировал просто .. сжимал и сразу разжимал поток .. и сравнивал с оригиналом ... где то за 14 байт до конца было различие

до етого кода была попытка с разделением на блоки по 16 кб, но толку тоже мало было .... на 16374 байте из 16 кб падало тоже

кто скажет где мои мозги тупят ? или дайте рабочий код
 
Ответить с цитированием