dyn. Array als Parameter uebergeben / -> Type mismatch

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
X-Array
Beiträge: 2
Registriert: Fr 23. Sep 2016, 08:11

dyn. Array als Parameter uebergeben / -> Type mismatch

Beitrag von X-Array »

Hi, kann jemand erklären, warum Load1 nicht funktioniert? Vielen Dank! :)

Code: Alles auswählen

TYPE TESTTYPE = ARRAY OF AnsiString;
 
Procedure Load1( VAR svx : ARRAY OF ANSISTRING );
var svlength : longint;
begin
     svlength:=100;
     SetLength(svx, svlength);
end;
 
Procedure Load2( VAR svx : TESTTYPE );
var svlength : longint;
begin
     svlength:=100;
     SetLength(svx, svlength);
end;
 
VAR TEST : TESTTYPE;
    TEST2 : ARRAY OF ANSISTRING;
 
BEGIN
     Load1( TEST );
     readln;
END.

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: dyn. Array als Parameter uebergeben / -> Type mismatch

Beitrag von indianer-frank »

X-Array hat geschrieben:Hi, kann jemand erklären, warum Load1 nicht funktioniert? Vielen Dank! :)

Code: Alles auswählen

TYPE TESTTYPE = ARRAY OF AnsiString;
 Procedure Load1( VAR svx : ARRAY OF ANSISTRING )
Hier is svx kein dynamisches Array sondern ein Open array parameter (siehe Doc, z.B.http://www.freepascal.org/docs-html/ref/refsu69.html). Selbst wenn der unterschiedliche Typ keine Fehlermeldung erzeugen würde: Open-Array-Parameter haben eine fixe Größe, die vom Aufrufer (implizit) übergeben wird, setlength könnte also gar nicht sinnvoll funktionieren.

X-Array
Beiträge: 2
Registriert: Fr 23. Sep 2016, 08:11

Re: dyn. Array als Parameter uebergeben / -> Type mismatch

Beitrag von X-Array »

Vielen Dank für die schnelle Antwort! :)

Antworten