Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в EXE фаил [D6, Win95/98]


Mixir ©   (2002-11-23 14:18:00) 

Как написать программу которая будет записывать
в другой EXEфаил строку и как этому EXEее прочитать???
(Нужен пример).Зарание спасибо 8)


KSergey   (2002-11-28 08:16:00) [1]

Наконец то нашел ссылки в архивах.
Не оспаривая предложенные методы, предлагаю ознакомиться с обсуждением аналогичной темы в архивах
http://delphi.mastak.ru/forum/digest/?M=D
качаем файл forum-11.11.02.zip, в нем смотрим файл main74.html.

PS: если кому надо - могу выслать свои примерчики чтения/записи ресурсов (запись - только на WinNT платформе)


SemFLY   (2002-11-25 21:05:00) [2]

Novichek, Можно и *.txt файл создать ...
А строку такую в него напиши

MyMovie Flash C:\MyMovie.swf

- - -
Хотя это не принципиально ;)


Карлсон   (2002-11-25 18:33:00) [3]

открываешь "Блокнот", там пишешь нужную тебе строку, потом сохраняешь его с расширением *.rc


Novichek   (2002-11-24 16:03:00) [4]

ION T © (24.11.02 15:47)
извини за идиотский вопрос, но как это:"создаешь flash.rc файл"?


ION T   (2002-11-24 15:47:00) [5]

Короче создаешь flash.rc файл со строкой типа:
MyMovie Flash MyMovie.swf

Отправляешь файл на brcc32.exe кот находится в папке DelphiХ\bin\, получишь файл flash.res, а в коде своей проги напишешь {$R flash.res}. Вытягивать следующей процедурой:

procedure ExtractRes(const ResType, ResName, ResNewName: string);
var Res:TResourceStream;
begin
Res:=TResourceStream.Create(Hinstance,Resname,Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;


Вызываешь так:
ExtractRes("Flash", "MyMovie", "C:\MyMovie.swf");


Novichek   (2002-11-24 15:25:00) [6]

ION T © (24.11.02 15:19)
а в каком разделе смотреть?


ION T   (2002-11-24 15:19:00) [7]

> Novichek © (24.11.02 14:51)
А, это ты про флеш спрашивал?

Если это надо при компиляции, то его в ресурс запихнет сам компилятор (линкер)....на delphibase.endimus.com есть как это делать...но можно и приведенным выше способом...


ION T   (2002-11-24 15:11:00) [8]

Точно так же...создаешь два потока, перемещаешся в конец файла и используешь метод CopyFrom()....

> Morfein © (23.11.02 23:02)
Если ты имел в виду что можно запихнуть строку в ресурс со всеми вытекающеми отсюда фиксапами, то можно - напиши код. А можно, если длинна небольшая, то и вместо строки досового стуба записать, можно названия секций переименовать так чтобы они в сумме давали требуемую строку, можно алайнинговые дыры между секциями заполнить, может еще чего можно, но вот файл туда пихать вряд-ли стоит (ну разве что виральный код можно;)


Novichek   (2002-11-24 14:51:00) [9]

а как приклеить к экзешнику файл а потом его оттуда вытащить?


Mixir   (2002-11-24 10:29:00) [10]

Спасибо за инфу :))


Morfein   (2002-11-23 23:02:00) [11]

Ну да... метод ещё тот :)))


ION T   (2002-11-23 22:29:00) [12]

Пишешь так:

const
FileName = "anyfile.exe";
var
f: TFileStream;
s: string;
size: integer;
begin
f:= TFileStream.Create(FileName, fmOpenReadWrite);
try
f.Seek(0, soFromEnd);
s:= "cool";
size:= length(s);
f.WriteBuffer(s[1], size);
f.WriteBuffer(size, sizeof(integer));
finally f.Free end;
end;


А читаешь так:

var
f: TFileStream;
s: string;
size: integer;
begin
f:= TFileStream.Create(Application.ExeName, fmOpenRead or fmShareDenyNone);
try
f.Seek(-sizeof(integer), soFromEnd);
f.ReadBuffer(size, sizeof(integer));
f.Seek(-size - sizeof(integer), soFromEnd);
setlength(s, size);
f.ReadBuffer(s[1], size);
edit1.Text:= string(s);
finally f.Free end;
end;


Надеюсь понятно...


Mixir   (2002-11-23 20:29:00) [13]

э-э-э-э А по конкретней??? (Напишите пример ПЛИЗЗЗЗЗЗЗ)


ION T   (2002-11-23 14:49:00) [14]

Добавь строку в оверлей ехе-шника и последним двордом всунь ее длинну.


Наверх

Титульная страница Поиск, карта сайта Написать письмо