Возврат массива с использованием функции типа консоли может быть выполнен, но я пытаюсь создать функцию, которая принимает целое число n в качестве входных данных и возвращает массив, расширенный в VCL-форме Delphi. Как мы можем сделать это?
Функция для возврата расширенного массива в VCL Form Delphi
Ответы (3)
В современных версиях Delphi следует использовать общий массив TArray<T>
. Как это:
function Foo(N: Integer): TArray<Extended>;
var
i: Integer;
begin
SetLength(Result, N);
for i := 0 to N-1 do begin
Result[i] := i;
end;
end;
Я хотел бы подчеркнуть, что использование Extended
, вероятно, является ошибкой. Это довольно необычный и плохо работающий 10-байтовый тип с плавающей запятой. Этот тип доступен только на ограниченном числе процессоров. Почти все вычисления с плавающей запятой в реальном мире выполняются с использованием Single
или Double
, 4-байтовых и 8-байтовых типов данных с плавающей запятой IEEE-754.
Если мне не изменяет память, это нужно сделать, набрав его заново, то есть:
type
TResultType: array of extended;
function DoSomthing(): TResultType
begin
SetLength(Result, 2);
Result[0] := 1.2;
Result[1] := 3.4;
end;
Это не проблема VCL/консоли, поскольку объявления функций не зависят от типа приложения, которое вы пишете.
Функции Delphi (или любого Pascal) могут возвращать любой именованный тип данных. Пока тип массива объявлен в разделе типов, функция может его обработать.
eg.
type
ExtArray : array of extended;
function IntToArray(i:integer):ExtArray;
begin
...
end;