我用的是LZCopy函数来实现文件的复制,其中用了这样两个函数AssignFile和Rewrite,相关代码如下:
......
AssignFile(ToFile, ExtractFilePath(paramstr(0))+DateStr+ExtractFilePath('abc\a\')+ExtractFileName('c:\1\1.txt');
......
Rewrite(ToFile);其中ExtractFilePath(paramstr(0))+DateStr+ExtractFilePath('abc\a\')是我想指定的目录,可运行时总是报‘Invalid FileName’错,但是把'abc\a\'中的a\去掉,也就是去掉一级子目录,运行就正常,这是什么原因,难道这个函数不能建立多级目录的文件,如果可以怎样建。另外我再问一下有没有其他的文件复制方法,
多谢!!!
......
AssignFile(ToFile, ExtractFilePath(paramstr(0))+DateStr+ExtractFilePath('abc\a\')+ExtractFileName('c:\1\1.txt');
......
Rewrite(ToFile);其中ExtractFilePath(paramstr(0))+DateStr+ExtractFilePath('abc\a\')是我想指定的目录,可运行时总是报‘Invalid FileName’错,但是把'abc\a\'中的a\去掉,也就是去掉一级子目录,运行就正常,这是什么原因,难道这个函数不能建立多级目录的文件,如果可以怎样建。另外我再问一下有没有其他的文件复制方法,
多谢!!!
解决方案 »
- 如何嵌套一个窗体的DLL文件到TabSheet控件中
- record存放任意数据类型的问题
- 请問-------------------Treeview 如何取得 第一层 数量?
- 怎么从文件的完整路径中取出文件名和最后一个文件夹名称
- 如何解决这个delphi自动退出的问题???
- 对access数据库update的问题
- 读取ini问题:能写入数据、能读出数据就是不按照自己的方式执行,这个ini怎么写?不用ini,用别的方法实现也一样给分,大哥大姐们帮忙啊!
- 请问用delphi开发数据库 xp支持什么数据库(服务器端) 有下载的地址吗?谢谢 急!!!!
- 定义了一个数据以后或者其他的数据变量后, 通常我们需要定义一个与之相对应的指针?
- 一个关于TWinSocketStream的问题
- 怎样传递一个数组
- 关于 soap / web server 服务返回数据类型的问题
Invalid FileName是说找不到指定的文件,你可以用
ShowMessage(ExtractFilePath(paramstr(0))+DateStr+ExtractFilePath('abc\a\'));
来看一下文件的路径是否正确。—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
我用过showmessage了,没发现什么问题,我再试一下吧另外copyfile具体是怎么用的,请指点,我在帮助里没找到,只有copyfileto
Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S, T: TFileStream;
Begin
S := TFileStream.Create( sourcefilename, fmOpenRead ); try
T := TFileStream.Create( targetfilename,
fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;{This way uses memory blocks for read/write.}
procedure FileCopy(const FromFile, ToFile: string);
var
FromF, ToF: file;
NumRead, NumWritten: Word;
Buf: array[1..2048] of Char;
begin
AssignFile(FromF, FromFile);
Reset(FromF, 1); { Record size = 1 } AssignFile(ToF, ToFile); { Open output file }
Rewrite(ToF, 1); { Record size = 1 }
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;{This one uses LZCopy, which USES LZExpand.}
procedure CopyFile(FromFileName, ToFileName: string);
var
FromFile, ToFile: File;
begin
AssignFile(FromFile, FromFileName); { Assign FromFile to FromFileName } AssignFile(ToFile, ToFileName); { Assign ToFile to ToFileName }
Reset(FromFile); { Open file for input }
try
Rewrite(ToFile); { Create file for output }
try
{ copy the file an if a negative value is returned }
{ raise an exception }
if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0
then
raise EInOutError.Create('Error using LZCopy')
finally
CloseFile(ToFile); { Close ToFile } end;
finally
CloseFile(FromFile); { Close FromFile }
end;
end;
少半个括号吧