Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];
ВнизПоместить файл данных в файл ресурсов и затем прочитаь его Найти похожие ветки
← →
Начинака (2003-05-08 20:18) [0]Получил несколько хороших советов, надеюсь на очередную подсказку или ссылку. Достаточно понятно, что могу положить эти данные в константу (Const), но хотелось бы сделать элегантней.
Спасибо
← →
Alexandr3 (2003-05-09 20:13) [1]На королевстве дельфи естьпроект AKM там Дмитрий Логинов
показывает несколько возможных способов этого дела и даже с шифрованием ресурса
← →
Bokus (2003-05-10 03:49) [2]Это как читать из ресурса а как заносить непомню -)
==================================================
...Pic:=TResourceStream.Create(HInstance, "NEW_ABITUR", "Icon_Button");
← →
Начинака (2003-05-10 09:20) [3]2 Alexandr3 (09.05.03 20:13)
Сходил на АКМ ( http://www.delphikingdom.ru/mastering/safe/), к сожалению похожего не нашел. Если возможно, уточни линк. Спасибо
← →
Юрий Зотов (2003-05-10 09:42) [4]1. Делаете текстовый файл с расширением RC. В нем одна строка:
RCDATA AnyResourceName YourFileName
2. Натравливаете на него BRCC32.exe (лежит в каталоге Delphi\Bin) и получаете файл RES.
3. Подключаете этот RES к проекту директивой $R.
И все. Извлекаете ресурс по его имени AnyResourceName (например, через TResourceStream).
← →
Начинака (2003-05-10 09:46) [5]2 Юрий Зотов © (10.05.03 09:42)
Спасибо. Попробую
← →
Great_Lesh (2003-05-10 09:49) [6]Вообще необходимо будет использовать две программы - одна для записи в ресурс, а вторая и будет твоей программой, она будет читать из ресурса. Нужен пример - скажи, я его сейчас быстро заеб... забабахаю (с) Гоблин
← →
Начинака (2003-05-10 13:10) [7]2 Great_Lesh
Вышли, если не затруднит.
Можно на мыло: an-vitaly@mail.ru
← →
Начинака (2003-05-10 15:26) [8]2 Юрий Зотов
Не получается прочитать из ресурса. Если найдете немного времени, пожалуста, подбросьте несколь строк кода
← →
Юрий Зотов (2003-05-10 16:23) [9]> Начинака (10.05.03 15:26)
Sorry, я понадеялся на свою память, но немного ошибся и невольно ввел Вас в заблуждение. Имя ресурса и тип ресурса надо поменять местами. То есть, строка в файле RC должна иметь такой формат:
AnyResourceName RCDATA YourFileName
Причем имя ресурса AnyResourceName и тип ресурса RCDATA нужно писать большими буквами (по крайней мере, так было в Win16, а в Win32 не уверен, но лучше тоже большими - это точно сработает). Тип ресурса, вообще говоря, можно указывать собственный, а не обязательно стандартный RCDATA. Но если в ресурсы зашивается не любой файл, а стандартный (например, файл иконки), то надо указывать именно стандартный тип (например, ICON) - иначе не смогут работать функции API, которые грузят ресурсы именно данного стандартного типа (например, LoadIcon).
В качестве компенсации за свою оплошность привожу пример программы, которая запускает вшитую в ее ресурсы другую программу (Project2.exe). Зашивка была выполнена компиляцией с помощью BRCC32 файла Prj2exe.rc, содержавшего такую строку:
PROJECT2 EXEFILE Project2.exe
unit Unit1;
interface
uses
Classes, Controls, Forms, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
FExeName: string;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R Prj2exe.res} // Подключаем свой файл ресурсов
uses
Windows, SysUtils;
procedure TForm1.Button1Click(Sender: TObject);
begin
// 1. Формируем уникальное имя будущего EXE-файла.
SetLength(FExeName, MAX_PATH + 1);
repeat
GetTempFileName(PChar(GetCurrentDir), "Tmp", 0, PChar(FExeName));
DeleteFile(FExeName);
FExeName := Copy(FExeName, 1, Pos("TMP", FExeName) - 1) + "exe";
until not FileExists(FExeName);
// 2. Извлекаем EXE-файл из ресурсов программы и записываем его на диск.
with TResourceStream.Create(HInstance, "PROJECT2", "EXEFILE") do
try
SaveToFile(FExeName)
finally
Free
end;
// 3. Запускаем EXE-файл.
WinExec(PChar(FExeName), SW_SHOWNORMAL)
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if FExeName <> "" then
Application.MessageBox(PChar("Не забудьте удалить все файлы " + ExtractFilePath(FExeName) + "Tmp*.exe"),
"До свидания!", MB_OK or MB_ICONEXCLAMATION)
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c