prospero78 писал(а):
В оригинале вместо char используется word.
Я не уверен, что передача флагов будет работать верно.
Всё нормально передастся если правильно определить типы.
Цитата:
Код:
tStatusPoint* = RECORD [untagged]
status*: SHORTINT;
flags*: CHAR;
END;
tAnalogPoint* = RECORD [untagged]
asFloat*: SHORTREAL;
asCode*: SHORTINT;
Flags*: CHAR;
Units*: ARRAY 10 OF SHORTCHAR;
END;
В заданном коде один раз пишется "flags", другой раз - "Flags".
Согласно соглашениям для разработчиков КП, поля записей и переменных нужно именовать начиная с строчных букв.
flags имеет размер 16 бит - тогда тип SHORTINT, как упомянул Александр.
Если бы был размер 32 бита, то тогда лучше тип SET. Для флагов самое оно в КП.
prospero78 писал(а):
Массивы там вообще никак не влияют, но за совет спасибо.
У уже написал переходную DLL на Delphi и выяснил, что DLL сама не принимает из оригинальной DLL значение.
Хотя оконное приложение прекрасно получает эти значения.
Код:
VAR Time: ARRAY OF SHORTCHAR
<-- разве это не будет обращение по ссылке?
Да, по ссылке. Но для описания интерфейса к сторонним средствам (коими являются DLL) нужно всегда указывать
[untagged].
Скорее всего где-то намудрено с типами и с тем кто занимается резервированием и освобождением памяти.