| 
| 
 | Вопрос # 3 183/ вопрос открыт / | 
 |  Доброго времени суток, коллеги!С профессиональным праздником всех!
 
 Пытаюсь получить количество элементов из ресурсов программы, но результат получается совершенно иной.
 Причём, при передаче переменной как TStrings (закомментированные строки), работает всё отлично.
 Помогите, пожалуйста.
 Приложение:Переключить в обычный режим function enumResNamesProc(module: HMODULE; ResType, resName: PChar;  Count: Word): Integer; stdcall;//  List: TStrings): Integer; stdcall;begin  Count := 15;  if HiWord(Cardinal(resName)) <> 0 then List.Add('  ' + resName)  else List.Add(IntToStr(LoWord(Cardinal(resName))));  Result := 1;end;   function GetSmileCount: Word;//var ss: TStrings;begin  Result := 0;  {ss := TStringList.Create;  if EnumResourceNames(HInstance, 'GIF', @enumResNamesProc, Integer(ss)) then    Result := ss.Count;  ss.Free;}  EnumResourceNames(HInstance, 'GIF', @enumResNamesProc, Recult)end;
|  |   Вопрос задал: Александр Дубик (статус: 1-ый класс)Вопрос отправлен: 13 сентября 2009, 23:21
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 16 сентября 2009, 01:26; участников в обсуждении: 2. 
|   | Anderson N.N (статус: 2-ой класс), 15 сентября 2009, 10:25 [#1]:Проверь сначала код ... я пометил места и попробуй снова. 
 function enumResNamesProc(module: HMODULE; ResType, resName: PChar;
 Count: Word): Integer; stdcall;
 //  List: TStrings): Integer; stdcall;
 begin
 Count := 15;// зачем явно засовывать сюда значение?
 if HiWord(Cardinal(resName)) <> 0 then List.Add('  ' + resName)
 else List.Add(IntToStr(LoWord(Cardinal(resName))));
 Result := 1;
 end;
 
 
 
 function GetSmileCount: Word;
 //var ss: TStrings;
 begin
 Result := 0;
 {ss := TStringList.Create;
 if EnumResourceNames(HInstance, 'GIF', @enumResNamesProc, Integer(ss)) //интересное приведение типа
 then
 Result := ss.Count;
 ss.Free;}
 EnumResourceNames(HInstance, 'GIF', @enumResNamesProc, Recult)// Recult -вроде такой переменной не было
 end;
 |  
|   | Александр Дубик (статус: 1-ый класс), 16 сентября 2009, 01:26 [#2]:Anderson N.N: спасибо за замечание. Комментарий 1: Явно указал значение для отладки, просто сл. условие забыл закомментировать. Набирал вручную, поэтому получилось Recult, вместо Result.
 Комментарий 2: Явно указал значение для отладки, просто сл. условие забыл закомментировать.
 
 Комментарий 3: А вот приветедие типа Integer(ss) действительно интересно, ведь судя по документации там должна быть переменная, а не ссылка на неё. Но именно этот вариант как раз работает без проблем.
 
 П.С.: Проблема состоит именно в последней переменной, передаваемой в EnumResourceNames, а числовую в виде ссылки передать не удаётся (Всё-равно возвращается значение типа: 1685234)
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |