работа с ресурсами .res

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
The Chase
новенький
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22

работа с ресурсами .res

Сообщение The Chase »

проблемма такая
через $R подключаю несколько файлов ресурсов
и пытаюсь прочитать через FindResource...

однако подхватываются ресурсы только с первого по порядку $R
как подлючить / прочитать остальные?

зараннее извиняюсь ежели это вопрос одной галочки или одного ключа... но ни в .PDF хелпа (http://www.freepascal.org/docs.var) ни на форуме я ответа не нашел...
Аватара пользователя
alexs
долгожитель
Сообщения: 4067
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

версия компилятора?
The Chase
новенький
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22

Сообщение The Chase »

alexs писал(а):версия компилятора?


fpc-2.0.4
под Lazarus-0.9.22
Аватара пользователя
alexs
долгожитель
Сообщения: 4067
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

попробуй в 2.2.0
2.0.4 кажется не умел рабоать с несколькими ресурсами
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

Да, так и есть. Сам с этим сталкивался, при использовании $R добавляется только один ресурс. В 2.2.0 точно все нормально, так что смело обновляйся :)
The Chase
новенький
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22

Сообщение The Chase »

nagash писал(а):Да, так и есть. Сам с этим сталкивался, при использовании $R добавляется только один ресурс. В 2.2.0 точно все нормально, так что смело обновляйся :)


Действительно это что-то в 2,0,4... Спасибо, помогло
YuriPro
новенький
Сообщения: 11
Зарегистрирован: 30.01.2007 17:19:08

Сообщение YuriPro »

Но это еще не все. :)
В systemh.inc тип Integer определен как SmallInt! Процедуры работы с ресурсами описаны в файлах resh.inc (и elfres32.inc), которые подключаются в systemh.inc. А переопределение Integer = Longint происходит ниже, в system.inc. Получается, что функция SizeOfResource будет возвращать значения типа SmallInt. Т.е. при относительно больших ресурсах возвращаемое значение будет некорректным.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Теперь (в современном 2.3.1) она уже все-таки LongWord возвращает, как и положено...
YuriPro
новенький
Сообщения: 11
Зарегистрирован: 30.01.2007 17:19:08

Сообщение YuriPro »

Sergei I. Gorelkin писал(а):Теперь (в современном 2.3.1) она уже все-таки LongWord возвращает, как и положено...

Очень любезно с ее стороны. Будем ждать стабильную версию.
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Сообщение VAshot »

Поясните пожалуйста, есть два ресурса value.rc и value2.rc

Код: Выделить всё

STRINGTABLE {
4, "hello World !"
5, "hello world again !"
6, "last hello world !"
}

STRINGTABLE {
1, "--------------"
2, "=============="
3, "++++++++++++++"
}


Выполняю процедуру:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
  Function LoadResourceString (Index : longint): Shortstring;
  begin
    SetLength(Result,LoadString(FindResource(0,NIL,RT_STRING),Index,@Result[1],SizeOf(Result)));
  end;

Var
  I: longint;
begin
  For i:=1 to 6 do
  try
    ShowMessage(Loadresourcestring(i));
  except
  end;
end;


Получаю строки первого ресурса, как получить и второго?

0.9.27, 2.2.5, WinXP
Ответить