Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Вниз

Создание ресурсной длл   Найти похожие ветки 

 
pusrg   (2002-06-18 15:52) [0]

Уважаемые знатоки, обьясните в чем проблема, создаю ресурсную длл следующим образом:


library ResDLL;

{$R *.Res}

resourcestring
Body0000 ="...";//Список строковых ресурсов.
...
Body0064 ="...";

begin
end.


Компилирую ее, затем просмотрщиком ресурсов хочу посмотреть ресурсы (пробовал делфовый просмотрщик из каталога \Demos\Resxplor и Far), а ресурсов то и нет. Поэтому естественно я не могу их вызвать с помощью функции LoadString в своем приложении.

Обьясните в чем проблема, где я не прав, и чего не того нахомутал?!
Заранее спасибо.


 
Skier   (2002-06-18 15:58) [1]

> pusrg
IMHO, Чтобы ресурсы были видны их нужно использовать
в программе иначе они выбрасываются после компиляции.
Попробуй заюзать какую-нибудь строку в своей библиотеке,
ну что-то типа ShowMessage(Body0000), откомпилируй и ресурс
Body0000 должен появиться.


 
Игорь Шевченко   (2002-06-18 16:38) [2]

Используйте resource DLL wizard и будет вам счастье.


 
pusrg   (2002-06-18 18:27) [3]

To Skier
Спасибо за Ваш ответ. Да, действительно, есть начать использовать какой-либо из ресурсов в функции длл, а потом обьявить ее в разделе exports, этот ресурс появиться.

Но каким тогда способом мне решить следующую задачу: таких строковых ресурсов в длл может быть до 1000 штук. Необходимо по пришедшему идентификатору извлекать нужный строковый ресурс.

Пытался сделать следующее: добавил в длл функцию:

function ShowRes(Index:PChar):PChar;
begin
Result:=PChar(LoadStr(FindResource(HInstance,
Index, RT_STRING)));
end;

exports ShowRes;


Пробовал различные модификации этой функции с использованием LoadString, причем ей в качестве буфера для ресурса давал как PChar так и array of [] Char. В любом случае возвращается пустая строка.

В чем проблема? Как вытащить ресурс из длл по идентификатору?

To Игорь Шевченко
Спасибо за Ваш ответ.
Дело в том, что передо мной стоит несколько другая задача, чем локализация приложения. Но Вашим советом возможно стоит воспользоваться используя не resourcestring, а создавая отдельно res-файл с строками, как это делает resource DLL wizard.


 
Skier   (2002-06-19 11:24) [4]

> pusrg
А Вам обязательно использовать resourcestring,
может быть стоит использовать простой массив ?
Ну что-то типа :

type

TResRecord = packed record
rrID : Word;
rrStrRes : String;
end; //TResRecord

TResArray = array[1.."Нужное Вам кол-во"] of TResRecord

const

IDL_First = 0;
.................

ResArray : TResArray = ((rrID : IDL_First; rrStrRes : "First";,
...................
);

И потом, используя ResArray, получать нужную стоку по её ID.



 
Игорь Шевченко   (2002-06-19 11:44) [5]

Resource DLL wizard можно использовать не обязательно для локализации. Локализация - это побочный эффект :-)

С уважением,



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-910
VAleksey
2002-06-07 15:51
2002.07.01
TQuery + ТUpdateSQL


8-1111
Зинец Виктор
2002-02-19 12:22
2002.07.01
Как сделать доску для рисования, разделяемую 2-я пользователями в сети?


14-1167
McSimm
2002-05-30 14:22
2002.07.01
Схожу с ума?


1-968
MikeFW
2002-06-20 09:17
2002.07.01
Два TreeView. Как переносить данные из одного дерева в другое


3-893
maxim2
2002-06-07 13:30
2002.07.01
Опять про Mdi формы, теперь проблема с открытием





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский