Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизРесурс Найти похожие ветки
← →
ASoft (2004-07-22 17:24) [0]Уважаемые Мастера!
Подскажите пожалуйста, где можно больше
найти информации по вопросам создания и загрузки
ресурсных файлов. Встречал разрозненную информацию
про загрузку в res строку, JPG и что-то еще...
А как, например, скомпилить wav, avi, txt, таблицу и многое
другое, а потом загрузить это в прогу?
Заранее, спасибо.
← →
Rem (2004-07-22 17:41) [1]brcc32.exe + {$r <filename>}
← →
ASoft (2004-07-23 02:47) [2]>>brcc32.exe + {$r <filename>}
Пожалуй, я не понятно сформулировал вопрос.
Как правильно сформировать (записать) этот
самый filename в текстовом формате перед компилляцией его
в brcc32.exe. И как правильно вызвать ресурс в
программе?
← →
Mental_Ray © (2004-07-23 08:43) [3]Все элементарно, слушай сюда:
Первый шаг. В блокноте ворганишь файл с таким текстом:
1 RCDATA "MyPic.jpg"
1 - это название твоего ресурса, оно может быть любым, кроме 0.
RCDATA - это тип файла, который ты добавляешь в ресурс, вообщето вместо RCDATA должна стоять цифра, т.е для каждого типа файлов своя цифра (например для html идет цифра 23), а RCDATA это универсальный идентификатор
"MyPic.jpg" - это путь к файлу, он должен записываться именно в кавычках.
В файл можно писать много строчек например:
1 RCDATA "MyPic1.jpg"
2 RCDATA "MyPic2.jpg"
3 RCDATA "MyPic3.jpg"
Второй шаг. Меняешь расширение этого файла на RC (1.rc примеру)
Идешь в командную строку и пишешь BRCC32 1.rc (естественно путь к файлу 1.rc нужно указать) и после этого в той же директории где был 1.rc появится файлик 1.res
Третий шаг.
Кидаешь этот файл res в папку со своим проектом.
В своем проэкте дописываешь после
{$R *.DFM}
{$R 1.RES}
А вот процедура для вытаскивания,например, Jpg из файла EXE:
uses JPEG;
procedure LoadJPEGfromEXE;
var
MyJPG: TJPEGImage; // Объект - JPEG
Stream: TResourceStream; // Объект - поток ресурсов
begin
try
MyJPG := TJPEGImage.Create;
Stream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
MyJPG.LoadFromStream(Stream);
Canvas.Draw(12, 12, MyJPG);
finally
MyJPG.Free;
Stream.Free;
end;
end;
Я думаю доходчиво объяснил? :))
← →
ASoft (2004-07-23 09:18) [4]Спасибо, Mental_Ray!
Довольно доходчиво. Но если ты читал первую часть вопроса, то понял, что с JPG, как раз я и встречался.
Что касается других типов файлов: wav, avi, таблица, текст.
Допустим, я научился компилить их в ресурс. Но все ли они одинаково загружаются из ресурса во время выполнения?
← →
Mental_Ray © (2004-07-23 22:34) [5]Не знаю насчет всех но Wav грузится так:
{$R MyWave.res}
procedure RetrieveMyWave;
var
hResource: THandle;
pData: Pointer;
begin
hResource := LoadResource(hInstance, FindResource(hInstance, "MyWave",
RT_RCDATA));
try
pData := LockResource(hResource);
if pData = nil then
raise Exception.Create("Cannot read MyWave");
// pData указывает на MyWave
PlaySound(pData, 0, SND_MEMORY + SND_ASYNC + SND_NOSTOP);
finally
FreeResource(hResource);
end;
end;
Например текст: компилируешь txt а потом грузишь его как JPG:
memo.LoadFromStream(Stream);
По идее через Pointer можно грузить любые файлы, гавное как их потом использовать? :)
← →
ASoft (2004-07-24 12:08) [6]Mental_Ray спасибо.
Все попробую...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c