delphi文件夾復制文件夾
『壹』 我用delphi做一個小的實驗,就是復制文件,可是,復制老是不成功是怎麼回事啊
程序沒問題,但看你的圖發現原始路徑和目標路徑一樣,文件復制不允許自身拷貝;如果改進程序,就判斷一下路徑是否一致,一致時拒絕執行,給個提示更好。
『貳』 delphi復制一個目錄或文件時,顯示正在復制的文件名
//********************************************************************
//功能:將FromPath路徑指定的文件拷貝到ToPath指定路徑下
//參數:(1)FromPath,一個完全限定的文件路徑,指定源操作文件位置
//
(2)ToPath,目的文件位置,如果ToPath指定的目錄不存在將自動創建它
//返回值:
1,復制操作成功完成
//
0,復制操作被取消
//
-1,復制操作執行失敗
//
//
說明:ToPath中不能含有通配符
//
若FromPath指定一個文件,則ToPath可以指定一個目錄或一個將創建的
//
新文件;若FromPath指定一個目錄或含有通配符的路徑,即使ToPath指
//
定一個新文件,ToPath也將被解析為一個目錄(目錄名即為新文件名)。
//*********************************************************************
function
dlgCopyFiles(FromPath,ToPath:string):Integer;
var
lpFileOP:SHFileOpStruct;
begin
lpFileOP.Wnd:=0;
lpFileOP.wFunc:=FO_COPY;
lpFileOP.pFrom:=PWideChar(FromPath+#0);
lpFileOP.pTo:=PWideChar(ToPath+#0);
//自動創建目錄
lpFileOP.fFlags:=FOF_NOCONFIRMMKDIR;
Result:=SHFileOperation(lpFileOP);
if(lpFileOP.fAnyOperationsAborted)then
Result:=0
else
begin
if(Result=0)then
Result:=1
else
Result:=-1;
end;
end;
『叄』 Delphi 怎麼製作復制文件夾程序
如問題所描述的,將C:abc 做成變數,代碼可以如下編寫:
procereTForm1.btn1Click(Sender:TObject);
varsSource,sTarget:string;
begin
sSource:='c:abc';
sTarget:='d:abc';
WinExec('x'+sSource+''+sTarget+'/s/e',SW_HIDE);
end;
『肆』 用delphi復制文件夾
procere findAll(tmp:string;ss:TStrings);
var
sc:TSearchRec;
begin
if FindFirst(tmp+'\*.*',faAnyFile,sc)=0 then
begin
repeat
if (sc.Attr and faDirectory)=sc.Attr then
if sc.Name[1]<>'.' then
findAll(tmp+'\'+sc.Name+'\*.*',ss)
else
else
ss.Append(tmp+'\'+ sc.Name);
until FindNext(sc)<>0;
end;
FindClose(sc)
end;
這個函數是找tmp目錄下面的所有文件,然後生成一個文件路徑列表。
有了路徑列表
for i:=0 to sl.count-1 do
begin
file(sl[i],目標路徑+extractfilename(sl[i]));
end;
好了 have fun
『伍』 delphi復制文件夾並覆蓋-要求必須覆蓋的
使用下面的函數即可,此函數使用了SHFileOperation API函數。代碼如下:
FunctionCopy_Dir(SourceDir,DestDir:String;nLx:Integer):Boolean;
Var
Opstruc:TshFileOpStruct;
frombuf,tobuf:Array[0..128]ofChar;
begin
FillChar(frombuf,Sizeof(frombuf),0);
FillChar(tobuf,Sizeof(tobuf),0);
StrP(frombuf,SourceDir);
CasenLxof
1:
StrP(tobuf,DestDir);
end;
WithOpstrucDo
Begin
Wnd:=0;
CasenLxof
1:wFunc:=FO_COPY;
2:wFunc:=FO_DELETE;
ElsewFunc:=FO_COPY;
end;
pFrom:=@frombuf;
pTo:=@tobuf;
fFlags:=FOF_NOCONFIRMATION;
fAnyOperationsAborted:=False;
hNameMappings:=Nil;
lpszProgressTitle:=Nil;
end;
try
ShFileOperation(OpStruc);
Result:=True;
except
Result:=False;
end;
end;
需要引用單元uses shellapi;
測試代碼:
Copy_Dir('c:aa','d:',1);
SHFileOperation函數說明
函數功能描述:文件操作,與 Shell 的動作相同.
函數原型:
#include<shellapi.h>
WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT
lpFileOp);
參數:
typedef struct _SHFILEOPSTRUCT
{
HWND
hwnd; //父窗口句柄
UINT
wFunc; //要執行的動作
LPCTSTR
pFrom;
//源文件路徑,可以是多個文件
LPCTSTR
pTo;
//目標路徑,可以是路徑或文件名
FILEOP_FLAGS
fFlags; //標志,附加選項
BOOL
fAnyOperationsAborted; //是否可被中斷
LPVOID
hNameMappings;
//文件映射名字,可在其它 Shell 函數中使用
LPCTSTR
lpszProgressTitle; // 只在 FOF_SIMPLEPROGRESS
時,指定對話框的標題。
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;
wFunc 可以為:
/FO_MOVE
0x0001移動文件
FO_COPY
0x0002復制文件
FO_DELETE
0x0003刪除文件,只使用 pFrom
FO_RENAME
0x0004文件重命名
fFlags可以為:
FOF_MULTIDESTFILES
0x0001//pTo
指定了多個目標文件,而不是單個目錄
FOF_CONFIRMMOUSE
0x0002
FOF_SILENT
0x00044// 不顯示一個進度對話框
FOF_RENAMEONCOLLISION
0x0008//
碰到有抵觸的名字時,自動分配前綴
FOF_NOCONFIRMATION
0x0010// 不對用戶顯示提示
FOF_WANTMAPPINGHANDLE
0x0020// 填充 hNameMappings
欄位,必須使用 SHFreeNameMappings 釋放
FOF_ALLOWUNDO
0x0040// 允許撤銷
FOF_FILESONLY
0x0080// 使用 *.* 時, 只對文件操作
FOF_SIMPLEPROGRESS
0x0100//
簡單進度條,意味者不顯示文件名。
FOF_NOCONFIRMMKDIR
0x0200//
建新目錄時不需要用戶確定
FOF_NOERRORUI
0x0400// 不顯示出錯用戶界面
FOF_NOCOPYSECURITYATTRIBS
0x0800// 不復制 NT 文件的安全屬性
FOF_NORECURSION
0x1000// 不遞歸目錄
返回值:
函數成功返回 0 ,失敗返回非 0 。
『陸』 delphi中如何實現文件的復制
你的這個問題我來說說:
用CopyFile()函數吧。
CopyFile(pchar('c:\123.txt'),pchar('d:\123-備份.txt'),False) ;
其實作為編程,你可以選擇文件並動態設置文件名:
首先你在form上添加個savefiledialg,並設置這個savefiledialg相關參數,
再在form上添加個openfiledialg ,並設置這個openfiledialg的相關參數。
然後這樣編程:
if openfiledialg1.execute then
begin
if savefiledialg1.excetu then
begin
CopyFile(pchar(openfiledialg1.filename),pchar(savefiledialg1.filename),False) ;
end ;
end ;
(以上代碼只是隨手編寫,過程是正確的,但是不保證關鍵字的字母排列是否正確。)
『柒』 delphi中怎麼移動文件夾,我舉個例子,大家來看看
用 SHFileOperation 這個吧,它能做的事情實在太多了,在MSDN查查這個函數,相信你收獲一定不少,呵呵:use Shellapi; //記得 use Shellapifunction MoveDir(const aSrc, aDst: String): Boolean;
var
sfo: TShFileOpStruct;
i: Integer;
begin
FillChar(sfo,SizeOf(TShFileOpStruct),0);
sfo.fFlags:=FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR or FOF_SILENT or FOF_ALLOWUNDO;
sfo.Wnd:=0;
sfo.wFunc:=FO_MOVE;
sfo.pFrom:=PChar(aSrc);
sfo.pTo:=PChar(aDst);
Result:=not BOOL(SHFileOperation(sfo));
end;procere TForm1.FormCreate(Sender: TObject);
begin
SHOWMESSAGE(BoolToStr(MoveDir('C:\www','D:\abcd'),True));
end;
『捌』 delphi如何復制文件夾
可以用以下的方法:
CopyFile(pchar('c:\sql.txt'), pchar('d:\sql.txt'), True);
只要是文件的復制,都可以。
移動文件:
MoveFile(pchar('c:\sql.txt'), pchar('d:\sql.txt'));
刪除文件:
DeleteFile('c:\sql.txt');
以上都是可行的。