
Сообщение от
Игорь Петров
Если подпрограмма получает указатель и не знает что это, то сообщить ей тип логично. Она может по CASE для возможных типов взять переменную правильно, если ей это надо.
Да, я именно так и понял то, что советовал уважаемый Валенок. В функциях чтения и записи значения параметра (там, где доступ к нему идет по индексу) будет CASE на варианты
Код:
BYTE
WORD
DWORD
STRING
TIME
DATE
При этом в структуре PARSCRIPT, описывающей интимности каждого параметра, добавляется элемент
В нем и будет указываться тип переменной для данного параметра. И достаточно функции доступа указать индекс параметра, чтобы она извлекла из глобального массива структур ту, что описывает наш параметр и по элементу .Type сориентироваться, как доступаться к параметру.
Я вот думаю: если пойнтер указывает, сколько извлекать байт (и сколько записывать), то не будет ли достаточно иметь разные указатели только на те типы данных, которые различаются количеством байт?
Тогда у нас будет:
Код:
BYTE
WORD
DWORD
STRING
- и все. А всякие там INT, UINT, DINT, TIME, DATE - отдыхают. И обращение к переменной типа TIME будут происходить так же, как к переменной DWORD. Выдернутся 4 байта, а потом программа сделает с ними чего надо - и они обратно запихнутся так же. Даже порядок сохранения байтов не имеет значения, ИМХО.
Можно так?
Спасибо за подсказки! Постараюсь это проверить и сообщить результат.