Выбрать главу

  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 }

Состояние кнопки insert (Insert/Overwrite)

{------------------------------------------}

{ Returns the status of the Insert key. }

{------------------------------------------}

function InsertOn: Boolean;

begin

 if LowOrderBitSet(GetKeyState(VK_INSERT)) then InsertOn := true

 else InsertOn := false

end;

Сводка функций модуля Math

Здесь я привожу полный список всех функций и процедур модуля 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)

Внутри конструктора Create компонента создаю другой компонент, но Delphi помещает запись о втором компоненте  в dfm-файл!

У меня такая проблема: я пишу компонент, который внутри себя создаёт другой компонент. Конструктор первого компонента выглядит примерно так: 

constructor TFirstComp.Create(AOwner:TComponent);

begin

 inherited Create(AOwner);

 SecondComp:=TSecondComp.Create(Owner)

end;

Проблема заключается в том, что при помещении первого компонента на форму в dfm-файл записывается информация и о втором компоненте тоже. А в pas-файл — только о первом. Это приводит к конфликтам. Для меня принципиально, чтобы хозяин у второго компонента был тот же, что и у первого. Как не дать Delphi поместить запись о TSecondComp в dfm-файл? 

Попробуйте сделать так: