compress.cpp
来自「具有数据压缩和解压缩功能的地动态库。 采用Delphi内置的压缩库实现。压缩效」· C++ 代码 · 共 66 行
CPP
66 行
#include "stdafx.h"
#include "CPPTest.h"
#include "Compress.h"
#include "AfxMT.h"
CSemaphore Sema;
//**************************************************************************************
// next functions are used internally,
//**************************************************************************************
typedef int __stdcall CompressBufferFun(char * InS, int IL, char * OutS, int * OL);
typedef int __stdcall DecompressBufferFun(char * InS, int IL, char * OutS, int * OL);
CompressBufferFun * DoCompressBuffer = NULL;
DecompressBufferFun * DoDecompressBuffer = NULL;
int InitCompressLib()
{
HMODULE hDll = LoadLibrary("Compress.dll");
if (hDll == NULL)
return -1;
DoCompressBuffer = (CompressBufferFun *)GetProcAddress(hDll, "CompressBuffer");
DoDecompressBuffer = (DecompressBufferFun *)GetProcAddress(hDll, "DecompressBuffer");
if (DoCompressBuffer == NULL)
return -2;
return 1;
}
int CompressBuffer(char * InS, int InL, char * OutS, int * OutL)
{
Sema.Lock();
int r;
if (DoCompressBuffer == NULL)
{
if (InitCompressLib() < 0)
{
//AfxMessageBox("InitCompressLib error");
r = -1;
}
}
else
r = DoCompressBuffer(InS, InL, OutS, OutL);
Sema.Unlock();
return r;
}
int DecompressBuffer(char * InS, int InL, char * OutS, int * OutL)
{
Sema.Lock();
int r;
if (DecompressBuffer == NULL)
{
if (InitCompressLib() < 0)
{
//AfxMessageBox("InitCompressLib error");
r = -1;
}
}
else
r = DoDecompressBuffer(InS, InL, OutS, OutL);
Sema.Unlock();
return r;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?