Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Ресурс   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
3-1089799666
vic1
2004-07-14 14:07
2004.08.08
Подключение к MSSQL2000


1-1090497810
Mielofon
2004-07-22 16:03
2004.08.08
Куда девать файлы?


1-1090918507
Knight
2004-07-27 12:55
2004.08.08
Какой тип лучше выбрать...


14-1090483857
Apsi
2004-07-22 12:10
2004.08.08
Помните игру весом 96 кб ?


1-1090816188
SLE
2004-07-26 08:29
2004.08.08
Считав 8 байт из файла как преобразовать в Datetime ?