Помощь - Поиск - Пользователи - Календарь
Полная версия: Приложение
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
ROxY
Ребят такой вопрос
у меня написана программа на Паскале..
но она открывается в виде приложения
тоесть сразу открывается и требует ввести числа
мне нужно исправить кое-что в коде программы
написать чтобы выводились на экран 3 уравнения через writeln
..вопрос как мне попасть в код программы??
Lapp
М
Тема переносится в раздел Теоретические Вопросы



Судя по всему, у тебя исполняемый файл (то есть, грубо говоря, экзешник). Это есть оттранслированная и скомпилированная программа. Процесс трансляции и компиляции, строго говоря, необратим (или обратим неоднозначно). Экзешник ты можешь дизассемблировать и получить код на ассемблере. Его в принципе возможно подредактировать, но это непросто. Средств, переводящих ассемблер в Паскаль я не знаю. Может, другие что подскажут...
мисс_граффити
Откуда она такая взялась?
Если скачал или кто-то дал - Lapp все сказал
А если сам писал - посмотри вокруг, должны быть исходники
Malice
При очень большем желании дописать немножко можно, но в результате у тебя будет тоже только exe-шник, исходники получить будет проблематично.
ROxY
Цитата(Malice @ 7.11.2007 11:36) *

При очень большем желании дописать немножко можно, но в результате у тебя будет тоже только exe-шник, исходники получить будет проблематично.


так мне и надо только exe-шник
каким образом можно попасть в код программы и дописать
Malice
Цитата(ROxY @ 7.11.2007 14:30) *

так мне и надо только exe-шник
каким образом можно попасть в код программы и дописать

Тебе в качестве инструмента понадобится программка hiew.exe (ищется гуглем). Все что необходимо добавить пишется в ней на ассемблере и сохраняется. Могу расписать подробнее весь процесс, как это выглядит в теории (т.к. мы в теоретическом разделе smile.gif ). Не знаю разрешат ли админы, но если ты приложишь екзешник, то объяснить будет проще..
ROxY
вообщем файлик не добавляется
мне нужно записать вот это
writeln('a*x^3+bx+c');
writeln('a*sin(x+b)+c');
writeln('a*ln(abs(x+b)+c;)
вот и всё..
Malice
Цитата(ROxY @ 7.11.2007 16:07) *

вообщем файлик не добавляется
мне нужно записать вот это
вот и всё..


Приду домой попробую набросать подробный план действий smile.gif
Lapp
Цитата(Malice @ 7.11.2007 15:58) *

если ты приложишь екзешник, то объяснить будет проще..

В виде исключения, разрешается smile.gif. Заархивируй его раром, зипом или чем хочешь, и прикладывай. Кстати, тогда он вдвойне оправдает название темы smile.gif))). Поневоле вспомнишь Фонвизина..

Malice, покажи, что программисы не зря свой хлеб едят..
ROxY
вот..
Malice
Проверь вот такой вариант:
Нажмите для просмотра прикрепленного файла
Вариантов для подобных манипуляций много.. Для твоего случая я выбрал самый простой - т.к. в самом начале программы уже стоит write('введите номер уровнения 1 2 3'), я просто подменил адрес строки, передаваемой как параметр для функции write на другой. Нашел более-менее свободное место (сообщения об ошибках всяких smile.gif ) и записал туда все необходимые тебе строки.
В общем случае можно поступать так:
- найти место, в которой хотелось бы что-то добавить;
- запомнить команду, которая в итоге будет замещена;
- поставить на нее переход в свободное место, где и написать весь необходимый код и ту самую запомненную команду;
- вернуться обратно, на следующую за переходом команду.
Свободное место ищется по разному.. Можно заместить некоторые неиспользуемые функции модулей Crt или Graph или еще как.. Главное тут не промахнутся smile.gif
ROxY
большой сЭнкс))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.