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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2009, 23:54   #11
The Best
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию

а у мну не пашет
Гейтсу: Конечно. halt;

Прикрепляю исходники.
Вложения
Тип файла: rar Mine downloader.rar (2.5 Кб, 7 просмотров)

Последний раз редактировалось The Best; 22.07.2009 в 00:01.
The Best вне форума Ответить с цитированием
Старый 22.07.2009, 00:08   #12
bill_gates
Ненависник Windows
Пользователь
 
Аватар для bill_gates
 
Регистрация: 04.07.2009
Сообщений: 82
По умолчанию

А может перед удалением стоит подождать?

Код:
Sleep(1200);//например
if Вопрос.Возник then begin if Google.Поиск=false then begin СоздатьТопик; end; end;

if ДругойЮзер.Помог then begin НажатьНаВесы end;
bill_gates вне форума Ответить с цитированием
Старый 22.07.2009, 00:18   #13
The Best
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию

М.. пожалуй даже и не знаю.. помогло или нет.. Походу нет.. Только вот появилась ещё одна ошибка: EInvalidOperation и что-то там про то, что не может сделать невидимы окно или что-то в этом роде.. выскакивает она во втором проекте после экзека на холте. (Cannot change Visible in OnShow or OnHide)

Ураа! Получилось! Тока прога терь тормозит жутко.

Последний раз редактировалось The Best; 22.07.2009 в 00:26.
The Best вне форума Ответить с цитированием
Старый 22.07.2009, 00:27   #14
bill_gates
Ненависник Windows
Пользователь
 
Аватар для bill_gates
 
Регистрация: 04.07.2009
Сообщений: 82
По умолчанию

Есть еще один выход: Некоторые проги перед открытием лезут в нет и пишут, типа есть новая версия, обновить сейчас?. Я понимаю, что ето может и не самый разумный выход, но может сделать ланчер-апдейтер, который будет сначала коннектиться к нету и смотреть версию, обновлять Project1, а потом запускать уже обновленную прогу юзеру.

Сорри за пост, не заметил как отредактировался предыдущий.
if Вопрос.Возник then begin if Google.Поиск=false then begin СоздатьТопик; end; end;

if ДругойЮзер.Помог then begin НажатьНаВесы end;

Последний раз редактировалось bill_gates; 22.07.2009 в 00:31.
bill_gates вне форума Ответить с цитированием
Старый 22.07.2009, 00:31   #15
The Best
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию

У меня пока второй вариант работает. Но, как грится, надо же поискать проблем на своою голову)) Вот и решил "попонтить". Кста, проблему с тормозами тоже решил: вместо 1200 100 в слипе написал, и всё стало работать без заметных тормозов..

PS А если прога будет запускаться на компе, который будет подтормаживать?.. Получится, что там надо будет менять значение слипа на большее?.. Хреново.. Надо подумать..

PPS Вот я и смог написать то, что хотел: апдейтер проги из инета без использования сторонних прог и т.п. Уря!)) Пусть пока она и работает тока на пробном проекте (отдельно от основной проги), но скоро это изменится)
The Best вне форума Ответить с цитированием
Старый 22.07.2009, 01:12   #16
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Ну вот наваял процедуру которая работает по типу Uninstaller'a!

Код:
procedure UpdateApp(const UpdateFile, AppName: string);
var
  F: TextFile;
  DelAppName: string;
begin
  if  FileExists(UpdateFile) then
  begin
  DelAppName:= 'del.bat';
  AssignFile(F, DelAppName); 
  Rewrite(F);
  Writeln(F, 'del '+AppName);
  Writeln(F, 'ren '+ UpdateFile + ' '+AppName);
  Writeln(F, 'del '+ DelAppName);
  CloseFile(F);
  Winexec(Pchar(DelAppName), SW_Hide);
  Halt;
end;
end;
Ставите в таймер и как только в появляться файл обновленный EXE то, прога сама себя удаляет и переименовывает Новый EXE в себя!
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  UpdateApp('project2.exe', 'project1.exe');
end;
Project1 - сама прога , project2 -обновленная !

