Изменения в расширениях языка
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 появилась возможность, наряду с обычными массивами, создавать
динамические массивы, в которых не определено число элементов:
Отметим, что динамические массивы могут быть многомерными:
I: array of array of integer;
Динамические массивы существенно упрощают использование и повторное использование
памяти. Пример изменения размера массива:
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.
Параметры со значениями по умолчанию
Процедуры и функции теперь могут иметь параметры со значениями по умолчанию.
Эти параметры определяются в следующей форме:
При вызове процедуры или функции с параметрами, имеющими значение по умолчанию,
этот параметр может быть опущен. Например, если определить какую-либо процедуру
следующим образом:
procedure MyProc(A: Integer; B: Integer = 0);
то следуюшие два выражения будут эквивалентны:
Соответственно параметры со значениями по умолчанию должны находиться в
конце списка параметров процедуры или функции.
Экспорт перегруженных процедур и функций из 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, позволяющая делегировать
реализацию интерфейса свойству. Например,
property Interface1: IInterface1 read FInterface1 implements IInterface1;
определяет свойство Interface1, реализующее интерфейс Interface1.
Interface Ltd.