アプリ版:「スタンプのみでお礼する」機能のリリースについて

Delphi10を使っています。
動的配列を使って関数からデータを返したいのですが、
//-----------------
interface
uses
Windows, ...
type
TArrayOfString = array of string;//
//-----------------
とメインunitで宣言しても関数用のunitでも 「TArrayOfString = array of string;」を宣言しないとエラーになります。
しかし、同じTArrayOfStringでもunitが違うと、コンパイラでは同じものとして判断してくれません。
関数用のunitではどこか別の場所に宣言できるのでしょうか?
それとも、何か方法があるのでしょうか?

質問者からの補足コメント

  • うれしい

    回答ありがとうございます。
    関数を定義しているunit2でTArrayOfStringを宣言して、unit1側にuse unit2とするわけですか。
    試してみます。
    (3つのunitが絡んでいるので、修正するのに時間がかかりそうです)

      補足日時:2016/05/10 08:39

A 回答 (1件)

たとえば、次のように定義したユニットがあり、



unit Unit2;

interface

type
TArrayOfString = array of string;
function Func: TArrayOfString;

implementation

function Func: TArrayOfString;
begin
Result := ['foo', 'bar'];
end;

end.

次のように使用した場合、コンパイルエラーになるということでしょうか。(マルチデバイスアプリケーションです)

unit Unit1;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics,
FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ private 宣言 }
public
{ public 宣言 }
end;

var
Form1: TForm1;

implementation

{$R *.fmx}

uses Unit2;

procedure TForm1.FormCreate(Sender: TObject);
var
R: TArrayOfString;
begin
R := Func;
end;

end.

手元の環境(Delphi 10 Seattle)では、このコードは問題なく動作しています。

具体的なサンプルコードを教えていただけると、適切な回答ができると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
コンパイルできるようになりました。
(動作確認はこれからですけど)

お礼日時:2016/05/11 08:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!