Последний раз редактировалось uberchel; 22.07.2009 в 02:39.
uberchel вне форума Ответить с цитированием
Старый 22.07.2009, 08:58   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чет я не понимаю в чем трудности?
Код:
if not CopyFile... then ShowMessage(IntToStr(GetLastError)+' - '+SysErrorMessage(GetLastError));
И текст ошибки увидишь и ее код.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2009, 11:34   #18
The Best
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию

Stilet, дело в том, что SysErrorMessage(GetLastError)); даёт application complited succesfuly.

PS люди, когда же вы поймёте, что если человек просит дать что-то, то не надо говорить ему, что нужно сделать чтобы он сам получил это что-то.. (Я попросил дать описание ошибок функции, т.к. у меня не работает помощь, а в ответ получил "Зайди туда и увидишь сам всё" "Напиши это и увидиш сам всё". Еси бы это помогло, я бы и не обращаля сюда..)
The Best вне форума Ответить с цитированием
Старый 22.07.2009, 12:44   #19
bill_gates
Ненависник Windows
Пользователь
 
Аватар для bill_gates
 
Регистрация: 04.07.2009
Сообщений: 82
По умолчанию

Цитата:
Сообщение от The Best Посмотреть сообщение
PS А если прога будет запускаться на компе, который будет подтормаживать?.. Получится, что там надо будет менять значение слипа на большее?.. Хреново.. Надо подумать..
Я щас посмотрел старый код. Есть еще один вариант, не зависящий от слипа. Вот такой код был:

Код:
{$I-}

//(...) Другой код

repeat
deletefile('C:\project1.exe');
until IOResult=0;

//(...) Другой код

{$I+}
Так и не понял почему но IOResult всегда возвращает 0 если юзать его с DeleteFile. Но ведь DeleteFile это функция, типа Boolean возвращает false если удаление неудачно завершилось. Можно этим воспользоваться(Я свой код написал):

Код:
procedure TForm1.FormShow(Sender: TObject);
var b:boolean;
begin
{$I-}
b:=false;
repeat
if DeleteFile('Project1.exe') then begin
b:=true;
end;
{$I+}
until b=true;
end;
Форма Project'a2 не появится пока файл Project1 не будет свободен для удаления. Удачи!
if Вопрос.Возник then begin if Google.Поиск=false then begin СоздатьТопик; end; end;

if ДругойЮзер.Помог then begin НажатьНаВесы end;
bill_gates вне форума Ответить с цитированием
Старый 22.07.2009, 13:10   #20
The Best
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию

А я немного доработаю твой код:
Код:
procedure TForm1.FormShow(Sender: TObject);
var b:boolean;
begin
 {$I-}
 b:=false;
 repeat
  if DeleteFile('Project1.exe') then
   b:=true;
 until b=true;
 {$I+}
end;
{$I+} не в репите должен стоять. а во вторых - этот код тоже почему-то не пашет.. Дело в том, что, он выводит тру а потом удаляет этот файл. Всё равно нужна задержка.. Но всё равно спасибо.

PS Всё таки хорошо отдохнуть какое-то время, а потом снова взяться за работу. Нам же ничего не мешает использовать функцию fileexists!! Тогда код будет следующий:

Код:
procedure TForm1.FormShow(Sender: TObject);
var 
 b:boolean;
begin
 {$I-}
 repeat
  if DeleteFile('Project1.exe') then
   b:=true;
 until (not fileexists('Project1.exe')) and (b=true);
 {$I+}
end;
Вопрос тока в том теперь заключается, что будет, если этот файл недоступен?.. Всё, вроде подправил кодик и на этот случай.. Вопрос тока будет ли это терь работать..

PPS ЭТО РАБОТАЕТ!

Последний раз редактировалось The Best; 22.07.2009 в 13:33.
The Best вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в использовании сегмента Miller-1981 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 10.06.2009 16:04
Ошибка List index out of bounds(0) при использовании запроса AdoQuery ArtInt БД в Delphi 14 15.04.2009 18:35
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
Подскажите, где ошибка в использовании ControlSource... Tooree Microsoft Office Access 2 18.08.2008 20:46