Есть уже готовый сервер телемеханики у нас на подстанции. Написан на Delphi 6. К нему есть библиотека в виде DLL и файл с примером её использования.
Я на КП решил сделать допил сервера -- он не может делать нужные мне вещи.
В DLL есть функции которые отрабатывают нормально:
## Код:
```
function tmInit(ServerName, LocalName: PChar):SmallInt .... stdcall...'_tmInit@8'
function tmClose():SmallInt.... stdcall.... '_tmClose@0'
```


А вот при попытке передать структуру по ссылке вылетает исключение:
## Код:
```
function tmGetAnalog(cannel, remote_technic_unit, point: SmallInt; pStatus:pTs):SmallInt....stdcall....'_tmGetAnalog@12'
```

Судя по кратности байтов в передаче -- все параметры передаются по 4 байта (32 бита).
Тип описанный в исходнике:
## Код:
```
type
  TStatus = record
    Status: SmallInt;
    Field: DWORD;
  end;

  pTs = @TStatus (* возможно тут ошибся, но точно указатель на record *)
```


Как эту  структуру описал я в КП:
## Код:
```
TYPE
  TStatus* = RECORD
    Status*: SHORTINT;
    Field*  : CHAR;
  end;

  pTs = POINTER TO TStatus
```


И, короче, понятно. не катит.
Коллеги, подскажите, что я делаю не так?
Не подскажете -- пеняйте на себя. Буду плюшку рисовать на Delphi)))))

(* жуткий завал на работе, пришлось свой почин по учебнику пока приостановить *)

ADD. Есть ли у кого-то на крайний случай опыт стыковки DLL (Delphi 6) + FreePascal\Lazarus. Нет желания проприетарщину гонять.