アプリケーションに、配列を返す必要がある関数があります。私はいくつかの場所で、配列タイプを宣言することによってこれを行う方法を見つけました。
type
TStringArray = array of string;
そして、私の関数を宣言します
function SomeFunction(SomeParam: Integer): TStringArray;
私の問題は、インターフェースと実装の両方を備えた形式でこれを設定しようとすることです。インターフェイスで型を宣言し、その型の関数宣言をするにはどうすればよいですか?
unit Unit1;
interface
uses SysUtils;
type
TStringArray = array of string;
function SomeFunction(SomeParam: integer): TStringArray;
...
implementation
function SomeFunction(SomeParam: integer): TStringArray;
begin
SetLength(result, 3);
result[0] := 'Alpha';
result[1] := 'Beta';
result[2] := 'Gamma';
end;
...
end.
ゴールデンルールは、ユニットのinterface
セクションが、ユニットで使用されるデータ型と、ユニット内に存在する型、クラス、および関数(それらのシグネチャ)を記述することです。これは、すべてのotherユニットが見るものです。 implementation
セクションには、クラスと関数の実装が含まれています。これは他のユニットには見えません。他のユニットは、実装セクションにある「実装の詳細」ではなく、ユニットのインターフェース、このユニットと外部ユニットによって署名された「契約」に注意する必要があります。
Delphiがかなり新しい場合は、TArray<String>
として宣言することにより、新しい型を宣言する必要はありません。
上記の回答からコピーして貼り付けた例:
unit Unit1;
interface
function SomeFunction(SomeParam: integer): TArray<String>;
implementation
function SomeFunction(SomeParam: integer): TArray<String>;
begin
SetLength(result, 3);
result[0] := 'Alpha';
result[1] := 'Beta';
result[2] := 'Gamma';
end;
end.