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

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

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

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

Сообщение The Chase » 04.10.2007 16:11:00

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

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

зараннее извиняюсь ежели это вопрос одной галочки или одного ключа... но ни в .PDF хелпа (http://www.freepascal.org/docs.var) ни на форуме я ответа не нашел...
The Chase
новенький
 
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22

Сообщение alexs » 04.10.2007 17:03:45

версия компилятора?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение The Chase » 04.10.2007 17:28:10

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


fpc-2.0.4
под Lazarus-0.9.22
The Chase
новенький
 
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22

Сообщение alexs » 04.10.2007 19:22:51

попробуй в 2.2.0
2.0.4 кажется не умел рабоать с несколькими ресурсами
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение nagash » 05.10.2007 10:21:22

Да, так и есть. Сам с этим сталкивался, при использовании $R добавляется только один ресурс. В 2.2.0 точно все нормально, так что смело обновляйся :)
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Сообщение The Chase » 05.10.2007 16:48:44

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


Действительно это что-то в 2,0,4... Спасибо, помогло
The Chase
новенький
 
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22

Сообщение YuriPro » 15.04.2008 18:13:09

Но это еще не все. :)
В systemh.inc тип Integer определен как SmallInt! Процедуры работы с ресурсами описаны в файлах resh.inc (и elfres32.inc), которые подключаются в systemh.inc. А переопределение Integer = Longint происходит ниже, в system.inc. Получается, что функция SizeOfResource будет возвращать значения типа SmallInt. Т.е. при относительно больших ресурсах возвращаемое значение будет некорректным.
YuriPro
новенький
 
Сообщения: 11
Зарегистрирован: 30.01.2007 18:19:08

Сообщение Sergei I. Gorelkin » 15.04.2008 18:56:15

Теперь (в современном 2.3.1) она уже все-таки LongWord возвращает, как и положено...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение YuriPro » 15.04.2008 19:25:25

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

Очень любезно с ее стороны. Будем ждать стабильную версию.
YuriPro
новенький
 
Сообщения: 11
Зарегистрирован: 30.01.2007 18:19:08

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

Сообщение VAshot » 28.04.2009 14:50:50

Поясните пожалуйста, есть два ресурса 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
Аватара пользователя
VAshot
постоялец
 
Сообщения: 128
Зарегистрирован: 01.11.2007 12:31:21
Откуда: Пермь


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru