2016-03-21 12 views
2

の「動的配列」と「文字列の配列は、」私が持っているこのようなクラス:互換性のないタイプ:デルファイ

Programmer = Class(Worker) 
private 
    // Some code here 
    programmingLanguages: array of String; 
    numOfProgrammingLanguages: integer; 
public 
    // Some code here 
    procedure SetProgrammingLanguages(newLanguages: array of String); 
    function GetNumOfProgrammingLanguages(languages: array of string) : integer; 
end; 

私はSetProgrammingLanguages方法については、以下のコードを書くとき、私はエラーを取得:

Incompatible types: 'Dynamic array' and 'array of string'

この問題を解決するにはどうすればよいですか?

+0

私の[オープンアレイパラメータについての記事](http://rvelthuis.de/articles/articles-openarr.html)をお読みください。それは助けるかもしれない。 –

答えて

2

解決策は、最初に新しいタイプ、たとえばTProgrammingLanguages = array of string;を宣言することです。次に、それをクラス宣言とメソッド・パラメーターの両方で使用します。

今作成したメソッドパラメータはprogramminglanguagesフィールドに使用する動的配列タイプとは異なるopen array parameterです。

Open array parametersについては、documentationを参照してください。

+0

Tnx、それは私のために働く。 –

+0

これは危険な解決策です。同じオブジェクトへの2つの参照があります。質問者はコピーセマンティクスを好むかもしれません。 –

+0

@DavidHeffernanあなたはよりよい解決策を提案できますか? –

関連する問題