const // WM_in = WM_USER +110;// от плагина васику WM_out = WM_USER +111;// от васика плагину WM_rez1 = WM_USER +112;// резерв WM_rez2 = WM_USER +113;// резерв //L параметр содержит номер фукции, Н параметр содержит перечень передаваемых\получаемых переменных L и Н имеют тип integer то есть 32 разряда, бит установленный в 1 означает что используется переменная, с соответствующим номером (varint1 означает первый [нулевой] бит), при использовании в функции нескольких переменных, порядок их следования должен быть согласно ниже описанной структуры. К примеру фукция c getneznau(var1,var2:integer, var3:double;var4:string[512]): string[4k]; с правильной подачей переменных а getneznau(var4:string[512], var1,var2:integer, var3:double): string; с неправильной. Н параметр при запросе будет 000000100000001100000011 -бинар или 20303 хекс или 8243 десятич. а при ответе 000100000000000000000000-бинар или 100000 хекс или 1048576 десятич. //вызов месаги делаем не по sendmessage а по postmessage, в виду того что sendmessage требует ответа, а postmessage нет, ответчик и приемникмогут застать друг друга в неудобное время. type mapfile=record 1 varint1, 2 varint2, 3 varint3, 4 varint4, 5 varint5, 6 varint6, 7 varint7, 8 varint8:integer;//для передачи целых чисел 9 vardouble1, 10 vardouble2, 11 vardouble3, 12 vardouble4, 13 vardouble5, 14 vardouble6, 15 vardouble7, 16 vardouble8:double;//для передачи дробных чисел 17 varstr1:string[255]//для передачи строк 18 varstr2:string[512] 19 varstr3:string[1024] 20 varstr4:string[2k] 21 varstr5:string[4k] 22 varstr6:string[8k] 23 varstr7:string[64k] 24 varstr8:[1024k] end; Правила обмена. Передатчик записывает данные в файл устанавливает маску переменных (параметр Н), номер функции и отправляет сообщение по postmessage, приемник, получив сообщение, определяет какую функцию надо выполнить и где находятся нужные переменные(по полученной маске), считывает их и очищает полученные поля. Выполняет вычисления, записывает в файл результат, устанавливает маску, номер выполненой функции и вызывает сообщение. Для обеспечения синхронизации оба конца не могут начинать новый обмен до окончания текущего, в течении определенного времени (возможно выделить какую нибудь переменную для метки времени). Неочищенное поле служит признаком задержки.