📄 mainunit.cpp
字号:
//---------------------------------------------------------------------------
#include<iostream.h>
#include<io.h>
#include<fcntl.h>
#include<dir.h>
#include<stdio.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
unsigned __int32 GetCRC(char *SourceData,unsigned __int32 DataSize)
{
__asm {
mov esi ,SourceData
mov ecx ,DataSize
xor eax ,eax
__CountCRC_Start:
cmp ecx ,0
jz __CountCRC_End
movzx edx ,byte ptr [esi]
add eax ,edx
inc esi
dec ecx
jmp __CountCRC_Start
__CountCRC_End:
}
return(_EAX);
}
//---------------------------------------------------------------------------
unsigned __int32 GetCRC(char *fn)
{
int fp;
unsigned __int32 fsize,crc;
char *data;
fp=open(fn,O_RDONLY|O_BINARY);
fsize=filelength(fp);
data=new char[fsize];
read(fp,data,fsize);
close(fp);
crc=GetCRC(data,fsize);
delete data;
return(crc);
}
//---------------------------------------------------------------------------
unsigned __int32 Number=0;
unsigned __int8 *FileNameSize;
char **FileName;
unsigned __int32 *CRC;
//---------------------------------------------------------------------------
void FindFile()
{
ffblk ff;
unsigned __int32 n=0,size;
if(findfirst("*.TXT",&ff,NULL)==-1)return;
while(1)
{
Number++;
if(findnext(&ff)==-1)break;
}
if(Number==0)return;
FileNameSize=new unsigned __int8[Number];
FileName=new char*[Number];
CRC=new unsigned __int32[Number];
if(findfirst("*.TXT",&ff,NULL)==-1)return;
while(1)
{
size=strlen(ff.ff_name)-4;
FileNameSize[n]=size;
FileName[n]=new char[size+1];
memcpy(FileName[n],ff.ff_name,size);
FileName[n][size]=0;
CRC[n]=GetCRC(ff.ff_name);
n++;
if(findnext(&ff)==-1)break;
}
}
//---------------------------------------------------------------------------
void SaveConfig()
{
int fp;
unsigned __int32 i;
fp=open("book.cfg",O_WRONLY|O_BINARY|O_TRUNC|O_CREAT);
write(fp,&Number,4);
write(fp,CRC,4*Number);
write(fp,FileNameSize,Number);
for(i=0;i<Number;i++)
write(fp,FileName[i],FileNameSize[i]);
close(fp);
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
cout<<"Hyz OnlineBook MAKELIST 1.0\n";
cout<<"Author: HuYingZhuo\n";
FindFile();
if(Number==0)
{
cout<<"find 0 file!";
return 0;
}
cout<<"find "<<Number<<" file!\n";
SaveConfig();
return 0;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -