Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Достать ресурс из dll


SashkoSoft ©   (2005-01-26 12:09:00) 

Господа, подскажите пожалуйста решение.

Файл ресурсов создаю таким образом:
res.rc
1 RCDATA "pic1.jpg"
2 RCDATA "text.txt"
brcc32 res.rc --> res.res
Далее создаю dll которая является контейнером для файла ресурса.

var
tmpResStream : TResourceStream; // Resource Stream
tmpH:THandle;
begin
tmpH:=LoadLibrary(PChar(libname));   // (подгружаю ДЛЛ)
tmpResStream := TResourceStream.CreateFromID(tmpH,1, RT_RCDATA);
...
tmpJPG.LoadFromStream(tmpResStream);  (таким способом я достаю джипеги и все замечательно)

Но вот прочесть строку из текстового файла не получается!
Если Вас не затруднит, подскажите как это сделать.
Заранее Большое Спасибо.


SashkoSoft   (2005-01-26 12:43:00) [1]

в этом случае нужно создавать файл ресурсов не так как я делал:
1 RCDATA "pic1.jpg"
2 RCDATA "text.txt"
а иначе:
1 RCDATA "pic1.jpg"
MyText Text info.txt  ?
и в строке r := FindResource(0, PChar(cName), RT_RCDATA);
вместо cName надо подставить 'MyText'?
а в строке p := PChar(LoadResource(, r)); видимо нужно написать:
p := PChar(LoadResource(tmpH2, r));  ?
предварительно написав  tmpH2:=LoadLibrary(PChar(libname));
где libname - имя длл-ки ?


Fay   (2005-01-26 12:26:00) [2]

Попробуй так
function LoadStringFromRes(cName : string) : string;
var
 r, sz : DWORD;
 p : PChar;
label
 Err;
begin
 r := FindResource(0, PChar(cName), RT_RCDATA);
 if r = 0 then goto Err;
 sz := SizeofResource(0, r);
 if sz = 0 then goto Err;
 p := PChar(LoadResource(, r));
 if p = nil then goto Err;
 SetString(Result, p, sz);
 Exit;
 Err :
 Result := '';
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо