![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись в 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]Добавь строку в оверлей ехе-шника и последним двордом всунь ее длинну.