100分求bcb代码一段。

chpst 2005-03-11 09:13:14
在不知到文件名的情况下,找出硬盘中大小相同重复文件
1.列出文件名,日期,路径等属性
2。列出的重复文件,可以在界面内编辑,如删除。
...全文
332 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chpst 2005-03-16
  • 打赏
  • 举报
回复
道理没错,就是要循环死掉。运行中程序停止响应。
gyj_china 2005-03-15
  • 打赏
  • 举报
回复
Windows自带的查找也能滿足你的要求啊?速度也挺快的,有现成的为何不用?
chpst 2005-03-15
  • 打赏
  • 举报
回复
再顶一下
是这样的,我的兄弟给我出的,的确象文件的属性列出是没问题的.现在的的硬盘都比较大,我存了个文件在上面,名字忘了,有可能存了几个地方.而且这种情况发上很多次.
现在就想整理,如有这样的程序就很方变了.是个查找文件系统算法的问题.
1cctv 2005-03-15
  • 打赏
  • 举报
回复
在我的代码上,加入你还需要的功能,应该很简单了.
tokens 2005-03-14
  • 打赏
  • 举报
回复
晕,这没有难的..只是算法快慢的问题
show00 2005-03-14
  • 打赏
  • 举报
回复
先将所有文件整理到ACCESS,然后你想怎么做都可以了撒
constantine 2005-03-14
  • 打赏
  • 举报
回复
1.列出文件名,日期,路径等属性--简单了,这些都可以在论坛里找到

2.这个也不难啊,比较而已,不过我没有好的算法,就是for
oldtab 2005-03-14
  • 打赏
  • 举报
回复
题目出得好。有实用价值。只是有点难。
坐看能人。
oldtab 2005-03-14
  • 打赏
  • 举报
回复
坐一回沙发。
1cctv 2005-03-14
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
typedef struct fileNameSizeS
{
int len;
char fileName[0];
} fileName_Size;
//---------------------------------------------------------------------------
void __fastcall GetFileList(char *dir,TList *list)
{
WIN32_FIND_DATA wfd;
char dirBuf[272];
int dirLen=lstrlen(dir);
int fileNameLen;
if (dirLen<3) return;
CopyMemory(dirBuf,dir,dirLen+1);
if(dirBuf[dirLen-1]!='\\')
{
dirBuf[dirLen]='\\';
dirBuf[dirLen+1]=0;
dirLen++;
}
wfd.dwFileAttributes=-1;
lstrcpy(dirBuf+dirLen,"*.*");
HANDLE hFind=FindFirstFile(dirBuf,&wfd);
if(hFind!=INVALID_HANDLE_VALUE)
{
bool bFind=true;
while(bFind)
{
if(wfd.cFileName[0]!='.') // . ..
{
fileNameLen=lstrlen(wfd.cFileName);
CopyMemory(dirBuf+dirLen,wfd.cFileName,fileNameLen+1);
fileNameLen+=dirLen;
if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
GetFileList(dirBuf,list);
else
{
fileName_Size *fns;
(char*)fns=new byte[4+fileNameLen+dirLen];
fns->len=wfd.nFileSizeLow;
CopyMemory(fns->fileName,dirBuf,fileNameLen+1);
list->Add(fns);
}
}
bFind=FindNextFile(hFind,&wfd);
}
FindClose(hFind);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char disp[256];
TList *tl=new TList;
GetFileList("E:\\",tl);
for(int i=0;i<tl->Count;i++)
{
fileName_Size *a=(fileName_Size*)tl->Items[i];
for(int j=i+1;j<tl->Count;j++)
{
fileName_Size *b=(fileName_Size*)tl->Items[j];
if(a->len==b->len)
{
wsprintf(disp,"%-10d %s\x0d\x0a%-10d %s\x0d\x0a",a->len,a->fileName,b->len,b->fileName);
Memo1->Lines->Add(disp);
break;
}
}
}
for(int i=0;i<tl->Count;i++)
delete[] tl->Items[i];
delete disp;
}
//---------------------------------------------------------------------------

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