![]() |
Typenfehler
Hallo liebe Delphi-Praktiker,
heute bitte Ich um Eure Unterstützung bei einem relativ komplexen Typenfehler. Die Meldung des Compilers lautet: "Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen". Die Zeile, welche die Fehlermeldung produziert, ist wie folgt: check := update_listFiles(outserver, branch, appname, version, outsid, outmessage, FilesList); // Funktionsaufruf Check ist eine boolsche Variable. Die Funktion ist wie folgt deklariert: function update_listFiles(server, branch, appname, version, sid: String; out OUTMessage: String; out OUTList: TFileListArray):Boolean; Ein Ausschnitt aus der Typendeklaration folgt hier:
Delphi-Quellcode:
Dazu habe ich eine Variable FilesList wie folgt deklariert:
TFileList = record
name, checksum: String; end; TFileListArray = Array of TFileList; var FilesList : TFileListArray; 1. Muß TFileListArray eine feste Größe haben oder ist die Deklaration so in Ordnung? 2. Müssen die Namen der nach außen gegenenen Parameter mit denen in der aufrufenden Unit exakt identisch sein? Beste Grüße, wonkos2 |
AW: Typenfehler
Die Namen müssen nicht identisch sein, die Typen hingegen schon. Die Out-Parameter müssen Variablen, die Werteparameter können Konstanten sein. Und Du musst das Array nicht vorher initialisieren, das sollte die Funktion übernehmen.
|
AW: Typenfehler
Also folgendes kompiliert und läuft ohne Probleme:
Delphi-Quellcode:
program Project22;
uses System.SysUtils; type TFileList = record name, checksum: String; end; TFileListArray = Array of TFileList; // Warum nicht TArray<TFileList>? function update_listFiles( server, branch, appname, version, sid: String; out OUTMessage: String; out OUTList: TFileListArray ): Boolean; begin Result := False; end; var filesList: TFileListArray; check: Boolean; someMsg: String; begin try check := update_listFiles( '', '', '', '', '', someMsg, FilesList ); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. |
AW: Typenfehler
Warum sollte es auch nicht? ;)
Aber wenn der TE nur die Spitze vom Eisberg zeigt, dann darf er sich nicht wundern, wenn er die Titanic macht ... |
AW: Typenfehler
Zitat:
auch mit genau den selben Typen? (die Selben ... nicht nur gleich aussehend) Und du solltest besser VAR verwenden, anstatt OUT. Ich hoffe ja, aß der Compiler bei diesen gemanageten Typen von sich us ein VAR daraus macht, aber Vertrauen sollte man da besser nicht drauf. |
AW: Typenfehler
Zitat:
|
AW: Typenfehler
Zitat:
Delphi-Quellcode:
deklariert sind.
outserver, branch, appname, version, outsid, outmessage
|
AW: Typenfehler
Zitat:
|
AW: Typenfehler
Zitat:
![]() Bei gemanageten Typen darf der Eingangswert aber niemals ignoriert werden, bzw. nicht undefiniert sein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz