Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 150

/ вопрос закрыт /

Здравствуйте, эксперты! Мне задали такую интересную задачу:
нужно взять данные,код(как хотите называйте) из бинарного файла(exe) и вставить обратно в этот же файл. Поиск не нужен, мы знаем где находится файл, знаем что он делает. Главное, после всего программа должна быть рабочей. Простите, что задаю вопросы по бесполезной программе, но всётаки надо написать такое чудо.

Приложение:
  1.  


Примечание #1 (3 апреля 2011, 20:55):
ещё забыл сказать, что вставить он должен код в себя пустого, но я знаю как это сделать, проверял. Я использовал Rewrite перед записыванием в файл.

Кудя Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: Кудя (статус: Посетитель)
Вопрос отправлен: 3 апреля 2011, 20:05
Состояние вопроса: закрыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 52; последнее сообщение — 7 апреля 2011, 19:59; участников в обсуждении: 7.

Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]

Егор

Егор (статус: 10-ый класс), 4 апреля 2011, 18:34 [#21]:

гм. прочитанные из файла данные нужно где-то хранить до перезаписи. надо решить, где хранить эти данные - в памяти или во временном файле. честно говоря, не вижу никакой проблемы - прочитать кучу байтов, а потом их же записать - один-в-один. если сделать правильно, ничего при этом не повредится.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 4 апреля 2011, 21:14 [#22]:

а в буффере это хранить нельзя?
Think Different. (c)
Егор

Егор (статус: 10-ый класс), 4 апреля 2011, 21:36 [#23]:

буфер - это и есть либо оперативная память, либо временный файл
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 5 апреля 2011, 07:17 [#24]:

ну его веть можно использовать, неделая файл?
переменная буфера: array[1..99999999] of byte;
это не катит?
Think Different. (c)
min@y™

min@y™ (статус: Доктор наук), 5 апреля 2011, 08:36 [#25]:

Цитата (Кудя):

можно ли достать содержимое exe и положить обратно

А что подразумевается под словом "достать"?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Кудя

Кудя (статус: Посетитель), 5 апреля 2011, 16:37 [#26]:

ну бинарный код должен покинуть свой файл и опять вернуться, как ещё можно объяснить мою цель.
Think Different. (c)
min@y™

min@y™ (статус: Доктор наук), 5 апреля 2011, 16:53 [#27]:

Покинуть - это как?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Кудя

Кудя (статус: Посетитель), 5 апреля 2011, 17:18 [#28]:

ну чтобы в бинарном файле уже ничего не было, пуст.
Think Different. (c)
Кудя

Кудя (статус: Посетитель), 5 апреля 2011, 18:38 [#29]:

Уважаемые эксперты, спасибо что не отвернулись от моих просьб помощи, я нашёл ответ на свою задачку. Учитель поставил 5-. Это воопще крута. Всё работает. Только мне вдруг стало интересно, а можно ли связать несколько программ? У меня появилась интересная идея: основная программа будет включать форму и на ней кнопки с названиями игр. Например нажимаю на 'косынка' и вдруг включается косынка. Только не предлагайте самый простой способ включения, по пути. Так не интересно, не надёжно. Хочу, чтобы всё было в одном exe. Учитель сказал что это довольно трудно, но можно, если я типо сделаю, то могу расчитывать на мгновенный зачёт. Если кто-то знает что так можно и знает как это сделать, хотябы направьте меня на верный путь действий, я и сам люблю делать программы, не очень одобряю готовые исходники.
Think Different. (c)
Егор

Егор (статус: 10-ый класс), 5 апреля 2011, 18:47 [#30]:

хм. впечатляет. :)
в любом случае нужен будет исходный бинарный файл. можно включить его в ресурсы, а потом вытаскивать и записывать на диск
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 5 апреля 2011, 19:08 [#31]:

точно, Егор, это идея! Надо только узнать как включить его в ресурсы.
Think Different. (c)
Егор

Егор (статус: 10-ый класс), 5 апреля 2011, 20:11 [#32]:

вопросы по ресурсам у нас уже были - поищи. если не поймёшь чего - спрашивай
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
min@y™

min@y™ (статус: Доктор наук), 5 апреля 2011, 20:34 [#33]:

Цитата (Кудя):

я нашёл ответ на свою задачку.

Я не очень карашо гаварить парусске, но фсёже хачю очиньна пасматреть на этат атвет. Пажалусто...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Толяныч

Толяныч (статус: 4-ый класс), 6 апреля 2011, 19:33 [#34]:

Голсую за присуждение автору ЛУЧШЕГО ВОПРОСА МЕСЯЦА - не каждый замутит мини-форум на 4 страницы на абсолютно не нужную ( я так думаю ) тему.
min@y™

min@y™ (статус: Доктор наук), 6 апреля 2011, 20:08 [#35]:

Цитата (Толяныч):

Голсую за присуждение автору ЛУЧШЕГО ВОПРОСА МЕСЯЦА - не каждый замутит мини-форум на 4 страницы на абсолютно не нужную ( я так думаю ) тему.

Я проголосовал.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Кудя

Кудя (статус: Посетитель), 7 апреля 2011, 14:27 [#36]:

Спасибо за присуждение ЛУЧШЕМУ ВОПРОСУ МЕСЯЦА.
Егор: Прошу дать ссылку по ресурсам этого сайта. Заранее спасибоmin@y™: Ты правда по русски плоха гаваришь? Или прикалываешься?=) Вот код моей программы.
program exercise4;
uses
windows,
SysUtils;
const
Size1program = 60416;
var
File1, File2: file;
ReadToBuffer: Integer;
Buffer: array[1..999999999] of byte;
begin
//-------------------------------------------------------------------------------------
      filemode:= fmOpenRead;
      assignfile(file1, 'c:\1.exe');
      reset(file1, 1);
//-------------------------------------------------------------------------------------
      filemode:=fmOpenReadWrite;
      assignfile(file2, 'C:\pomoshnik.exe');
      rewrite(file2, 1);
//-------------------------------------------------------------------------------------
      BlockRead(file1,Buffer, Size1program, ReadToBuffer);
      BlockWrite(file2,Buffer, Size1program, ReadToBuffer);
      BlockRead(file2,Buffer, Size1program, ReadToBuffer);
      closefile(file1);
      assignfile(file1, 'c:\1.exe');
      rewrite(file1, 1);
      BlockWrite(file1,Buffer, Size1program, ReadToBuffer);
      closefile(file1);
      closefile(file2);
      deletefile('C:\pomoshnik.exe');
//-------------------------------------------------------------------------------------
end.
Think Different. (c)
Кудя

Кудя (статус: Посетитель), 7 апреля 2011, 14:33 [#37]:

Я взял для примера косынку, после издевательством моей программы над ней косынка так же была работоспособна.
Think Different. (c)
Кудя

Кудя (статус: Посетитель), 7 апреля 2011, 14:34 [#38]:

ну как вам? Мне нравится=)
Think Different. (c)
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 7 апреля 2011, 18:32 [#39]:

Цитата (Кудя):

ну как вам? Мне нравится=)

все эти навороты можно было уместить в две строчки кода:
1. переименовать 1.exe в pomoshnik.exe
2. переименовать наоборот.

Цитата (Кудя):

Простите, что задаю вопросы по бесполезной программе

вот уж точно - бесполезная трата времени.
min@y™

min@y™ (статус: Доктор наук), 7 апреля 2011, 18:39 [#40]:

Я долго вспоминал, с чем это всё можно сравнить. И только щас вспомнил! СИЗИФОВ ТРУД!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 апреля 2026, 12:19
Выполнено за 0.03 сек.