C++ to Pascal??
2641
4
Появилась необходимость, сконвертировать файлы *.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 назад, и соответственно не помню нифига....
CooL/2
Вроде, должно быть так.

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}
Спасиб..В том-то и дело что не дельфи и не паскаль, а FreePascal под OS/2 )
CooL/2
Все верно объяснил Маленький Федя.

По своему опыту, основные проблемы бывают с разнообразием целых типов. Надо вначале внимательно разобраться, где там 16-разрядные, где 32, и знак - не знак.
Главная проблема там - с массивами. С допускает динамические
массивы а эталонный паскаль- нет. Это все обходится, но приходится повозиться.
В Delphi сейчас есть поддержка динамических массивов прямо в языке. Возможно, в Вашем Free Pascal есть какие-то библиотечные средства.
CooL/2
Одно замечание:
#define MAX_PORT_NAME 40
хммм, а это разве не замена MAX_PORT_NAME на число 40. Тогда const тут не пройдет, надо предварительно сканировать исходник и в "лоб" производить замену,
потому как замена может быть например , и такой
#define INPUT SCANF и в Си она должна работать (команда input будет вместо стандартной scanf)