Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Переименовывание

Автор: Адель 12.04.2007 22:01

возможно ли программе преименовать свой собсвенный экзешный файл в процессе выполнения??

Автор: мисс_граффити 12.04.2007 22:19

Попробуй так:

procedure TForm1.Button1Click(Sender: TObject);
begin
if FileExists('Project1.exe') then
RenameFile('Project1.exe','2.exe');
end;

Автор: Malice 12.04.2007 22:27

Цитата(мисс_граффити @ 12.04.2007 19:19) *

Попробуй так:

nea.gif Так конечно не получится, т.к. файл залочен в этот момент и штатными средствами сделать это не просто smile.gif

Автор: volvo 12.04.2007 22:52

ДРКБ -> Работа с файловой системой -> Файловые операции (копирование, удаление, ...) -> Как удалить файл из самого себя?

Переименовать можно по тому же принципу... Кстати в статье популярно объясняется, почему нельзя переименовать файл напрямую smile.gif

Автор: мисс_граффити 12.04.2007 22:53

У меня работает, иначе бы не стала выкладывать.

Автор: Адель 13.04.2007 0:57

2volvo пе могбы пояснить эти строчки и как их переделать в переименование? no1.gif


writeln(f, ':1');
writeln(f, format('Erase "%s"', [paramstr(0)]));
writeln(f, format('If exist "%s" Goto 1', [paramstr(0)]));
writeln(f, format('Erase "%s"', [FileName]));



2мисс_граффити у меня тоже no1.gif

PS возник еще вопросик): как получить имя файла, который сейчас себя выполняет?

Автор: мисс_граффити 13.04.2007 1:54

У тебя тоже - что? Работает или не работает? smile.gif А то в сочетании с этим смайлом непонятно...

Автор: Адель 13.04.2007 10:37

работает wink.gif
глупо, что сама не попробовала)

Автор: Malice 13.04.2007 13:11

Цитата(Адель @ 13.04.2007 7:37) *

работает wink.gif

Я похоже с удалением перепутал, сорри smile.gif

Цитата(Адель @ 13.04.2007 7:37) *

PS возник еще вопросик): как получить имя файла, который сейчас себя выполняет?

Я так понимаю имя файла до переименования или после ? smile.gif

Автор: мисс_граффити 13.04.2007 13:17

я так понимаю, что ты хочешь заменить

 RenameFile('Project1.exe','2.exe');
на
 RenameFile(<определенное имя>,<новое имя>);

Ничего умнее, чем по handl'у окна определять процесс, я не придумала. sad.gif
Но, наверное, должен быть более простой способ.

Автор: Адель 14.04.2007 2:59

хочется, чтоб он сам себя переименовал, получив в качестве первого параметра свое имя) ..

Цитата
по handl'у окна определять процесс

снасчала тож так подумала, но handl дает имя формы, а не имя проекта unsure.gif

Автор: мисс_граффити 14.04.2007 3:29

посмотри вот здесь:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=50760

Автор: Адель 14.04.2007 13:22

мисс_граффити спасиб) то,что нужно