Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизКонтейнер с файлами Найти похожие ветки
← →
Димыч (2005-09-28 04:23) [0]Уважаемые мастера такой вопрос: как в программу еще до компиляции поместить содержимое какого-нибудь файла, чтоб после компиляции программы я смог это содержимое записать снова в файл. Файл может быть любого типа. Запись в файл должна происходить без искажения содержимого. Наприер если бы я смог вставить содержимое какого-нибудь Exe файла в программу, а потом скомпилировать прогу, и сохранить полученное содержимое снова в ЕхЕ, то экзэшник запустился. Мне надо типа что-то, например, свойства Image - Picture, когда картинку в Image вставляешь из файла, то картинка в файле dfm представляется ввиде символов. Помогите пожалуйста, как все таки мне можно сделать своеобразный котейнер для файлов.
← →
Adder © (2005-09-28 04:49) [1]http://delphimaster.net/view/2-1127492451/
FBI Agent (23.09.05 20:40) [2]
← →
Джо © (2005-09-28 04:51) [2]Легче всего это сделать при помощи ресурсов (resources).
Включим например в тело своего файла (в секцию ресурсов) содержимое исполнимого файла notepad.exe.
1. В папке с программой создаешь файл exe.rc следующего содержания:MY_EXE EXEFILE "c:\windows\notepad.exe"
(путь к файлу notepad.exe указываешь свой).
После этого добавляешь этот скрипт к своему проекту:
Project/Add to project и указываешт exe.rc.
Перекомпилируешь программу, notepad.exe теперь включен в тело твоего приложения.
2. "Достать" ресурс можно разными способами. Например, вот очень наглядный способ того, как можно извлечь ресурс и сохранить его в отдельном файле.
procedure TForm1.Button1Click(Sender: TObject);
var
AStream: TResourceStream;
AFile: TFileStream;
begin
AStream := TResourceStream.Create(HInstance,"MY_EXE","EXEFILE");
try
AFile := TFileStream.Create("d:\testfile.exe",fmCreate);
try
AFile.CopyFrom(AStream,AStream.Size);
finally
AFile.Free;
end;
finally
AStream.Free;
end;
end;
Код, надеюсь, очевидный и в комментариях не нуждается :)
← →
Джо © (2005-09-28 04:54) [3]
> [2] Джо © (28.09.05 04:51)
Переработал я сегодня :))
Достаточно пункт 2 сделать таким образом:
procedure TForm1.Button1Click(Sender: TObject);
var
AStream: TResourceStream;
begin
AStream := TResourceStream.Create(HInstance,"MY_EXE","EXEFILE");
try
AStream.SaveToFile("d:\testfile.exe");
finally
AStream.Free;
end;
end;
← →
Федор (2005-09-28 08:27) [4]http://delphibase.spb.ru/?action=viewfunc&topic=appres&id=10036
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c