-
z007 (09.05.04 22:15) [0]Проблема:
Не всегда получается передать Pointer как Ordinal (LingInt, Integer, Cardinal): "Conversion between ordinals and pointers are not portable".
Из-за этого, например, не получается установить текст SubItem'а в ListView (kol.pas) и в некоторых других случаях не удается нормально послать message, где один из параметров - структура:
тот жеLVM_SETITEMTEXT
.
Как быть: может, достаточно просто что-нибудь сделать с параметрами компилятора? -
PVOzerski © (11.05.04 12:15) [1]С integer'ом действительно может быть проблема: если не прилинкован модуль ObjPas (а он линкуется автоматически в режимах Delphi и ObjFpc), этот тип эквивалентен SmallInt, т.е. 2-байтовый. Про остальное - нужны подробности. Conversion between ordinals and pointers are not portable - это Error или Warning? В каких ситуациях возникает? Примерчик бы (маленькую демку)... И версию компилятора.
-
z007 (12.05.04 22:21) [2]2 PVOzerskiСпасибо за помощь.
В целом вопрос снимается: оказалось, дело не в pointer'ах - выяснилось это как раз при написании "примерчика".
У меняLitView
-ListEdit
с этого сайта - заполнялся данными из ini-файла. В случаях, если секция была пустой (ini.SectionData
),StrList.Count
давало 1. Я, ясное дело, пытался оттуда прочитать Values и поместить их вListEdit
. Не получилось. Посмотрев на Conversion between ordinals... (это всего лишь хинт), свалил все на pointer'ы.
Что характерно: Delphi правильно идентифицирует размер StrList после вызова ini.SectionData при пустой секции: Count=0, fpc - нет.
Я, кажется, понимаю, почему ошибается fpc(буфер дляGetPrivateProfileSection
увеличивается на 1-2 даже при size=0), но почему не ошибается delphi?