Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться с файлом ресурсов

6.5K
11 апреля 2006 года
SkyHawk
43 / / 20.10.2005
Народ!
Создал файл ресурсов, 1.res, в котором под записью 2 имеется текстовый файл.
Далее пробую использовать его в приведенном ниже коде при нажатии кнопки BitBtn1, однако функция возвращает NULL. В чем я ошибся, и как можно исправить?

Вот текст исходника:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma resource "1.res"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
void *Resurs;
AnsiString *Text;
Resurs=FindResource(HInstance,"2",RT_RCDATA);
Resurs=LoadResource(HInstance,Resurs);
}
//---------------------------------------------------------------------------
929
11 апреля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by SkyHawk
Народ!
Создал файл ресурсов, 1.res, в котором под записью 2 имеется текстовый файл.
Далее пробую использовать его в приведенном ниже коде при нажатии кнопки BitBtn1, однако функция возвращает NULL. В чем я ошибся, и как можно исправить?

Вот текст исходника:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma resource "1.res"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
void *Resurs;
AnsiString *Text;
Resurs=FindResource(HInstance,"2",RT_RCDATA);
Resurs=LoadResource(HInstance,Resurs);
}
//---------------------------------------------------------------------------


Не пробовал RT_STRING?

1
11 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by SkyHawk
Народ!
Создал файл ресурсов, 1.res, в котором под записью 2 имеется текстовый файл.
Далее пробую использовать его в приведенном ниже коде при нажатии кнопки BitBtn1, однако функция возвращает NULL. В чем я ошибся, и как можно исправить?

Вот текст исходника:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma resource "1.res"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
void *Resurs;
AnsiString *Text;
Resurs=FindResource(HInstance,"2",RT_RCDATA);
Resurs=LoadResource(HInstance,Resurs);
}
//---------------------------------------------------------------------------


Если принять, что файл ресурсов откмпилирован и и включен в проект правильно (в главном файле USERES("1.res")) то можно так:

 
Код:
TResourceStream *RStream = new TResourceStream(0,#2,RT_RCDATA);

или так:
 
Код:
HRSRC Resurs;
  Resurs=FindResource(HInstance,MAKEINTRESOURCE(2),RT_RCDATA);
  HGLOBAL hRes=LoadResource(HInstance,Resurs);
6.5K
11 апреля 2006 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by kot_
Если принять, что файл ресурсов откмпилирован и и включен в проект правильно (в главном файле USERES("1.res")) то можно так:
 
Код:
TResourceStream *RStream = new TResourceStream(0,#2,RT_RCDATA);

или так:
 
Код:
HRSRC Resurs;
  Resurs=FindResource(HInstance,MAKEINTRESOURCE(2),RT_RCDATA);
  HGLOBAL hRes=LoadResource(HInstance,Resurs);



Спасибо, буду пробовать.

6.5K
11 апреля 2006 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by SkyHawk
Спасибо, буду пробовать.



Спасибо, kot_. Действительно помогло. Теперь возник другой вопрос. Делаю разыменование типов для преобразования полученного в указателе значения в переменную типа String. В результате в переменной - полная хрень, а не то, что было раньше. Подскажите, как правильно сделать разыменование типов.

1
11 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by SkyHawk
Спасибо, kot_. Действительно помогло. Теперь возник другой вопрос. Делаю разыменование типов для преобразования полученного в указателе значения в переменную типа String. В результате в переменной - полная хрень, а не то, что было раньше. Подскажите, как правильно сделать разыменование типов.


В переменную типа String достаточно сложно таки загрузить файл - тебе так не кажется? :)
Есть два варианта - загрузить его в TStringList - используя свойство загрузить из потока или сохранить на диск и загрузить оттуда.

6.5K
12 апреля 2006 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by kot_
В переменную типа String достаточно сложно таки загрузить файл - тебе так не кажется? :)
Есть два варианта - загрузить его в TStringList - используя свойство загрузить из потока или сохранить на диск и загрузить оттуда.



Спасибо. Буду копать дальше.

1
12 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by SkyHawk
Спасибо. Буду копать дальше.


Используй TResourceStream, если конечно это не принципиально, а затем делай StringList->LoadFromStream(...), все отработает нормально. Таким же образом можно грузить содержимое файла в мемо или ричэдит.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог