我正在尝试从文件X复制到此名称
C:\RIP2\France Clidat\Les Plus Belles Oeuvres - France Clidat\(01)3_ Un Sospiro.flac
我已经检查过没有坏字符,如果我强制创建导演
C:\RIP2\France Clidat\Les Plus Belles Oeuvres - France Clidat
但它拒绝写文件,我不明白为什么要进行简单的测试
procedure foo(str: string);
var
f:File;
begin
Assign(f,str);
Rewrite(f);
CloseFile(f);
end;
会崩溃说它不是一个有效的文件名但是它! 如果我删除所有空格,它的工作原理 我迷路了请帮忙
答案 0 :(得分:1)
由于命令行副本通常需要在文件名周围包装双引号,我想知道API是否需要类似的东西。也许尝试单引号或双引号来看看是否能解决问题?
答案 1 :(得分:1)
尝试在尝试在其中创建文件之前确保您的目录存在 我在Win7上尝试使用D2010,它与ForceDirectories一起使用:
const
sFilename = 'C:\RIP2\France Clidat\Les Plus Belles Oeuvres - France Clidat\(01)3_ Un Sospiro.flac';
procedure foo(str: string);
var
f: File;
begin
if not ForceDirectories(ExtractFileDir(str)) then
showMessage('ForceDirectories failed')
else
begin
AssignFile(f,str);
Rewrite(f);
CloseFile(f);
end;
end;
procedure TForm10.Button1Click(Sender: TObject);
begin
foo(sFilename);
end;
答案 2 :(得分:0)
尝试一些测试,看它是否反对parens,下划线,空格等。然后你会知道更多。
调用GetLastError以查明是否抛出错误。 Windows可能试图告诉你一些事情,而你的代码却没有在听。