Консультация № 174422
22.11.2009, 01:31
0.00 руб.
0 11 1
Здравствуйте уважаемые эксперты!
Существует форма на ней Button1 и Label1.Caption:='Утро'; по нажатию кнопки программа себя копирует. Проблема в том, что при запуске копии должно быть Label1.Caption:='День';

Обсуждение

Неизвестный
22.11.2009, 01:53
общий
Wetdf:
Что вы подразумеваете под словом копирует? Куда она себя копирует?
Создается второй экземпляр в памяти или физическая копия?
Неизвестный
22.11.2009, 02:24
общий
Wetdf:
При создании формы считывайте то, что должно быть в Label1.Caption из какого-нибудь текстового файла или из реестра.
Неизвестный
22.11.2009, 13:49
общий
И у нас есть, в архивах поищите, и вот, например, Как не допустить запуск второй копии программы
Неизвестный
24.11.2009, 14:52
общий
это ответ
Здравствуйте, Wetdf.
После копирования у программы будет другое имя => мы можем узнать копия ли это из имени файла переданного программе в командной строке.
Примечание: в ParamStr(0) передаётся полное имя файла программы.

Приложение:
if ParamStr(0) = 'имя оригинала' then
Label1.Caption := 'Утро'
else
Label1.Caption := 'День';
4
Не совсем то, что нужно, слишком слабая устойчивость алгоритма к внешним факторам, исходный файл может быть переименован, или написан на кириллице и некоторые ОС не воспримут имя файла. <br>Но все равно спасибо.
Неизвестный
25.11.2009, 04:29
общий
Цитата: 24686
Что вы подразумеваете под словом копирует? Куда она себя копирует?
Создается второй экземпляр в памяти или физическая копия?

копирует, это создает копию файла { CopyFile(PChar(ParamStr(0)), PChar(Label3.Caption), True); //программа копирует саму себя}
Неизвестный
25.11.2009, 04:33
общий
Цитата: 30296
При создании формы считывайте то, что должно быть в Label1.Caption из какого-нибудь текстового файла или из реестра.

к сожалению это не подойдет, копия должна быть уже с {Label1.Caption:='День';} без вмешательства извне.
Неизвестный
25.11.2009, 04:37
общий
Цитата: 422
И у нас есть, в архивах поищите, и вот, например, Как не допустить запуск второй копии программы

"не допустить запуск второй копии программы" вообще не как не связан с моим вопросом!
Вопрос в том, что при запуске копии должно быть {Label1.Caption:='День';} а не как у оригинала {Label1.Caption:='Утро';}
Неизвестный
25.11.2009, 06:48
общий
Wetdf:
Можете попробовать такой алгоритм:
- Зашить строку, которую нужно выводить в Label1, в ресурс
- При запуске программы считывать строку из ресурса
- После копирования файла изменить в нем эту строку на нужную (см. например URL >>)
Неизвестный
27.11.2009, 02:35
общий
Цитата: 30296
Можете попробовать такой алгоритм:
- Зашить строку, которую нужно выводить в Label1, в ресурс
- При запуске программы считывать строку из ресурса
- После копирования файла изменить в нем эту строку на нужную (см. например URL >>)

спасибо за совет, но я где-то мельком видел, что это можно сделать при помощи параметров во время создании копии ехе файла…
Неизвестный
27.11.2009, 07:38
общий
То есть, при копировании как файла на другое место? Вас-то все поняли, как ЗАПУСК второй копии файла
Неизвестный
30.11.2009, 18:48
общий
Цитата: 422
То есть, при копировании как файла на другое место? Вас-то все поняли, как ЗАПУСК второй копии файла

Не важно, куда копируется файл, и кто его запускает, вопрос состоит в то, что при запуске копии должно быть Label1.Caption:='День'; (копия должна создаться с Label1.Caption:='День';).
Форма ответа