怎样保存文件?-----新手着急

fengchen12 2007-01-22 05:20:16
因为是新手,所以请教大家.
我想实现如下功能: 点击按钮就可以把程序目录下的db1.mdb文件(执行文件和db1.mdb在赛同一个文件夹下)保存到另外一个地方,用户可以选择保存路径...
...全文
213 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoansuifeng 2007-01-24
  • 打赏
  • 举报
回复
嫌麻烦的话就用个SAVADAILOG控件好了 直接搞定
柯本 2007-01-23
  • 打赏
  • 举报
回复
uses shellapi;
就可用TSHFileOpStruct和ShFileOperation了,HELP see MSDN
fengchen12 2007-01-23
  • 打赏
  • 举报
回复
问题解决,更改后的代码是这样的。
----------------------------------------------------------------------
var
Form1: TForm1;

implementation
uses ShellAPI;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var OpStru:TSHFileOpStruct;
FromDir,ToDir:array[0..128]of char;
begin
FillChar(FromDir,Sizeof(FromDir),0);
StrPCopy(FromDir,ExtractFilePath(Application.ExeName)+'db1.mdb');
FillChar(ToDir,Sizeof(ToDir),0);
SaveDialog1.FileName:='目的数据库路径及数据库名'; //可以改名,需saveDialog控件
SaveDialog1.Filter:='Access(*.mdb)|*.mdb';
if SaveDialog1.Execute then begin
SaveDialog1.FileName:=SaveDialog1.FileName+'.mdb';
strPCopy(ToDir,SaveDialog1.FileName);
With OpStru do begin
Wnd:=Handle;
wFunc:=FO_COPY;
pFrom:=@FromDir;
pTo:=@ToDir;
fFlags:=FOF_FilesOnly; //FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:=False;
end;
try
ShFileOperation(OpStru);
Showmessage('数据备份成功!');
except
Showmessage('数据备份失败!');
end;
end;
end;
fengchen12 2007-01-23
  • 打赏
  • 举报
回复
我昨天在网上看到了一段代码,但是我不知道怎么设置相对路径?怎么能把StrPCopy(FromDir,'C:\Documents and Settings\Administrator\桌面\ssss\db1.mdb');里的路径换成相对路径。高手指点?实在是着急啊。。。
-------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var OpStru:TSHFileOpStruct;
FromDir,ToDir:array[0..128]of char;
begin
FillChar(FromDir,Sizeof(FromDir),0);
StrPCopy(FromDir,'C:\Documents and Settings\Administrator\桌面\ssss\db1.mdb');
FillChar(ToDir,Sizeof(ToDir),0);
SaveDialog1.FileName:='目的数据库路径及数据库名'; //可以改名,需saveDialog控件
SaveDialog1.Filter:='Access(*.mdb)|*.mdb';
if SaveDialog1.Execute then begin
SaveDialog1.FileName:=SaveDialog1.FileName+'.mdb';
strPCopy(ToDir,SaveDialog1.FileName);
With OpStru do begin
Wnd:=Handle;
wFunc:=FO_COPY;
pFrom:=@FromDir;
pTo:=@ToDir;
fFlags:=FOF_FilesOnly; //FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:=False;
end;
try
ShFileOperation(OpStru);
Showmessage('数据备份成功!');
except
Showmessage('数据备份失败!');
end;
end;
end;
creativecn 2007-01-23
  • 打赏
  • 举报
回复
TSHFileOpStruct是什么类型 一用就报错.ShFileOperation又是什么命令,帮助里没有
hongqi162 2007-01-23
  • 打赏
  • 举报
回复
数据库文件和执行文件的那个文件夹,就是文件夹拷贝
柯本 2007-01-22
  • 打赏
  • 举报
回复
源文件的路径如果与执行文件相同,可用:
ExtractFilePath(Application.ExeName)
得到
cmd9x 2007-01-22
  • 打赏
  • 举报
回复
用Windows的API函数CopyFile,返回是否成功
fengchen12 2007-01-22
  • 打赏
  • 举报
回复
问题没有解决,我自己顶一下吧
fengchen12 2007-01-22
  • 打赏
  • 举报
回复
谢谢hongqi162(失踪的月亮),
Copy_Dir('源文件夹路经','目标文件夹路经',1)
其中原文件的路径怎么获得?我的数据库文件和执行文件放在一起,能保证我的这个文件夹放在哪里执行都可以得到原文件路径..
hongqi162 2007-01-22
  • 打赏
  • 举报
回复
Copy_Dir('源文件夹路经','目标文件夹路经',1)
hongqi162 2007-01-22
  • 打赏
  • 举报
回复
Function Copy_Dir(SourceDir,DestDir:String;nLx:Integer):Boolean;
Var
Opstruc: TshFileOpStruct;
frombuf,tobuf: Array[0..128] of Char;
begin
FillChar(frombuf,Sizeof(frombuf),0);
FillChar(tobuf,Sizeof(tobuf),0);
StrPcopy(frombuf,SourceDir);
Case nLx of
1:
StrPcopy(tobuf,DestDir);
end;
With Opstruc Do
Begin
Wnd:=0;
Case nLx of
1: wFunc:=FO_COPY;
2: wFunc:=FO_DELETE;
Else wFunc:=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;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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