Мобильная версия форумов
Открыть
 −13°C
завтра: −15°C
Погода в Перми
−13°C
вечером−14°C
ночью−16°C
завтра−15°C
Подробно
 66,25
−0.4574
Курс USD ЦБ РФна 19 февраля
66,2470
−0.4574
 74,91
−0.3437
Курс EUR ЦБ РФна 19 февраля
74,9055
−0.3437
  • guru

    Сообщений: 3810

    Появилась необходимость, сконвертировать файлы *.h в Паскаль. и назрели несколько вопросов, что есть что и где.
    #define MAX_PORT_NAME 40
    #define MAX_PORTS 16
    Это в Си, а как это описать с Паскале????
    Можно ли это описать как
    Const
    MAX_PORT_NAME=40; ??????

    typedef struct _ACB { /* acb - Assoc. Control Block */
    ULONG ulACBLen; /* length of structure */
    ULONG ulObjType;
    ULONG ulParm1;
    ULONG ulParm2;
    } ACB;
    typedef ACB FAR *PACB; /* Ptr to an ACB */
    Это есть TYPE или нет ???

    Тоже самое что есть это в Паскале..
    ---
    Возможно это покажется кому-то ламерством, мне все равно, последний раз писал на Це лет этак 10 назад, и соответственно не помню нифига....

    Работник цифродробительного цеха.

  • Анонимный пользователь
    Вроде, должно быть так.

    Const MAX_PORT_NAME=40;
    MAX_PORTS = 16;

    type _ACB=record
    ulACBLen: Longint;
    ulObjType: Longint;
    ulParam1: LongInt;
    ulParam2: LongInt;
    end;
    { если в Delphi, то вместо longint - cardinal}
    { вообще говоря longint в Borlan Pascal - signed 32-bit, точно не скажу, но, возможно, могут быть проблемы}

    Type PACB=^_ACB; { pointer to an ACB}

  • guru

    Сообщений: 3810

    Спасиб..В том-то и дело что не дельфи и не паскаль, а FreePascal под OS/2 )

    Работник цифродробительного цеха.

  • Максимыч

    Анонимный пользователь

    Все верно объяснил Маленький Федя.

    По своему опыту, основные проблемы бывают с разнообразием целых типов. Надо вначале внимательно разобраться, где там 16-разрядные, где 32, и знак - не знак.
    Главная проблема там - с массивами. С допускает динамические
    массивы а эталонный паскаль- нет. Это все обходится, но приходится повозиться.
    В Delphi сейчас есть поддержка динамических массивов прямо в языке. Возможно, в Вашем Free Pascal есть какие-то библиотечные средства.

  • Анонимный пользователь
    Одно замечание:
    #define MAX_PORT_NAME 40
    хммм, а это разве не замена MAX_PORT_NAME на число 40. Тогда const тут не пройдет, надо предварительно сканировать исходник и в "лоб" производить замену,
    потому как замена может быть например , и такой
    #define INPUT SCANF и в Си она должна работать (команда input будет вместо стандартной scanf)

Записей на странице:

Перейти в форум

Модератор: