Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2009, 23:28   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию После CreateFile не срабатывает DeleteFile

Здравствуйте. Не пойму в чём дело...
За одну компиляцию программы можно создать файл, а удалить не получается.
Смотрел Через Unlooker'а - показывает, что после создания файла он занят процессом Delphi, а когда пытаюсь удалить его показывает мессагу, что файл удалён(а на самом деле файл не удалён). Закрываешь прогу, запускаешь - удаляет. Опять создаёшь и пытаешься удалить не удаляет, а мессагу показывает, что удалил... Может что не так делаю? Подскажите...

Код:
procedure TForm1.CreateClick(Sender: TObject);
begin
 if FileExists('dat') then
    ShowMessage('file EXIST!!!');
    else
      begin
        FileCreate('dat');
        ShowMessage('file create!!!');
      end;
 
procedure TForm1.DelClick(Sender: TObject);
begin
if FileExists('dat') then
 begin
   DeleteFile('dat');
   ShowMessage('delete file DAT');
 end 
    else ShowMessage('file NOT EXIST');
end;
Arkuz вне форума Ответить с цитированием
Старый 12.03.2009, 23:36   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А что ж тут непонятного-то?
Код:
fh: integer;
...
procedure TForm1.CreateClick(Sender: TObject);
begin
 if FileExists('dat') then
    ShowMessage('file EXIST!!!') //;
    else
      begin
        fh:=FileCreate('dat');
        ShowMessage('file create!!!');
      end;
end;
 
procedure TForm1.DelClick(Sender: TObject);
begin
if FileExists('dat') then
 begin
   FileClose(fh);
   DeleteFile('dat');
   ShowMessage('delete file DAT');
 end 
    else ShowMessage('file NOT EXIST');
end;
mihali4 вне форума Ответить с цитированием
Старый 12.03.2009, 23:46   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Спасибо, mihali4, но почему тогда в help'e по delphi вот такой пример:
Код:
if FileExists(FileName) then
  if MessageDlg('Do you really want to delete ' + ExtractFileName(FileName) + '?'), mtConfirmation, [mbYes, mbNo], 0, mbNo) = IDYes then 
    DeleteFile(FileName);
Arkuz вне форума Ответить с цитированием
Старый 12.03.2009, 23:50   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да по той простой причине, что подразумевается - после окончания работы с файлом его нужно закрыть... То есть освободить для любых дальнейших с ним действий. Вы же сами это прекрасно понимаете.
Я доработал ваш вариант - для "забывчивых"...
mihali4 вне форума Ответить с цитированием
Старый 12.03.2009, 23:55   #5
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

А не могли бы вы мне сказать почему delphi не отлавливает исключение
в этом месте?
Код:
if FileExists('dat') then
 begin
   DeleteFile('dat');//выполняется и этот оператор
{а разве здесь не должно быть ошибки? Файл то на самом деле остался, почему мессага появляется?}
   ShowMessage('delete file DAT');// и потом этот
 end 
    else ShowMessage('file NOT EXIST');
end;
Цитата:
Сообщение от mihali4 Посмотреть сообщение
Я доработал ваш вариант - для "забывчивых"...
А я поблагодарил - для "сонных"

Последний раз редактировалось Stilet; 13.03.2009 в 09:14.
Arkuz вне форума Ответить с цитированием
Старый 13.03.2009, 00:00   #6
eskander
Пользователь
 
Аватар для eskander
 
Регистрация: 01.03.2009
Сообщений: 29
По умолчанию

Arkuz,
Код:
if FileExists('dat') then
 begin
   if DeleteFile('dat') then  ShowMessage('delete file DAT');
 end 
    else ShowMessage('file NOT EXIST');
end;
eskander вне форума Ответить с цитированием
Старый 13.03.2009, 00:03   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
А не могли бы вы мне сказать почему delphi не отлавливает исключение в этом месте?[/CODE]
А потому, что его там не возникает...
Вот если б вы сделали так:
Код:
if DeleteFile('dat') then
ShowMessage('file DAT deleted') else
ShowMessage('Can not to delete file');
то все было бы видно.
mihali4 вне форума Ответить с цитированием
Старый 13.03.2009, 00:04   #8
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

eskander, спасибо, вопрос решён...
Ваш пример несколько для другого случая. А точнее для просмотра мессаги, если файл удалён... А у меня мессаги чисто для контроля... Главное нужно было снести файл и точно знать, что его не существует...

Ладно, не буду с вами спорить и влезать в дебри, боюсь в просак попасть
Вопрос себя исчерпал, всем СПАСИБО!!! Особенно "соням"

Последний раз редактировалось mihali4; 13.03.2009 в 00:18. Причина: Объединение постов
Arkuz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
timer срабатывает только один раз! KWN, lnc Общие вопросы Delphi 1 05.03.2009 12:58
Рекурсия - не срабатывает return iankov PHP 2 24.02.2009 16:31
Deletefile Killbrum Помощь студентам 5 14.09.2008 00:31
PopUpMenu не срабатывает OnDrawItem Comer_Jus Общие вопросы Delphi 6 16.05.2008 21:48
CreateFile - считывание дискеты в файл и обратная запись на нее... kalexi Win Api 1 01.10.2007 19:56