Sie leiden unter einem gemeinsamen und grundlegenden mis-Untergebenen nding von Array-Parametern. Was haben Sie hier:
function execute(var command: array of string): Boolean;
nicht in der Tat ein dynamic array. Es ist ein open array parameter.
Jetzt können Sie ein dynamisches Array als Parameter an eine Funktion übergeben, die ein offenes Array empfängt. Sie können die Länge des dynamischen Arrays jedoch nicht ändern. Sie können nur seine Elemente ändern.
Wenn Sie die Länge des dynamischen Arrays ändern müssen, muss die Prozedur ein dynamisches Array erhalten. In der modernen Delphi der idiomatische Weg, das zu schreiben ist:
function execute(var command: TArray<string>): Boolean;
Wenn Sie eine ältere Version von Delphi verwenden, die nicht generischer Arrays, dann müssen Sie einen Typen für die Parameter deklarieren unterstützt:
type
TStringArray = array of string;
....
function execute(var command: TStringArray): Boolean;
Wie sollten Sie entscheiden, ob Sie Open-Array- oder dynamische Array-Parameter verwenden möchten? Meiner Meinung nach sollten Sie immer offene Arrays verwenden, wenn dies möglich ist. Und wenn das nicht möglich ist, verwenden Sie dynamische Arrays als letzten Ausweg. Der Grund dafür ist eine Funktion mit einem offenen Array-Parameter, die allgemeiner ist als eine mit einem dynamischen Array-Parameter. Beispielsweise können Sie ein Array mit konstanter Größe als offenen Array-Parameter übergeben, jedoch nicht, wenn die Funktion ein dynamisches Array empfängt.
Da diese Seite auf Englisch ist, würde es für die meisten Leute einfacher sein, Ihre Frage zu beantworten, wenn Sie die englische Übersetzung Ihrer Fehlermeldung posten könnten - ich nehme an, es wäre "Incompatible Token"? – RobV
@RobV: "Inkompatible Typen", vielleicht auf Deutsch oder Niederländisch. –
Ja, tut mir leid. Aber in diesem Fall ist die englische Übersetzung nicht viel anders. Inkompatible Typen. –