无法理解Delphi的windows文件名

时间:2010-05-13 15:38:20

标签: delphi

我正在尝试从文件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;

会崩溃说它不是一个有效的文件名但是它! 如果我删除所有空格,它的工作原理 我迷路了请帮忙

3 个答案:

答案 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可能试图告诉你一些事情,而你的代码却没有在听。