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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 16:29   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию конец программы в *.ехе

всем привет!
как объяснить программе, что она закончилась?
т.е. есть готовый *.exe и нужно в этот файл дописать пару строк (в конец)
проблема в том что когда их дописываешь и запускаешь программу,
она пытается выполнить новые строчки как собственный код.
и вылетает с ошибкой.
что нужно дописать в конец ехе, что он не пытался дальше выполнять свое содержимое?
как дописываются обычные ресурсы?
может написать что-то что бы сообщало программе что сейчас начнутся ресурсы и их не нужно выполнять?
xrob вне форума Ответить с цитированием
Старый 24.05.2011, 16:31   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> она пытается выполнить новые строчки как собственный код

ничего подобного, программа не такая тупая.
проблема, очевидно, в чём-то другом.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 24.05.2011, 16:35   #3
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

честно говоря, может и в другом, ибо когда я новые строчки дописываю,
глюки начинаются еще до запуска программы - например пропадает значок проги.
xrob вне форума Ответить с цитированием
Старый 24.05.2011, 18:04   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

скорей всего мимо запись идёт
проще всего проверить в командной строке:

> copy /b myapp.exe + anydata.txt myapp.exe

эта команда склеит 2 файла и запишет результат в myapp.exe
после этого myapp.exe должен продолжать запускаться и иконка никуда не пропадать

а чтобы добавить свой ресурс, достаточно скомпилить его с помощью rc или brcc32 и добавить в код проекта:

{$R myresource.res }
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 24.05.2011, 19:13   #5
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

"скорей всего мимо запись идёт"
мне по идее не надо тупо склеить файлы, а надо дописать их по определенным правилам, с соответствующим синтаксисом (их ведь потом использовать как-то надо)
я прогу писал для добавления.

while not EOF(test) do read(test); write(test2);
а после того как файл перепишется, дописываю туда следующий:
write(test2);

и кстати блокнотом открывал, смотрел - все правильно дописывается.
xrob вне форума Ответить с цитированием
Старый 24.05.2011, 22:57   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Может вы задачу опишете (какой функционал надо реализовать)? А то по описанию похоже, что вы какого-то страшного монстра лепите.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 25.05.2011, 00:29   #7
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

ну я в силу своих особенностей по определению могу лепить только монстров (бгг!)
а вообще ресурсы... мне нужно тупо зашить в ехе-шник картинку,
чтоб потом ее можно было загрузить в битмап.
да, я догадываюсь куда вы хотите меня послать...
мол типа почитай про создание ресурсов, ведь это так просто,
или например кинь на форму TImage и загрузи в него битмап на этапе разработки.
но это все не канает, в противном случае я бы давно так сделал.
я попробовал добавить ресурс (текстовый файл с 'bugoga!') стандартными средствами,
потом найти его в скомпиленом ехе - не нашел. не канает.
в итоге придумал такой способ:
res:='мой ресурс, содержимое нужных файлов';
т.е. можно на этапе разработки прямо в код
в виде переменной записать символы из нужного файла =)
правда возникает проблема 255, но она решаема:
res:='part1'+'part2'+'part3'+ и т.д. ; // где каждый парт по 255 символов.
а в скомпиленом ехе-шнике получается строка целиком 'part1part2part3';

p.s.
вобщем, извращенец я ))
xrob вне форума Ответить с цитированием
Старый 25.05.2011, 08:29   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
потом найти его в скомпиленом ехе - не нашел. не канает.
ЗАЧЕМ?!?! Зачем его искать в скомпилённом EXE?!
ресурс можно использовать и всё...


я полностью согласен с GunSmoker, Вы хотите странного и сооружаете какого-то франкенштейна...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2011, 18:07   #9
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

зачем?
а за тем чтобы прямо из exe прочитать символы в строку,
строку запихнуть в TStringStream,
а потом stream загрузить в TBitmap в качестве картинки.
все просто! =)
кстати, с учетом "а в скомпиленом ехе-шнике получается строка целиком 'part1part2part3';"
и в строку читать ничего не надо, она уже есть готовая ))
xrob вне форума Ответить с цитированием
Старый 25.05.2011, 18:11   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Я открою вам секрет, что ресурс в .exe тоже "просто читается". Он не шифруется, не кодируется, а хранится "как есть". Вы получаете начало ресурса и вот он весь перед вами.

Хотите строку - будет строка.

Хотите bitmap - будет bitmap (и не надо вот этого "яйцо в утке, утка в зайце": "а за тем чтобы прямо из exe прочитать символы в строку, строку запихнуть в TStringStream, а потом stream загрузить в TBitmap в качестве картинки").
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
конец файла boomeer Общие вопросы C/C++ 2 04.08.2010 15:55
ехе который запускает другой ехе CrOsP Фриланс 12 24.06.2010 18:59
Конец Света! Linker88 Свободное общение 82 15.06.2009 18:34
Как сделать ехе для программы DiSpalL Помощь студентам 4 31.05.2009 22:21