O
ohtinon
Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的:<br>这是dll函数说明文档:<br><br>(1)压缩接口:<br> int Compress(<br>const byte* pbyteSource, <br>long lngSourceSize, <br>byte* pbyteDest, <br>long* plngDestSize);<br> 参数:<br> pbyteSource:需要压缩数据的指针地址<br> lngSourceSize:需要压缩数据的字节长度<br> pbyteDest:需要保存压缩后的数据指针<br> plngDestSize:实际压缩数据的长度,如果传入0,则返回需要保存压缩数据长度<br><br> 返回:<br> 0:成功<br> -1:失败<br><br>示例:<br><br> (2)解压缩接口<br> int Descompress(<br>const byte* pbyteSource, <br>long lngSourceSize, <br>byte* pbyteDest, <br>long* plngDestSize);<br> 参数:<br> pbyteSource:需要解压缩数据的指针地址<br> lngSourceSize:需要解压缩数据的字节长度<br> pbyteDest:需要保存解压缩后的数据指针<br> plngDestSize:实际解压数据的长度,如果传入0,则返回需要保存解压数据长度<br><br> 返回:<br> 0:成功<br> -1:失败<br><br> 示例:<br><br> (3)压缩算法的版本号<br> int CompressVersion(char* pszVersion);<br>参数:<br> pszVersion:需要返回版本号的字符指针,至少已分配10个字节长度,返回的格式为:x.x.yyyy.z,例如:1.0.0001.0<br> 返回:<br> 0:成功<br> -1:失败<br><br>---我用delphi调用试了N遍,都不行,请高手救我!帮我写一下怎么调用compress及Descompress<br><br><br>下面是用powerbuild 调用的例子,试了可以通过,贴出来参考下<br> PowerBuilder语言调用示例<br>//函数声明<br>FUNCTION long Compress(blob pbyteSource, long lngSourceSize, ref blob pbyteDest, ref long plngDestSize) library "sehr.crypto.dll";<br>FUNCTION long Decompress(blob pbyteSource, long lngSourceSize, ref blob pbyteDest, ref long plngDestSize) library "sehr.crypto.dll";<br>FUNCTION long CompressVersion(ref string strVersion) library "sehr.crypto.dll";<br><br>//调用示例<br>string ls_version; <br>ls_version = space(11); //分配内存, 版本号是10个字节 + 1个结尾符<br>int li_result;<br>li_result = CompressVersion(ls_version); //获取压缩版本号<br><br>//压缩<br>blob lblob_source, lblob_dest;<br>lblob_source = blob(ls_version);<br>long ll_dest;<br>ll_dest = 0;<br>li_result = Compress(lblob_source, len(lblob_source), lblob_dest, ll_dest); //先检查需要多少内存 保存到ll_dest<br>if(li_result <> 0) then return;<br><br>lblob_dest = blob(space(ll_dest)); //分配内存<br>li_result = Compress(lblob_source, len(lblob_source), lblob_dest, ll_dest);<br>if(li_result <> 0) then return;<br><br>//解压缩<br>long ll_len;<br>ll_len = 0;<br>blob lblob_target;<br>li_result = Decompress(lblob_dest, ll_dest, lblob_target, ll_len);//先检查需要多少内存 保存到ll_len<br>if(li_result <> 0) then return;<br><br>lblob_target = blob(space(ll_len));//分配内存<br>li_result = Decompress(lblob_dest, ll_dest, lblob_target, ll_len);<br>if(li_result <> 0) then return;<br><br>//检查解压缩后和压缩前是否一致<br>if(ls_version = left(string(lblob_target), ll_len)) then<br> MessageBox("提示", "解压缩成功"<br>else<br> MessageBox("提示", "解压缩失败"<br>end if