|
Вопрос # 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)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|