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

Вниз

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

 
drin   (2002-12-11 00:42) [0]

Делаю так:


var.
qResH, qResInfoH : tHandle;
Res: Pointer;
begin
qResInfoH := FindResource(HInstance , RT_RCDATA, "TEXT");
qResH := LoadResource(HInstance, qResInfoH );
res:=LockResource(qResH);
end.


А теперь вопрос: как мне сохранить данные в переменную, например String.


 
MBo   (2002-12-11 01:03) [1]

c помощью SetLength и Move


 
Юрий Зотов   (2002-12-11 01:08) [2]

Сам не пробовал, но может быть...

Загрузить через TResourceStream, затем создать TStringStream, сделать CopyFrom и взять DataString.

Еще вариант - загрузить через TResourceStream, затем создать TStringList, сделать LoadFromStream и взять Text.

А вообще-то, для загрузки строк есть функция LoadString. Вот она точно пройдет.


 
drin   (2002-12-11 01:13) [3]

>MBo
Сенкс


 
drin   (2002-12-11 01:36) [4]

>Юрий Зотов

Эт я сам умею но не использую Classes.

>MBo
А что передавать в качестве Count, може так:


var
qResH, qResInfoH : tHandle;
Res: Pointer;
s: String;
begin
qResInfoH := FindResource(HInstance , RT_RCDATA, "TEXT");
qResH := LoadResource(HInstance, qResInfoH );
res:=LockResource(qResH);
Move(res, S, SizeOf(res));
SetLength(S, SizeofResource(HInstance, qResInfoH ));
end.

???


 
MBo   (2002-12-11 07:49) [5]

SizeOf(Res) будет, конечно, 4 - это же размер указателя.
Если не ошибаюсь, надо SizeofResource использовать


 
Юрий Зотов   (2002-12-11 08:04) [6]

> не использую Classes

Что ж, осталось только научиться обходиться без него. Например:

1. Знать размер Pointer"а. SizeOf(res) - 4 байта.

2. Понять, что динамическая память сначала выделяется, а потом используется. Сначала SetLength, потом Move.


 
drin   (2002-12-11 12:36) [7]

>Юрий Зотов

Если вам не трудно, напишите что нужно вставить на место точек.


var
qResH, qResInfoH : tHandle;
Res: Pointer;
s: String;
begin
qResInfoH := FindResource(HInstance , RT_RCDATA, "TEXT");
qResH := LoadResource(HInstance, qResInfoH );
res:=LockResource(qResH);

........................

end.


Заранее благодарен.


 
MBo   (2002-12-11 13:54) [8]

Честно говоря, просто ужас. Хоть бы посмотрел в хелпе порядок параметров FindResource.


procedure TForm1.Button1Click(Sender: TObject);
var
HR : THandle;
p: Pointer;
RSize:Integer;
s: String;
begin
HR := FindResource(HInstance , "B", "RT_RCDATA");
if HR<>0 then begin
RSize:=SizeOfResource(HInstance,HR);
HR := LoadResource(HInstance, HR );
if HR<>0 then begin
p:=LockResource(HR);
if p<>nil then begin
SetLength(s,RSize);
move(p^,s[1],RSize);
Edit1.Text:=s;
end;
end;
end;
end;



 
neXt   (2002-12-11 14:41) [9]

Вообще-то получить String из ресурса можно простым приведением типов.
var
hRes: HRSRC;
hMem: HGLOBAL;
S: String;
begin
hRes := FindResource(LoadLibrary("D5NTSCRE.bpl"), "MYRES", RT_RCDATA);
hMem := LoadResource(hInstance, hRes);
Result := Copy(PChar(LockResource(hMem)), 1, SizeofResource(hInstance, hRes));
end;

MBo:
RT_RCDATA - это ж вроде константа для "сырых" ресурсов, а как стрку её использовать странно (или я не прав).


 
neXt   (2002-12-11 14:42) [10]

ну не Result, а S конечно, я копировал код, по ошибке не исправил


 
neXt   (2002-12-11 14:44) [11]

LoadLibrary("D5NTSCRE.bpl") уменя = hInstance


 
MBo   (2002-12-11 16:21) [12]

>neXt
> RT_RCDATA - это ж вроде константа для "сырых" ресурсов, а как >стрку её использовать странно (или я не прав).
Ну раз у автора так изначально было...
Конечно, лучше RT_STRING



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

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

Наверх





Память: 0.47 MB
Время: 0.008 c
14-74925
JOHNY C
2002-12-02 08:10
2002.12.23
набор команды(не проходи мимо)


1-74639
Оля
2002-12-12 13:00
2002.12.23
Построить график в - Chart


3-74556
Брат
2002-12-04 11:56
2002.12.23
Вопрос по SQL: как разделить нацело?


14-74900
vopros
2002-12-03 17:15
2002.12.23
Как вы расслабляетесь вечером, после работы?


1-74718
MegaVoltik
2002-12-10 17:54
2002.12.23
горячие клавиши





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