Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
ВнизРесурсы Найти похожие ветки
← →
Esa (2002-04-09 11:54) [0]Привет всем.
Здесь было много различных вопросов и ответов по ресурсам, вроде бы все должно быть понятно. Допустим, я создал RC-файл с ресурсомSTRING
, но что-то не совсем понятно, как подключить его к проекту и использовать в своей программе. Хотелось бы узнать ответ на этот коварный вопрос подробнее.
Спасибо всем, кто ответит.
← →
Fellomena (2002-04-09 13:21) [1]
...
implementation
{$R *.DFM}
{$R STRINGS.RES}
...
procedure TForm1.Button1Click(Sender: TObject);
var
MyDll1: TResourceStream;
begin
MyDll1:=TResourceStream.Create(hInstance, "something", RT_RCDATA);
//...
MyDll1.Free;
end;
end;
← →
Esa (2002-04-09 13:29) [2]Извини, что я такие глупые вопросы задаю, только не понятно, как обратиться к конкретной строке. Например, у меня строка под номером 1, а там текст, например, "Привет!". Как мне эту строку, например, загнать в label?
← →
Raptor (2002-04-09 14:50) [3]2 Esa
Для начала надо скомпилировать rc-файл и получить из него res-файл. Это делается так:
Допустим есть rc-файл myres.rc следующего содержания:
STRINGTABLE DISCARDABLE
{
1001 "String 1"
1002 "String 2"
}
Компилируем его:
brcc21 myres.rc
и получаем файл myres.res
Потом в приложении включаем этот файл
{$R myres.res}
И далее делаем так:
....................
Var s:String;
....................
s:=LoadStr(1001);
P.S. Компилятор ресурсов brcc32.exe находится в директории $(DELPHI)\Bin
← →
esa (2002-04-09 17:10) [4]2 Raptor ©
Большое спасибо!!! Что и требовалось. Теперь попробуем.
А еще такой вопрос: реально ли компилировать прогу без тех ресурсов, которые туда пихает сам Delphi? А то очень много лишнего.
← →
Raptor (2002-04-09 22:15) [5]В принципе реально, но надо ли. Там вообще-то особо лишнего ничего нет, только то что нужно.
В крайнем случае, если очень уж хочется, можно после компиляции в готовом ехе-шнике поудалять ненужные, с твоей точки зрения, ресурсы с помощью какого либо ресурс-эдитора (например Restorator).
← →
esa (2002-04-10 09:21) [6]Спасибо, в общем-то, я так и делаю.
← →
Poirot (2002-04-10 11:40) [7]Извините конечно, но не проще-ли без такого вида ввода строк, а просто
...
resourcestring
str1="sdsdsd";
sss="eqwrwere";
....
И тогда юзаем
label1.caption:=str1;
эти строки в ресурсах окажутся...
в интерфейсе модуля
← →
esa (2002-04-10 14:47) [8]Спасибо. Но не слишком ли много переменных прийдется вводить, ведь у меня порядка 2000 строк.
← →
Poirot (2002-04-11 07:43) [9]Ну и что, а самому создавать список строк, сохранять их, заботится о их номерах, каждый раз считывать... По названию вы определите что за строка... а по номеру... сомневаюсь....
докучи дописываем, редактируем без проблем....
вам какая разница куда вводить в рц или в пас... а их как {$I } можите поместить...
Мне больше этот способ нравится...
← →
Anatoly Podgoretsky (2002-04-11 08:43) [10]Сразу по нескольким вопросам
Raptor © (09.04.02 14:50)
Для Д5/6 не обязательно компилировать, достаточно подключить .rc файл к проекту напрямую.
esa (09.04.02 17:10)
Нельзя, но лишнии это только на твой взгляд, и не лень вычищать каждый раз?
esa (10.04.02 14:47)
Переменных нет совсем, пусть тебя не смущает синтаксис, а ровно столько сколько и в ресурсном файле, но преимущества неоценимы
Poirot © (11.04.02 07:43)
И не надо беспокоиться об конфликтах номеров
Лучше в отдельный модуль.
← →
Poirot (2002-04-11 09:49) [11]
> Anatoly Podgoretsky ©
Абсолютли согласен, но а как с номарами...
Если там просто влоб 1023, то у меня глюки...
а вот если делаем с низу 1024, 1023 и т.д. всё OK...
или просто... вы просто что-то другое имеете ввиду..
← →
esa (2002-04-11 13:28) [12]Тогда если вы говорите, что лучше делать так
...
resourcestring
str1="sdsdsd";
sss="eqwrwere";
....
то как тогда мне лучше сделать, чтобы к строкам обращаться в цикле, т.е. пронумеровать их? Строковый массив что ли для этого вводить?
← →
Anatoly Podgoretsky (2002-04-11 13:36) [13]Poirot © (11.04.02 09:49)
Я имел ввиду, что для resourcestring нет нужды заботиться об номерах и их уникальности в рамках приложения.
esa (11.04.02 13:28)
Какой смысл обращаться в цикле?
← →
esa (2002-04-11 14:10) [14]Это множество строк необходимо для их перебора. У нас на входе есть строка, на выходе необходимо выдать ответ, есть ли эта строка в том множестве или нет.
← →
Толик (2002-04-11 14:47) [15]resourcestring
MyRes = "некий ресурс";
var
id: longint;
begin
id := PResStringRec(@MyRes)^.Identifier;
end;
вот это id и можно использовать в цикле
@MyRes - типа PResStringRec
← →
Толик (2002-04-11 14:53) [16]to esa
А вообще посмотри исходники System.pas
Там же можно посмотреть ф-ю LoadResString - её в хелпах нет, поэтому см. исходники. Может она чем-то поможет.
← →
Керик (2002-04-11 17:50) [17]Esa, вот то, что тебе надо:
...
var
S: array[0..15000] of Char;
Str: string;
begin
LoadString(hInstance, @S, SizeOf(S));
Str := S;
...
end;
← →
Керик (2002-04-11 17:57) [18]Сорри, ошибочка...
Вместо
LoadString(hInstance, @S, SizeOf(S));
Надо
LoadString(hInstance, {Номер строки}, @S, SizeOf(S));
← →
esa (2002-04-12 10:15) [19]Вот именно об этом я и говорил: решение вопроса путем введения массива строк. Не слишком ли много строк будет? И как это будет выглядеть:
Procedure MyProc;
var
S: array[0..15000] of Char;
Str: string;
i: integer;
resourcestring
S[0] = "abc";
S[1] = "dbe";
...
S[15000] = "xyz";
begin
LoadString(hInstance, @S, SizeOf(S));
for i := 0 to 15000 do
Str := S;
end;
Я правильно все понял? И потом, точноS: array[0..15000] of
должно бытьChar
?
← →
Poirot (2002-04-12 15:33) [20]Неа... не Char а какой-то из стрингов....
s[0]:="abc"; //очень интересно... это даже если опустить что это символ:=строка... но даже дляна типов не совпадает 1 и у вас 4...
А вот если массив динамическим делать... а....
← →
Poirot (2002-04-12 15:35) [21]
> Anatoly Podgoretsky © (11.04.02 13:36)
> Poirot © (11.04.02 09:49)
> Я имел ввиду, что для resourcestring нет нужды заботиться
> об номерах и их уникальности в рамках приложения.
Мы об одном и том же говорили и непоняли друг друга...
я об номарах в ресурсах... если их в лоб задавать в рц...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c