⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myole.h

📁 用于数据流压缩的huffman算法源代码
💻 H
字号:
//-------------------------
unsigned char readBuffer[100000],selectBuffer[100000],progBuffer[100000];
BOOL InitCOM()
 {
   	HRESULT hErr;
	DWORD coVersion=CoBuildVersion();

   if( HIWORD(coVersion)!=rmm||LOWORD(coVersion)<rup )
	   {
	      printf("bad version of COM\n");
	      return FALSE ; 
        }
   hErr=CoInitialize(NULL);
   if(FAILED(GetScode(hErr))) 
     { printf("Failed to initialize OLE!\n");
       return  FALSE ; }
 return TRUE ;
}
//-------------------------
void DeinitCOM()
{
	   CoUninitialize();}
//-------------------------

void readOleFile( char * mfilename,
				  char * mstreamname,
				  char * buffer,
				  unsigned long *length)
{
  HRESULT    hErr ;
  LPSTORAGE  pStg ;
  LPSTREAM   pStm ;
  STATSTG  * pStat;
  wchar_t wfilename[120];
  wchar_t wstreamname[64];
  int iMessageSize=96,k,j;
  if( !InitCOM()) return;
  while((SetMessageQueue(iMessageSize)==0)&&(iMessageSize>0)){
	   iMessageSize-=8;}
 
  j=strlen(mfilename);
  k=mbstowcs(wfilename,mfilename,j+1);
  j=strlen(mstreamname);
  k=mbstowcs(wstreamname,mstreamname,j+1);
  
  hErr=StgOpenStorage(
	          wfilename,
			  NULL,
              STGM_READ|STGM_TRANSACTED,
			  NULL,
			  0,
			  & pStg);
 if(FAILED(hErr)) { DeinitCOM();length=0;return;} 

 hErr=pStg->OpenStream( wstreamname,
	                    0,
						STGM_READ|STGM_DIRECT|STGM_SHARE_EXCLUSIVE,
                        0,
						&pStm );
 if(FAILED(hErr)) {
   pStg->Release(); DeinitCOM();length=0;return;}
 pStm->Stat(pStat,2);
 pStm->Read(buffer,0x7fffffff,length); 
 pStm->Release();
 pStg->Release();
 DeinitCOM();return;}
//----------------------------------
short getConnectionID() 
  {
	char far filename[125];
	char far *ptr,*tmpptr;
	short i;
    char far id_section[]="@_ID_section";
	strcpy(filename,rootDir);
	strcat(filename,author);
	//read
	i=0;tmpptr=ptr;
	while(TRUE) {
	  tmpptr=strstr(ptr,"\t");
	  if(tmpptr==NULL) return(i);
	  *tmpptr='\0';
      ConIDStru[i].ID=atoi(ptr);
	  ptr=tmpptr+1;
	  tmpptr=strstr(ptr,"\t");
	  if(tmpptr==NULL) return(i);
	  ptr=tmpptr+1;
	  tmpptr=strstr(ptr,"\r");
	  if(tmpptr!=NULL) *tmpptr='\0';
      strcpy(ConIDStru[i].connString,ptr);
	  i++;
	  if(tmpptr==NULL) return(i);
	  if(i<MAXCONNECTID) ptr=tmpptr+2;
      else return(i);}}
//---------------------------------
      void makeConnectString(UCHAR FAR *connectstring,short ID) 
	    {
		   short i;
		   i=0;
		   while(i<connectCount) {
			 if(ID==ConIDStru[i].ID) {
			   strcpy(connectstring,ConIDStru[i].connString);
			   return;}	
   			 else i++;} 
           connectCount=getConnectionID(); 
           i=0;
		   while(i<connectCount) {
		     if(ID==ConIDStru[i].ID) {
               strcpy(connectstring,ConIDStru[i].connString);
		       return;}	
			 else i++;}
		   *connectstring='\0';}
//---------------------------------
short getUserInfo() 
  {
	char far filename[125];
	char far *ptr,*tmpptr;
	short i;
    char far id_section[]="@_user_section";
	long len;
	strcpy(filename,rootDir);
	strcat(filename,author);
	readOleFile(filename,id_section,readBuffer,&len);
	readBuffer[len]='\0';
	ptr=&readBuffer[0];
	i=0;tmpptr=ptr;
	while(TRUE) {
	  tmpptr=strstr(ptr,"\t");
	  if(tmpptr==NULL) return(i);
	  *tmpptr='\0';
      strcpy(userInfoStru[i].userName,ptr);

	  ptr=tmpptr+1;
	  tmpptr=strstr(ptr,"\t");
	  if(tmpptr==NULL) return(i);
	  *tmpptr='\0';
      strcpy(userInfoStru[i].passWord,ptr);

	  ptr=tmpptr+1;
	  tmpptr=strstr(ptr,"\t");
	  if(tmpptr==NULL) return(i);
	  *tmpptr='\0';
      strcpy(userInfoStru[i].winName,ptr);

	  ptr=tmpptr+1;
	  tmpptr=strstr(ptr,"\r");
	  if(tmpptr!=NULL) *tmpptr='\0';
      strcpy(userInfoStru[i].pathName,ptr);
	  i++;
	  if(tmpptr==NULL) return(i);
	  if(i<MAXUSER) ptr=tmpptr+2;
      else return(i);}}
//---------------------------------------------------
BOOL UserPass(UCHAR FAR * winName,UCHAR FAR *pathName,
  UCHAR FAR *userName,UCHAR FAR *passWord) 
  {
    long i;
    i=0;
    while(i<userCount) {
      if((stricmp(userName,userInfoStru[i].userName)==0)&&
	    (stricmp(passWord,userInfoStru[i].passWord)==0)) {
          strcpy(winName,userInfoStru[i].winName);
          strcpy(pathName,userInfoStru[i].pathName);
		  return(TRUE);}
      else i++;} 
    userCount=getUserInfo(); 
    i=0;
    while(i<userCount) {
      if((stricmp(userName,userInfoStru[i].userName)==0)&&
	    (stricmp(passWord,userInfoStru[i].passWord)==0)) {
          strcpy(winName,userInfoStru[i].winName);
          strcpy(pathName,userInfoStru[i].pathName);
		  return(TRUE);}
      else i++;} 
    return(FALSE);}
//-----------------------------------------
BOOL readWinTitle(UCHAR FAR *dwLib,UCHAR FAR *dwName,UCHAR FAR *readwin)
  {
	long i,readlong;
	unsigned char *ptr;
	unsigned char pathname[80];
	strcpy(pathname,rootDir);
	strcat(pathname,"DINDOW.SAV");
	readOleFile(pathname,"window",readBuffer,&readlong);
    i=0;
	ptr=&readBuffer[0];
	while(i<readlong) {
	  if(memcmp(ptr,dwName,14)==0) {
		memcpy(readwin,ptr,108);
		readwin[108]='\0';return(TRUE);}
	  ptr=ptr+108;i=i+108;}
	return(FALSE);}
//-----------------------------------------
//transfer string to a lib structure item
long setWinLib(UCHAR FAR *buffer,short k,long pos)
  {
    short len,index;
	unsigned char strlen[6],dwname[50],*ptr,pathname[80];
	long length,addlen;
    index=0;
	memcpy(strlen,buffer,5);
	addlen=0;
	strlen[5]='\0';
    len=atoi(strlen);
    index=index+5;
    memcpy(&connectStru[k].returnstring[pos],&buffer[index],len);
	index=index+len;
	pos=pos+len;
	addlen=addlen+len;
	connectStru[k].returnstring[pos]=',';
	pos++;addlen++;

	memcpy(strlen,&buffer[index],5);
	strlen[5]='\0';
    len=atoi(strlen);
    index=index+5+len;

	memcpy(strlen,&buffer[index],5);
	strlen[5]='\0';
    len=atoi(strlen);
    index=index+5;
    memcpy(&connectStru[k].returnstring[pos],&buffer[index],len);
    memcpy(dwname,&buffer[index],len);
	dwname[len]='\0';
	index=index+len;
	pos=pos+len;addlen=addlen+len;
	connectStru[k].returnstring[pos]=',';
	pos++;addlen++;
    strcpy(pathname,rootDir);
	strcat(pathname,"DATAWIN.SAV");
	readOleFile(pathname,dwname,&connectStru[k].returnstring[pos],&length);
	pos=pos+length;addlen=addlen+length;
	connectStru[k].returnstring[pos]=',';
	pos++;addlen++;
	ptr=strstr(selectBuffer,dwname);
	if(ptr==NULL) {connectStru[k].returnstring[pos]=',';pos++;addlen++;}
	else {
	  ptr=ptr+50;
	  memcpy(&connectStru[k].returnstring[pos],ptr,14);
      pos=pos+14;addlen=addlen+14;
      connectStru[k].returnstring[pos]=',';
	  pos++;addlen++;}
	ptr=strstr(progBuffer,dwname);
	if(ptr==NULL) {connectStru[k].returnstring[pos]=',';pos++;addlen++;}
	else {
	  ptr=ptr+50;
	  memcpy(&connectStru[k].returnstring[pos],ptr,14);
      pos=pos+14;addlen=addlen+14;
      connectStru[k].returnstring[pos]=',';
	  pos++;addlen++;}
    return(addlen);}


//-----------------------------------------
void readWinInfo(UCHAR FAR *dwLib,UCHAR FAR *dwName,
   UCHAR FAR *dateString,short wwmark,short k) 
  {
	UCHAR FAR readwin[120],pathname[80]; 
	char ch[2],stringlen[8],*ptr;
	long returnPos,j,index,maxbuffer,len,pos;
	short num1,i;
	if(readWinTitle(dwLib,dwName,readwin)==FALSE) {
      WriteHtml(connectStru[k].pECB,"ERROR006");
	  return;}
    if(wwmark==0) {
      WriteHtml(connectStru[k].pECB,"000000WB");
      strcpy(connectStru[k].returnstring,readwin);
	  returnPos=108;}
	else {
	  if(memcmp(&readwin[64],dateString,14)==0) {
        WriteHtml(connectStru[k].pECB,"000000WO");
	    returnPos=0;}
	  else {
        WriteHtml(connectStru[k].pECB,"000000WR");
     	strcpy(connectStru[k].returnstring,readwin);
		returnPos=108;wwmark=2;}}
	readwin[14]='\0';
    strcpy(pathname,rootDir);
    strcat(pathname,"WINDOW.SAV");
	readOleFile(pathname,readwin,readBuffer,&maxbuffer);
	if(wwmark==2) {
	  ltoa(maxbuffer,stringlen,10);
	  strcpy(&connectStru[k].returnstring[returnPos],stringlen);
	  returnPos=returnPos+strlen(&connectStru[k].returnstring[returnPos]);
	  connectStru[k].returnstring[returnPos]='\t';
	  returnPos++;}
    index=0;
	num1=0;pos=returnPos;returnPos=returnPos+5;
	strcpy(pathname,rootDir);
	strcat(pathname,"DSELECT.SAV");
	readOleFile(pathname,"WINDOW",selectBuffer,&len);
	selectBuffer[len]='\0';

	strcpy(pathname,rootDir);
	strcat(pathname,"DPROGRAM.SAV");
   	readOleFile(pathname,"WINDOW",progBuffer,&len);
	progBuffer[len]='\0';

    while(index<maxbuffer) {
	  memcpy(ch,readBuffer,1);
	  memcpy(stringlen,&readBuffer[1],5);
	  stringlen[5]='\0';
	  len=atol(stringlen);
	  if(stricmp(ch,"L")==0) {
        returnPos=returnPos +
		  setWinLib(&readBuffer[index+6],k,returnPos);
	    num1++;}
	  index = index + 6 + len;}
	  itoa(num1,stringlen,10);
      ptr=&connectStru[k].returnstring[pos];
      j=5 - (short)(strlen(stringlen));
      for(i=0;i<j;i++) {*ptr='0';ptr++;}
      memcpy(ptr,stringlen,strlen(stringlen));
	  connectStru[k].returnstring[returnPos]='\0';
      sendsqlresult(k);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -