Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-55123
kserg@ukr.net
2002-06-05 18:06
2002.06.17
подходы в реализации многоязычного интерфейса ?


3-55036
Onio
2002-05-23 18:44
2002.06.17
Ошибка при импорте данных в Oracle


14-55260
Подонок
2002-05-13 14:28
2002.06.17
Можно ли узнать смотрят ли твой компьютер сейчас черз RemoteAdmin


1-55096
Dim!S
2002-06-06 09:51
2002.06.17
Перерисовка DBGrid


8-55226
Ruslan_
2002-02-05 13:58
2002.06.17
BMP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский