Изменения в расширениях языка

Overload директива

Используется для вызова методов с различными типами параметров. Методы обьявляются с обязательной директивой overload:

Function AddOne(N:integer):integer; overload;
begin
Result:=N+1;
end;
Function AddOne(S:string):integer; overload;
begin
Result:=StrToInt(S)+1;
end;

Теперь метод можно вызвать следующими способами:
N:=AddOne(1); или N:=AddOne(‘1’);
Результат одинаков.

Динамические массивы

В Delphi 4 появилась возможность, наряду с обычными массивами, создавать динамические массивы, в которых не определено число элементов: Отметим, что динамические массивы могут быть многомерными: Динамические массивы существенно упрощают использование и повторное использование памяти. Пример изменения размера массива:

var
i:integer;
A, B: array of string;
begin
SetLength(A, 2);
SetLength(B, 2);
A[0] := 'a0';
B[0] := 'b0';
A[1] := 'a1';
B[1] := 'b1';
Memo1.Lines.Clear;
for i:=0 to length(a)-1 do
begin
Memo1.Lines.Add(a[i]+b[i]);

end;
SetLength(A, length(a)+1);
SetLength(B, length(b)+1);
A[length(a)-1] := 'a3';
B[length(b)-1] := 'b3';
Memo1.Lines.Add(a[2]+b[2]);
SetLength(A, 1);
SetLength(B, 1);
Memo1.Lines.Add(inttostr(length(a)));
Memo1.Lines.Add(inttostr(length(b)));

end;

Это чем то напоминает старый, добрый Clipper.

Перегрузка методов

С новой поддержкой для перегрузки методов разработка объектов существенно упрощена. В Delphi 4 объекты могут обладать несколькими одноименными методами, отличающимися набором аргументов. В результате способность к взаимодействию среди объектов существенно облегчена: Перегруженные методы отмечаются ключевым словом overload.

Параметры со значениями по умолчанию

Процедуры и функции теперь могут иметь параметры со значениями по умолчанию. Эти параметры определяются в следующей форме: При вызове процедуры или функции с параметрами, имеющими значение по умолчанию, этот параметр может быть опущен. Например, если определить какую-либо процедуру следующим образом: то следуюшие два выражения будут эквивалентны: Соответственно параметры со значениями по умолчанию должны находиться в конце списка параметров процедуры или функции.

Экспорт перегруженных процедур и функций из DLL

Когда вы экспортируете перегруженные процедуры или функции из DLL библиотеки, то необходимо специфицировать параметры послених в разделе "exports" . Пример:

library Overload;

function Divide(X, Y: Integer): Integer; stdcall; overload;
begin
Result := X div Y;
end;

function Divide(X, Y: Real): Real; stdcall; overload;
begin
Result := X / Y;
end;

exports
Divide(X, Y: Integer) name 'Divide_Ints',
Divide(X, Y: Real) name 'Divide_Reals';

begin
end.

64-битные целые

В Delphi 4 введен новый тип данных - Int64 (64-битные целые). Диапазон значений этого типа данных - от -263 до 263 - 1. Отметим, что функции High, Low, Succ, Pred, Inc, Dec, IntToStr, IntToHex, Round, Trunc поддерживают тип Int64. Введены также новые функции StrToInt64 и StrToInt64Def для поддержки этого типа данных.

32-битные беззнаковые целые

В Delphi 4 введен новый тип данных Longword, представляющий собой 32-битовые беззнаковые целые числа. Диапазон значений этого типа данных - от 0 до 4294967295.

Делегирование реализации интерфейса свойству

В Delphi 4 введена новая директива implements, позволяющая делегировать реализацию интерфейса свойству. Например, определяет свойство Interface1, реализующее интерфейс Interface1.

Interface Ltd.

Подготовили: Антипина Галина, E-mail: antipina@interface.ru
Елена Александрова, E-mail: webmaster@interface.ru