{--------------------------------------------------------------------------- The control units for mass-spectrometer MI1201-AGM (c) Copyright Aleksandrov O.E., 2003 Модуль управления масс-спектрометром МИ1201-АГМ (c) Собственность Александрова О.Е., 2003 Molecular Physics department 620002, Екатеринбург, К-2 USTU, Ekaterinsburg, K-2, 620002 УГТУ, RUSSIA Кафедра молекулярной физики phone 75-41-46 тел. 75-41-46 E-mail: aleks@dpt.ustu.ru ----------------------------------------------------------------------------} unit InfoDefinition; { Описание функции Info, см. GenFit_EFI_Declarations } interface USES GenFit_EFI_Declarations, FunctionDefinition; const cFunctionsCount=1; {Возврат информации по аппроксимирующим функциям, см. GenFit_EFI_Declarations аргументы: aParameter - код возвращаемой информации; aInfoBuffer - указатель на буфер, для возвращаемой информации и/или доп. параметров для aParameter; aSize - размер буфера aInfoBuffer; возвращает: положительное число - размер в байтах информации в aInfoBuffer, если aInfoBuffer достаточно велик + запрошенная информация в aInfoBuffer; отрицательное число - размер в байтах, необходимый для возврата информации в aInfoBuffer, если размер aInfoBuffer недостаточен или aInfoBuffer=NIL; 0 - если aParameter не поддерживается. } function Info(aParameter:tInfoParameter; var aInfoBuffer; aSize:cardinal):integer; register; implementation function Info(aParameter:tInfoParameter; var aInfoBuffer; aSize:cardinal):integer; register; begin // Функция из GenFit_EFI_Declarations Result:=GenFit_EFI_Declarations.Info(aParameter, aInfoBuffer, aSize); if Result>0 then begin case aParameter of // число апроксимирующих фукций, реализованных в DLL, нумерация с 0; ipApproximatingFunctionsCount: begin try tApproximatingFunctionsCount(aInfoBuffer).Count:=1; except Result:=-SizeOf(tApproximatingFunctionsCount); end; end; // понятное имя апроксимирующей фукции, реализованной в DLL, номер функции передается в aInfoBuffer; ipApproximatingFriendlyFunctionName: begin try if tApproximatingFriendlyFunctionName(aInfoBuffer).FunctionNumber=SizeOf(tApproximatingFriendlyFunctionName)+SizeOf(cFunctionName) then begin tApproximatingFriendlyFunctionName(aInfoBuffer).Valid:=TRUE; tApproximatingFriendlyFunctionName(aInfoBuffer).NameSize:=SizeOf(cFunctionName); Move(cFunctionName+#0, tApproximatingFriendlyFunctionName(aInfoBuffer).Name, SizeOf(cFunctionName)+1); Result:=SizeOf(tApproximatingFriendlyFunctionName)+SizeOf(cFunctionName); end else begin Result:=aSize-SizeOf(tApproximatingFriendlyFunctionName)-SizeOf(cFunctionName); end; end else begin tApproximatingFriendlyFunctionName(aInfoBuffer).Valid:=FALSE; Result:=SizeOf(tApproximatingFriendlyFunctionName); end; except Result:=-SizeOf(tApproximatingFriendlyFunctionName); end; end; // адреса апроксимирующей фукции и градиента, число параметров, нормализующие функции и т.д., см. тип данных tApproximatingFunctionInfo ipApproximatingFunctionInfo: begin try if (tApproximatingFunctionInfo(aInfoBuffer).FunctionNumber