{--------------------------------------------------------------------------- The control program for mass-spectrometer MI1201-AGM (c) Copyright Aleksandrov O.E., 2001 Molecular Physics department, USTU, Ekaterinsburg, K-2, 620002, RUSSIA phone 75-47-15 E-mail: aleks@dpt.ustu.ru Программа управления масс-спектрометром МИ1201-АГМ (c) Собственность Александрова О.Е., 2001 620002, Екатеринбург, К-2, УГТУ, Кафедра молекулярной физики тел. 75-47-15 E-mail: aleks@dpt.ustu.ru ----------------------------------------------------------------------------} unit McadUserTypes; interface Uses Windows; const cMcadUSer='MCADUSER.dll'; { Заголовок функции пользователя должен иметь следующий вид function UserFunction( var ReturnValue:COMPLEXSCALAR | COMPLEXARRAY; const InputValue1:COMPLEXSCALAR | COMPLEXARRAY; const InputValue2:COMPLEXSCALAR | COMPLEXARRAY; ... const InputValueN:COMPLEXSCALAR | COMPLEXARRAY; ):LRESULT; cdecl; где ReturnValue - возвращаемое значение; InputValue1,InputValue2, ... - аргументы в порядке следования внутри MathCAD, число аргументов не менее 1 (одного) и не более 10 (десяти). Функция возвращает: 0 - если все успешно вычислено. не 0 - при ошибке, если зарегистрирована таблица сообщений об ошибках, то MathCAD показывает соответствующее сообщение. 1) Имя функции несущественно, т.е. может быть любым и внутри MathCAD недоступно. 2) Функция пользователя должна располагаться в DLL. 3) Функция пользователя должна быть зарегистирована при инициализации DLL, путем вызова CreateUserFunction. } // Константы для задания типов аргументов функций и результата const COMPLEX_SCALAR=1; // скаляр COMPLEX_ARRAY=2; // массив MAX_ARGS=10; // максимальное число аргументов type // Скалярная величина COMPLEXSCALAR=record real:double; imag:double; end; tMatrixIndex=0..(High(integer) div 10); tColumn=array[tMatrixIndex] of double; // столбец матрицы в MathCAD tPtrToColumn=^tColumn; tMatrix=array[tMatrixIndex] of tPtrToColumn; // данные матрицы в MathCAD tPtrToMatrix=^tMatrix; // Массив в MathCAD COMPLEXARRAY=record rows:uint; // число строк cols:uint; // число столбцов hReal:tPtrToMatrix; // действительная часть = NIL, если отсутствует hImag:tPtrToMatrix; // мнимая часть = NIL, если отсутствует end; // Возвращаемый результат LPCFUNCTION=function:LRESULT; // Информация для регистрации функции FUNCTIONINFO=record lpstrName:Pchar; // имя, под которым будет использоваться внутри MathCAD // !!! чувствительно к регистру букв lpstrParameters:Pchar; // перечень параметров (только как информационное сообщений) lpstrDescription:Pchar; // описание (только как информационное сообщений) lpfnMyCFunction:LPCFUNCTION; // указатель на функцию returnType:ulong; // тип возвращаемого значения nArgs:uint; // число аргументов argType:array[1..MAX_ARGS] of ulong; // типы аргументов end; implementation end.