Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Ошибка или нет? DirectoryExists


Автор: BpIstorick 16.7.2006, 19:01
в своей программе решил сделать проверку директории, но просто понять не могу теперь, как работает функция DirectoryExists

в процедуру по константе передаю APout - имя папки типа 'd:\111\123\' где 123- имя нужной папки а d:\111 просто путь к нужному каталогу

если
Код
  s:=APOut;
  delete (s, p.Y+1, length(s));//здесь я просто удаляю имя нужной папки, чтобы проверить каталог выше
  b:=DirectoryExists (s);        //делаю проверку каталога
b - типа Боолеан

так вот, функция DirectoryExists всегда возвращает мне false, каталог существует!!!

если делаю вызов вручную указывая каталог
Код
  s:='d:\111\';
  b:=DirectoryExists (s);
то все путем, работает

в чем загвоздка?

M
z-END
пользуйся кнопкой "код" для выделения кода
 

Автор: volvo877 16.7.2006, 19:23
BpIstorick, давай ты будешь приводить фрагменты программ, в которых понятно, ЧЕМУ равно значение той или иной переменной? Откуда, например, видно, чему равно p.Y + 1? Может, ты удаляешь вообще все, что есть в строке... 

Автор: Alexeis 16.7.2006, 20:25
Может вместо  'd:\111\123\' передовать  'd:\111\123'?

Добавлено @ 20:28 
Кстати тем более хелп дает пример
Код

uses FileCtrl;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not DirectoryExists('c:\temp') then
...................
 

Автор: RemaGe 16.7.2006, 20:53
У меня работает и 
Код

DirectoryExists ('c:\temp');  

и
Код

DirectoryExists ('c:\temp\');  

так что проблемма почти наверняка в значении p.Y+1.
Как она вычисляется не знаю, поэтому просто сделай:
Код

 s:=APOut;    
Showmessage(s);
 delete (s, p.Y+1, length(s));
Showmessage(s);
 b:=DirectoryExists (s);  

и проверь чего находится в переменной s до delete, и чего после.
 smile  

Автор: BpIstorick 16.7.2006, 21:29
volvo877, 
alexeis1, 

Спасибо за содействие, ошибка найдена и все работает!

Проверено DirectoryExists будет работать в обоих случаях: и когда 
Код

DirectoryExists('c:\temp')


и когда 

Код

DirectoryExists('c:\temp\')


Проблема была в том что я просто подставлял неверное имя папки smile просьба особо не ругать ;) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)