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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2007, 20:20   #1
Lonix
Пользователь
 
Регистрация: 17.03.2007
Сообщений: 39
По умолчанию Проблема, не успевает удалится файл

Смысл программы в том чтобы найти файл1, его удалить и в место него поставить другой файл2, а потом удалить файл2. Такая проблема: он находит файл1, начинает удалять, из заэтого файл2 не копируется. Вот код:
.................
var
h: string;
begin
h:=memo1.Lines.Strings[0]; // путь к файлу
DeleteFile(pchar(h)); //удаляем файл
while FileExists(h) do
begin
DeleteFile(pchar(h));
end;
copyfile('uninstall.exe', pchar(h), false);
DeleteFile('uninstall.exe');

Как можно это исправиь?
Lonix вне форума Ответить с цитированием
Старый 04.04.2007, 20:51   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Я не проверял, времени нет, попробуй Sleep использовать!
merax вне форума Ответить с цитированием
Старый 04.04.2007, 22:13   #3
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Меня вот смущает следующий код:

while FileExists(h) do
begin
DeleteFile(pchar(h));
end;

Какой смысл пытаться запускать DeleteFile несколько раз? (достаточно одного и он стерт, если то позволяют атрибуты файла)

Если надо подождать можно сделать так:

while FileExists(h) do
begin
Application.ProcessMessages;
end;

З.Ы. Проверял - работает.
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 04.04.2007, 22:53   #4
Lonix
Пользователь
 
Регистрация: 17.03.2007
Сообщений: 39
По умолчанию

Все работает, спасибо!
Application.ProcessMessages - а что именно делает эта функция?
Lonix вне форума Ответить с цитированием
Старый 05.04.2007, 19:28   #5
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Эта функция позволяет подождать пока приложение будет обрабатывать сообщения. Здесь использована, чтобы программа была доступна юзеру
во время работы цикла.
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 05.04.2007, 20:18   #6
r-sol
Пользователь
 
Регистрация: 05.04.2007
Сообщений: 10
По умолчанию

А что будет если файл нельзя удалить? защищен он записи или редактируется? ведь программа зависнет?
DeleteFile один раз отработав, сразу возвращает результат, и только потом выполнение идет дальше, надо просто этот результат проверить... И можно спокойно копировать.
r-sol вне форума Ответить с цитированием
Старый 07.04.2007, 17:32   #7
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Спасибо, что поправил r-sol, но я имел в виду Windows.DeleteFile,а
не SysUtils.DeleteFile. А с зависанием полностью согласен.
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бат файл combays Помощь студентам 2 14.07.2008 10:11
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58
dat файл ben95 Свободное общение 2 24.03.2008 09:12
Проблема с записью в файл...( Regloger Помощь студентам 10 15.11.2007 17:49
Файл vitalik007 Общие вопросы Delphi 2 03.09.2007 22:07