Delphi对文件系统的操作该怎么办?(200分)

  • 主题发起人 主题发起人 casso
  • 开始时间 开始时间
C

casso

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi中,
包括对目录的操作.(mkdir,removedir,xcopy, etc.)
文件的操作.(attrib, copy,delete, copy, etc.)
已经一些Dos内部命令的使用.(dir, etc.)
 
Use Windows API, forget Dos!!!
check the Win32 API Help
目录API
CreateDirectory
RemoveDirectory
...
file API:

setfileattrib
deletefile
movefile
copyfile
...

if you want use old dos command,

Winexec('your dos command',sw_hide);
 
更加通用一点的方法是用NEW WINDOWS API: ShFileOperation
它可以实现文件(目录)的拷贝、删除、移动,还可以Undo,
所以你要实现复杂一点的文件操作,它是首选。
ShFileOperation的用法也很简单,最主要的是填写TSHFileOpStruct结构,
在以答问题里有很详细的解答,你可以找一下!
 
复杂一些的命令还是得自己做,一般的操作api和delphi的文件操作都可以作到的。
 
你也可以使用Delphi中自己的函数:
MkDir(S: String) 创建新目录;
RmDir(S: String) 删除一个<font color=red>空</font>目录
.......
文件操作:
FileGetAttr 获取文件属性;
FileSetAttr 设置文件属性;
CopyFile, MoveFile (API函数)
DeleteFile
.......
复杂一些的可能还需要自己写一下。
执行Dos程序应该是用WinExec最简单了.
 
提出的问题太奇怪,根本不知道想要干嘛。
 
那么如果现在有这么一个问题该怎么办?
在程序内部实现deltree的功能.
实现xcopy的功能.
 
用ShFileOperation:
给你一个例子:
deltree:
procedure TForm1.Button4Click(Sender: TObject);
var
shfo :TSHFileOpStruct;
from :string;
pstr :array [0..MAX_PATH-1] of char;
begin
FillChar(pstr,MAX_PATH,#0);
from := 'd:/tmp'
strpcopy(pstr,from);
with shfo do
begin
wnd := Handle;
wFunc := FO_DELETE;
pfrom := pstr;
pto := nil;
fFlags := FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS;
end;
if ShFileOperation(shfo) <> 0 then
ShowMessage('Failed')
else
ShowMessage('ok');
end;

xcopy也差不多,将wFunc 改成FO_COPY,设置pto以后就可以了。
再详细一些,你可以参考帮助!
 
<pre><font size=3>
看看已经问题 ,关于<<A HREF="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=92662">类似 deltree xcopy 的函数</A>>
</font></pre>
 
多人接受答案了。
 

Similar threads

后退
顶部