Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
{$IFDEF WIN32}
SetLength(Result, Length(S));
if Length(Result) > 0 then
OemToAnsi(PChar(S), PChar(Result));
{$ELSE}
if Length(Result) > 0 then
begin
OemToAnsi(StrPCopy(Source, S), Dest);
Result := StrPas(Dest);
end;
{$ENDIF}
end; { ConvertOemToAnsi }
{------------------------------------------}
{ Returns the status of the Insert key. }
{------------------------------------------}
function InsertOn: Boolean;
begin
if LowOrderBitSet(GetKeyState(VK_INSERT)) then InsertOn := true
else InsertOn := false
end;
Здесь я привожу полный список всех функций и процедур модуля Math. При переходе от Delphi 2 к Delphi 3 модуль Math почти не изменился, фирма Borland ввела в него только три новые функции: MaxIntValue, MInIntValue и Sumint. Эти функции отличаются от своих прототипов (MaxValue, MInValue и Sum) лишь тем, что работают исключительно с целыми числами, не принимая и не возвращая величин с плавающей точкой. Что касается остальных функций, то большинство из них вполне очевидно. Если вам покажется иначе — что ж, садитесь за исследования. И не надейтесь, что все тайны Delphi достанутся вам на блюдечке в виде help-файла!
Тригонометрические функции и процедуры
ArcCos — Арккосинус
ArcCosh — Пиперболический арккосинус
ArcSIn — Арксинус
ArcSInh — Гиперболический арксинус
ArcTahn — Гиперболический арктангенс
ArcTan2 — Арктангенс с учетом квадранта (функция ArcTan, не учитывающая квадрант, находится в модуле System)
Cosh — Гиперболический косинус
Cotan — Котангенс
CycleToRad — Преобразование циклов в радианы
DegToRad — Преобразование градусов в радианы
GradToRad — Преобразование градов в радианы
Hypot — Вычисление гипотенузы прямоугольного треугольника по длинам катетов
RadToCycle — Преобразование радианов в циклы
RadToDeg — Преобразование радианов в градусы
RacIToGrad — Преобразование радианов в грады
SinCos — Вычисление синуса и косинуса угла. Как и в случае SumAndSquares и MeanAndStdDev, одновременная генерация обеих величин происходит быстрее
Sinh — Гиперболический синус
Tan — Тангенс
Tanh — Гиперболический тангенс
Арифметические функции и процедуры
Cell — Округление вверх
Floor — Округление вниз
Frexp — Вычисление мантиссы и порядка заданной величины
IntPower — Возведение числа в целую степень. Если вы не собираетесь пользоваться экспонентами с плавающей точкой, желательно использовать эту функцию из-за ее скорости
Ldexp — Умножение Х на 2 в заданной степени
LnXPI — Вычисление натурального логарифма Х+1. Рекомендуется для X, близких к нулю
LogN — Вычисление логарифма Х по основанию N
LogIO — Вычисление десятичного логарифмах
Log2 — Вычисление двоичного логарифмах
Power — Возведение числа в степень. Работает медленнее IntPower, но для операций с плавающей точкой вполне приемлемо
Финансовые функции и процедуры
DoubleDecliningBalance — Вычисление амортизации методом двойного баланса
FutureValue — Будущее значение вложения
InterestPayment — Вычисление процентов по ссуде
InterestRate — Норма прибыли, необходимая для получения заданной суммы
InternalRateOfReturn — Вычисление внутренней скорости оборота вложения для ряда последовательных выплат
NetPresentValue — Вычисление чистой текущей стоимости вложения для ряда последовательных выплат с учетом процентной ставки
NumberOf Periods — Количество периодов, за которое вложение достигнет заданной величины
Payment — Размер периодической выплаты, необходимой для погашения ссуды, при заданном числе периодов, процентной ставке, а также текущем и будущем значениях ссуды
PerlodPayment — Платежи по процентам за заданный период
PresentValue — Текущее значение вложения
SLNDepreclatlon — Вычисление амортизации методом постоянной нормы
SYDepreclatlon — Вычисление амортизации методом весовых коэффициентов
Статистические функции и процедуры
MaxIntValue — Максимальное значение в наборе целых чисел. Функция появилась в Delphi 3. ее не существует в Delphi 2
MaxValue — Максимальное значение в наборе чисел. В Delphi 2 функция возвращает минималъное значение
Mean — Среднее арифметическое для набора чисел
MeanAndStdDev — Одновременное вычисление среднего арифметического и стандартного отклонения для набора чисел. Вычисляется быстрее, чем обе величины по отдельности
MinIntValLie — Минимальное значение в наборе целых чисел. Функция появилась в Delphi 3, ее не существует в Delphi 2
MInValue — Минимальное значение в наборе чисел. В Delphi 2 функция возвращает максимальное значение
MoiiientSkewKurtosIs — Статистические моменты порядков с первого по четвертый, а также асимметрия (skew) и эксцесс (kurtosis) для набора чисел
Norm — Норма для набора данных (квадратный корень из суммы квадратов)
PopnStdDev — Выборочное стандартное отклонение. Отличается от обычного стандартного отклонения тем, что при вычислениях используется выборочное значение дисперсии, PopnVarlance (см. ниже)
PopnVarlance — Выборочная дисперсия. Использует "смещенную" формулу TotalVanance/n
RandG — Генерация нормально распределенных случайных чисел с заданным средним значением и среднеквадратическим отклонением
StdDev — Среднеквадратическое отклонение для набора чисел
Sum — Сумма набора чисел
SLimsAndSquares — Одновременное вычисление суммы и суммы квадратов для набора чисел. Как и в других функциях модуля Math, обе величины вычисляются быстрее, чем по отдельности
Sumint — Сумма набора целых чисел. Функция появилась в Delphi 3, ее не существует в Delphi 2
SLimOfSquares — Сумма квадратов набора чисел
Total Variance — "Полная дисперсия" для набора чисел. Это сумма квадратов расстояний всех величин от их среднего арифметического
Variance — Выборочная дисперсия для набора чисел. Функция использует "несмещенную" формулу TotalVanапсе/ (n – 1)
У меня такая проблема: я пишу компонент, который внутри себя создаёт другой компонент. Конструктор первого компонента выглядит примерно так:
constructor TFirstComp.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
SecondComp:=TSecondComp.Create(Owner)
end;
Проблема заключается в том, что при помещении первого компонента на форму в dfm-файл записывается информация и о втором компоненте тоже. А в pas-файл — только о первом. Это приводит к конфликтам. Для меня принципиально, чтобы хозяин у второго компонента был тот же, что и у первого. Как не дать Delphi поместить запись о TSecondComp в dfm-файл?
Попробуйте сделать так: