Конференция "FreePascal" » Указатели в fpc [Win32]
 
  • 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?
 
Конференция "FreePascal" » Указатели в fpc [Win32]
Есть новые Нет новых   [119242   +78][b:0][p:0]