首先看我代码是不是有地方错了,再看我的思路是不是对了.最后望大家帮我测试一下代码.感激
function TForm2.GetPDFFile():string;
var
saDlg:TSaveDialog;
pfile,Ext:string;
begin
saDlg:=TSaveDialg.Create(self);
saDlg.filter:='(*.pdf)|*.pdf';
if saDlg.Execture then
pfile:=saDlg.FileName;
Ext:=ExtractFileExt(pfile);
if Ext='' then
pfile:=pfile+'.pdf'
else
if Ext<>'.pdf' then
begin
showmessage('请输入正确的扩展名');
abort;
end;
result:=pfile;
saDlg.Free;
end;//调用
procedure TForm2.Button1Click(Sender:Object);
var
str:string;
falg:boolean;
begin
str:=GetPDFFile;
//这里是要害啊,帮忙啊
falg:=copyFile(pchar('a.pdf'),pchar(str),true);
{上面这一句要想得到TRUE,哪么这个STR的值必须不是通过TSAVEDIALOG得到的才行,如果是通过DIALGE得到的文件路径哪么这个COPYFILE返回的就是FALSE,不解啊,不解啊...}
showmessage(booltostr(falg));
end;
声明:TSaveDialg对象申明为全局和局部对象都试过了.
function TForm2.GetPDFFile():string;
var
saDlg:TSaveDialog;
pfile,Ext:string;
begin
saDlg:=TSaveDialg.Create(self);
saDlg.filter:='(*.pdf)|*.pdf';
if saDlg.Execture then
pfile:=saDlg.FileName;
Ext:=ExtractFileExt(pfile);
if Ext='' then
pfile:=pfile+'.pdf'
else
if Ext<>'.pdf' then
begin
showmessage('请输入正确的扩展名');
abort;
end;
result:=pfile;
saDlg.Free;
end;//调用
procedure TForm2.Button1Click(Sender:Object);
var
str:string;
falg:boolean;
begin
str:=GetPDFFile;
//这里是要害啊,帮忙啊
falg:=copyFile(pchar('a.pdf'),pchar(str),true);
{上面这一句要想得到TRUE,哪么这个STR的值必须不是通过TSAVEDIALOG得到的才行,如果是通过DIALGE得到的文件路径哪么这个COPYFILE返回的就是FALSE,不解啊,不解啊...}
showmessage(booltostr(falg));
end;
声明:TSaveDialg对象申明为全局和局部对象都试过了.
解决方案 »
- 这样的桌面程序开发,应该用什么开发工具好一些?
- IndyFTPServer问题
- 两个不同的数据库(Sql Server2000),含有一张相同的数据表,如何对比检索插入数据??
- DELPHI的建模工具是什么啊,在哪里有的下啊?
- delphi 程序執行大量的操作時,基本上就沒有反應了.
- 想下电子书的进来看看
- 关于Form的Print问题
- clientdataset中如何取得第n1,n2行的数据并作汇总?
- 如何解决这个问题(菜鸟),急啊!
- delphi 中的匹配问题,希望大家帮忙?
- 用TSaveDialog保存文件时,如何在保存窗口中显示目标扩展名的文件列表?
- 弱弱的问:bytez怎么转换为string?
BOOL CopyFile( LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists
);第一个参数是源文件,第二个参数是目标文件,第三个参数如果指定为true,那么如果目标文件存在,则返回失败,如果指定为false,那么如果目标文件存在,则覆盖目标文件
改成这样就行了嘛,要多加强英文呀!
procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
falg:boolean;
begin
str:=GetPDFFile;
falg:=copyFile(pchar(str),pchar('a.pdf'),true);
showmessage(booltostr(falg));
falg:=copyFile(pchar('a.pdf'),pchar(str),false);就可以了
function TForm2.GetPDFFile(var: FileName:string):boolean;
var
saDlg:TSaveDialog;
pfile,Ext:string;
begin
Result := False;
saDlg:=TSaveDialg.Create(self);
try
saDlg.filter:='(*.pdf) ¦*.pdf'; if Not saDlg.Execture then Exit;
pfile:=saDlg.FileName;
Ext:=ExtractFileExt(pfile);
if Ext='' then
pfile:=pfile+'.pdf'
else if Ext <>'.pdf' then
begin
showmessage('请输入正确的扩展名');
Exit;
end;
FileName := pFile;
result:=True;
finally
saDlg.Free;
end;
end; //调用
procedure TForm2.Button1Click(Sender:Object);
var
str:string;
falg:boolean;
begin
if Not GetPDFFile(str) then Exit;
//这里是要害啊,帮忙啊
falg:=copyFile(pchar(ExtractFilePath(Application.ExeName)+'\a.pdf'),pchar(str),true);
{上面这一句要想得到TRUE,哪么这个STR的值必须不是通过TSAVEDIALOG得到的才行,如果是通过DIALGE得到的文件路径哪么这个COPYFILE返回的就是FALSE,不解啊,不解啊...}
showmessage(booltostr(falg));
if Not falg then MessageBox(Handle,PChar(SysErrorMessage(GetLastError)),'复制文件出错',MB_OK or MB_ICONERROR);
end;