2016-03-21 10 views
2

Ich habe eine Klasse wie folgt:Inkompatible Typen: ‚Dynamische Array‘ und ‚Array von String‘ in Delphi

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; 

Wenn ich den folgenden Code für die SetProgrammingLanguages Methode schreiben, erhalte ich eine Fehlermeldung:

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

Wie kann ich dieses Problem lösen?

+0

Bitte lesen Sie meinen [Artikel über Open-Array-Parameter] (http://rvelthuis.de/articles/articles-openarr.html). Es könnte helfen. –

Antwort

2

Die Lösung besteht darin, zuerst einen neuen Typ zu deklarieren, sagen wir TProgrammingLanguages = array of string;. Verwenden Sie das dann sowohl in der Klassendeklaration als auch im Methodenparameter.

Der Methodenparameter, wie Sie ihn jetzt geschrieben haben, ist ein open array parameter, der sich von dem dynamischen Array-Typ unterscheidet, den Sie für das Feld programminglanguages verwenden.

Um mehr über Open array parameters zu erfahren, siehe documentation.

+0

Tnx, Es funktioniert für mich. –

+0

Das ist eine riskante Lösung. Sie haben jetzt zwei Referenzen auf das gleiche Objekt. Der Fragesteller könnte eine Kopiesemantik bevorzugen. –

+0

@DavidHeffernan Können Sie eine bessere Lösung vorschlagen? –