ForceDirectories возвращает False - PullRequest
       11

ForceDirectories возвращает False

3 голосов
/ 26 февраля 2011

Я использую функцию ForceDirectories следующим образом:

ForceDirectories('C:/Path/To/Dir');

И он возвращает False, и каталоги вообще не создаются. GetLastError возвращает 0. Я запускаю программу с правами администратора.

Если я делаю

ForceDirectories('C:/Path');
ForceDirectories('C:/Path/To');
ForceDirectories('C:/Path/To/Dir');

Каждый вызов завершается успешно, и каталоги создаются. Однако это аннулирует полезность функции ForceDirectories. Кто-нибудь знает, почему так себя ведет? (Я смотрю на тебя, Дэвид)

Ответы [ 2 ]

11 голосов
/ 26 февраля 2011

Измените ваш разделитель пути на тот, который подходит для вашей платформы (Win32), и все будет хорошо:

  ForceDirectories('c:\Path\To\Dir');

Чтобы сделать код переносимым между платформами (при подготовке к будущему времени, когда это можетиметь отношение к вашему коду Delphi) вы можете:

  s := 'c:/Path/To/Dir';  // << example

  s := StringReplace(s, '/', PathDelim, [rfReplaceAll]);
  s := StringReplace(s, '\', PathDelim, [rfReplaceAll]);
  ForceDirectories(s);

Это может быть улучшено для повторного использования (только поиск / замена символа, который не равен = PathDelim), но демонстрирует принцип.

5 голосов
/ 26 февраля 2011

Видимо ForceDirectories любит только \, а не / ... Глупая проблема решена.

...