J'ai une fonction dans mon application qui doit retourner un tableau. J'ai trouvé dans quelques endroits comment faire cela en déclarant le type de tableau, par ex.
type
TStringArray = array of string;
Et puis déclarer ma fonction
function SomeFunction(SomeParam: Integer): TStringArray;
Mon problème est d'essayer de configurer cela sous une forme qui a à la fois une interface et une implémentation. Comment déclarer mon type et avoir une déclaration de fonction avec ce type dans l'interface?
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.
La règle d'or est que la section interface
d'une unité décrit les types de données utilisés par l'unité et les types, classes et fonctions (leurs signatures) qui résident dans l'unité. C'est ce que voient toutes les autres unités. La section implementation
contient l'implémentation des classes et des fonctions. Ce n'est pas visible pour les autres unités. Les autres unités doivent se préoccuper de l'interface de l'unité, du "contrat" signé par cette unité et de l'unité externe, et non des "détails de mise en œuvre" figurant dans la section de mise en œuvre.
Si vous Delphi est assez récent, vous n'avez pas besoin de déclarer un nouveau type, en le déclarant comme TArray<String>
.
Exemple copié et collé à partir de la réponse ci-dessus:
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.