初学,帮忙注释一下代码,谢谢!(20分)

  • 主题发起人 yangh888
  • 开始时间
Y

yangh888

Unregistered / Unconfirmed
GUEST, unregistred user!
初学,帮忙注释一下代码,谢谢![:)]
特别是有?处。
function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
var
hFindFile:Cardinal;//?
t,tfile:String;
sCurDir:String[255];//?
FindFileData:WIN32_FIND_DATA;//?
begin
//先保存当前目录
sCurDir:=GetCurrentDir;//?
ChDir(sDirName);//?
hFindFile:=FindFirstFile('*.*',FindFileData);//?
if hFindFile< >INVALID_HANDLE_VALUE then//?
begin
if not DirectoryExists(sToDirName) then
ForceDirectories(sToDirName);
repeat//?
tfile:=FindFileData.cFileName;//?
if (tfile='.') or (tfile='..') then
Continue;//?
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then//?
begin
t:=sToDirName+'/'+tfile;
if not DirectoryExists(t) then
ForceDirectories(t);
if sDirName[Length(sDirName)]< >'/' then
DoCopyDir(sDirName+'/'+tfile,t)//?
else
DoCopyDir(sDirName+tfile,sToDirName+tfile);
end
else
begin
t:=sToDirName+'/'+tFile;
CopyFile(PChar(tfile),PChar(t),True);
end;
until FindNextFile(hFindFile,FindFileData)=false;//?
FindClose(hFindFile);
end
else
begin
ChDir(sCurDir);
result:=false;
exit;
end;
//回到原来的目录下
ChDir(sCurDir);
result:=true;
end;
 
不是很简单的一个函数吗?这样多不明白呀,怎的给你解释呀
告诉你这个函数是干吗的不就行了嘛,将一个目录下的所有的文件拷贝到另一个目录下去。
 
呵呵
学习呀!
知其然,还想知其所以然。
请教呐!
 
其实很简单的,里面大部分是些函数,你看看DELPHI的帮助都写的很请楚,
然后就是基本的语法了,用到了递归。静下来看就会觉得很简单。
 
关注,我也是初学,很想知道,请教高手!
我真希望大富翁专门开个栏目,讲解一些基本知识!
 
function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
var
hFindFile:Cardinal;//
t,tfile:String;
sCurDir:String[255];//定义一个字符型变量的长度为255
FindFileData:WIN32_FIND_DATA;//?
begin
//先保存当前目录
sCurDir:=GetCurrentDir;//返回当前路径
ChDir(sDirName);//改变当前目录
hFindFile:=FindFirstFile('*.*',FindFileData);//查找第一次出现的文件
if hFindFile< >INVALID_HANDLE_VALUE then//?
begin
if not DirectoryExists(sToDirName) then
ForceDirectories(sToDirName);
repeat//循环语名的开始
tfile:=FindFileData.cFileName;//?
if (tfile='.') or (tfile='..') then
Continue;//离开本次循环, 转到下一次循环
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then//?
begin
t:=sToDirName+'/'+tfile;
if not DirectoryExists(t) then
ForceDirectories(t);
if sDirName[Length(sDirName)]< >'/' then
DoCopyDir(sDirName+'/'+tfile,t)//循环调用
else
DoCopyDir(sDirName+tfile,sToDirName+tfile);
end
else
begin
t:=sToDirName+'/'+tFile;
CopyFile(PChar(tfile),PChar(t),True);
end;
until FindNextFile(hFindFile,FindFileData)=false;//判断是否找到文件
FindClose(hFindFile);
end
else
begin
ChDir(sCurDir);
result:=false;
exit;
end;
//回到原来的目录下
ChDir(sCurDir);
result:=true;
end;
 
to cjsam, :
谢谢关注!
但是...
难者不会,会者不难
是吧?!
---->相信都经历过初学的迷茫和痛苦!
 
to cjsh, :
谢谢!
允许的话,
请继续!
 
to yangh888
我也不是什么会者,可能只是比你早几天接触到DELPHI而已,我的意思是说就是只要你
安心看的话初学入门很简单,但是我是发现DELPHI和VC,JAVA的语言的区别了,DELPHI入门
很简单,想精通很难,但是VC是入门都很复杂,但是入门过后就很简单了。
 
to cjsam:
你说的很好!
所以更要努力!!
苦于手无资料,只好发贴请教!!!
如:
FindFileData:WIN32_FIND_DATA;//?

if hFindFile< >INVALID_HANDLE_VALUE then//?

tfile:=FindFileData.cFileName;//?

if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then//?

还望过来之人不吝赐教!
 
hFindFile:Cardinal;//32位整数据类型
sCurDir:String[255];//定义一个字符型变量的长度为255
FindFileData:WIN32_FIND_DATA;//定义一个32位的查找数据类型
sCurDir:=GetCurrentDir;//返回当前路径
ChDir(sDirName);//改变当前目录
hFindFile:=FindFirstFile('*.*',FindFileData);//查找第一次出现的文件
if hFindFile< >INVALID_HANDLE_VALUE then//判断是否找到满足条的值
repeat//循环语名的开始
tfile:=FindFileData.cFileName;//找到的文件赋值给变量
Continue;//离开本次循环, 转到下一次循环
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then//查找当前文件是目录还是文件夹
DoCopyDir(sDirName+'/'+tfile,t)//循环调用
until FindNextFile(hFindFile,FindFileData)=false;//判断是否找到文件

这些注释仅供参考!!其它的你自己慢慢看吧?
一定不能依赖别人!!
 
谢谢wjh_wy体恤后来人
敬礼!
不是依赖,而是无奈!
(谁叫俺不会又要学呢?是不?)
再次敬礼!!!
 
多人接受答案了。
 
顶部