![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 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'); Как можно это исправиь? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 27.12.2006
Сообщений: 955
|
![]()
Я не проверял, времени нет, попробуй Sleep использовать!
|
![]() |
![]() |
![]() |
#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...
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 17.03.2007
Сообщений: 39
|
![]()
Все работает, спасибо!
Application.ProcessMessages - а что именно делает эта функция? |
![]() |
![]() |
![]() |
#5 |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
![]()
Эта функция позволяет подождать пока приложение будет обрабатывать сообщения. Здесь использована, чтобы программа была доступна юзеру
во время работы цикла.
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 05.04.2007
Сообщений: 10
|
![]()
А что будет если файл нельзя удалить? защищен он записи или редактируется? ведь программа зависнет?
DeleteFile один раз отработав, сразу возвращает результат, и только потом выполнение идет дальше, надо просто этот результат проверить... И можно спокойно копировать. |
![]() |
![]() |
![]() |
#7 |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
![]()
Спасибо, что поправил r-sol, но я имел в виду Windows.DeleteFile,а
не SysUtils.DeleteFile. А с зависанием полностью согласен.
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бат файл | 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 |