ich habe hier mal zwei kleine Quelltexte, einen in FPC den anderen in C. Beides sollen dll für Scilab werden. Der C-Quelltext funktioniert, der FPC nicht.
FPC:
Code: Alles auswählen
library sequenz;
procedure sequen(var ein: integer; var aus: array of integer); cdecl;
var i: integer;
begin
for i:=0 to ein do aus[i]:=i;
end;
exports
sequen;
begin
end.
Code: Alles auswählen
void sequen(int *in, int *out)
{
for(int i=0; i<*in; i++)
out[i]=i;
}
Wenn "ein" bzw. "in" z.B. 5 ist, dann soll: 0 1 2 3 4 herauskommen. Es kommen aber fünf Zahlen dieser Güte "65553" heraus.
Die Übergabe einer Variablen "call by Reference" also mit "var aus: integer" sollte doch dem "int *out" entsprechen. Nur C ist es wohl egal ob "out" später ein Array wird oder nicht.
FPC moserte bei "var aus: integer", weil "aus" später indiziert angesprochen wird, wollte er "var aus: array of integer".
Es sieht so aus als würden in meinem Array "aus" nicht die Zahlenwerte von "i" sondern die Adressen gespeichert.
Wo liegt mein Fehler?
Vielen Dank für Eure Hilfe
Volker