[Gelöst]Funktion akzeptiert Array nicht als Result

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
X_ster
Beiträge: 6
Registriert: Do 28. Okt 2010, 13:03
OS, Lazarus, FPC: Win7//Ubuntu (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit

[Gelöst]Funktion akzeptiert Array nicht als Result

Beitrag von X_ster »

Hallo erstmal,
ich habe leider ein kleines Problem mit einer Funktion, und zwar wird mein Array of int 64 nicht als Rückgabewert akzeptiert.

Hier der Code:

Code: Alles auswählen

function primarray (fermat: array of int64) :int64;
var
c,d : int64;
j :integer;
begin
 c := high(fermat) - low(fermat);
 for j:=0 to c do
 begin
  d := prim(c);
  fermat[c] := d;
  c := c + 1;
 end;
Result := fermat;
end;
Und die Fehlermeldung:

unit1.pas(70,11) Error: Incompatible types: got "Open Array Of Int64" expected "Int64"



Danke schon mal :D
Zuletzt geändert von X_ster am Do 28. Okt 2010, 15:51, insgesamt 1-mal geändert.

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Funktion akzeptiert Array nicht als Result

Beitrag von Live »

Wenn ich das richtig sehe, definierst du fermat als array. Die Funktion soll als Rückgabe-Wert aber nur int64 liefern. Wie wärs wenn du der Funktion ebenfalls ein array of int64 zuordnest?

Gebe dir dafür ein anderes Beispiel:

Code: Alles auswählen

type Tmyarray= array of TImage; 
 
function gibmirarray: Tmyarray;
  var i:integer;
begin
  setlength(result,Anzahl);
  for i:= 0 to Anzahl-1 do Begin
     result[i]:= Timage.create(Form1);
     result[i].parent := form1;
     result[i].picture.loadfromfile(...);
   End;
End;
Zuletzt geändert von Live am Do 28. Okt 2010, 13:20, insgesamt 1-mal geändert.

X_ster
Beiträge: 6
Registriert: Do 28. Okt 2010, 13:03
OS, Lazarus, FPC: Win7//Ubuntu (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit

Re: Funktion akzeptiert Array nicht als Result

Beitrag von X_ster »

Das hab ich auch schon probiert aber wenn ich

Code: Alles auswählen

function primarray (fermat: array of int64) :array of int64;
oder

Code: Alles auswählen

function primarray (fermat: array of int64) :fermat;
mach dann wirft der mir die Fehlermeldung:

unit1.pas(58,46) Error: Type identifier expected
unit1.pas(58,46) Fatal: Syntax error, ";" expected but "ARRAY" found
bzw.
unit1.pas(58,52) Error: Identifier not found "fermat"
Zuletzt geändert von X_ster am Do 28. Okt 2010, 13:23, insgesamt 1-mal geändert.

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Funktion akzeptiert Array nicht als Result

Beitrag von Live »

X_ster hat geschrieben:Das hab ich auch schon probiert aber wenn ich

Code: Alles auswählen

function primarray (fermat: array of int64) :array of int64;
unit1.pas(58,46) Error: Type identifier expected
unit1.pas(58,46) Fatal: Syntax error, ";" expected but "ARRAY" found
Ja,

Code: Alles auswählen

type deinarray= array of int64
fehlt ;)

X_ster
Beiträge: 6
Registriert: Do 28. Okt 2010, 13:03
OS, Lazarus, FPC: Win7//Ubuntu (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit

Re: Funktion akzeptiert Array nicht als Result

Beitrag von X_ster »

ich habe jetzt zwar

Code: Alles auswählen

type fermat= array of int64;
gemacht aber ergibt mir immernoch

unit1.pas(69,11) Error: Incompatible types: got "Open Array Of Int64" expected "Int64"

zurück.

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Funktion akzeptiert Array nicht als Result

Beitrag von Live »

X_ster hat geschrieben:ich habe jetzt zwar

Code: Alles auswählen

type fermat= array of int64;
gemacht aber ergibt mir immernoch

unit1.pas(69,11) Error: Incompatible types: got "Open Array Of Int64" expected "Int64"

zurück.
Versuch:

Code: Alles auswählen

type returnarray = array of int64;
 
function primarray (fermat: returnarray) :returnarray;
fermat ist ja ein Parameter, du musst aber auch einen Returnwert (in diesem Fall ein Array) festlegen. Das Returnarray wird dann im type definiert.
Zuletzt geändert von Live am Do 28. Okt 2010, 13:52, insgesamt 1-mal geändert.

X_ster
Beiträge: 6
Registriert: Do 28. Okt 2010, 13:03
OS, Lazarus, FPC: Win7//Ubuntu (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit

Re: Funktion akzeptiert Array nicht als Result

Beitrag von X_ster »


Versuch:

Code: Alles auswählen

type returnarray = array of int64;
 
function primarray (fermat: array of int64) :returnarray;
fermat ist ja ein Parameter, du musst aber auch einen Returnwert (in diesem Fall ein Array) festlegen. Das Returnarray wird dann im type definiert.

Funktioniert leider auch nicht :(
unit1.pas(57,57) Error: Identifier not found "returnarray"

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Funktion akzeptiert Array nicht als Result

Beitrag von Live »

Code: Alles auswählen

type
   Treturnarray = array of int64;
 
function primarray (fermat: Treturnarray) : Treturnarray;
var
c,d : int64;
j :integer;
begin
 c := high(fermat) - low(fermat);
 for j:=0 to c do
 begin
  d := c;
  fermat[c] := prim(d);
  c := c + 1;
 end;
Result := fermat;
end;

X_ster
Beiträge: 6
Registriert: Do 28. Okt 2010, 13:03
OS, Lazarus, FPC: Win7//Ubuntu (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit

Re: Funktion akzeptiert Array nicht als Result

Beitrag von X_ster »

Danke hat geklappt :3

Antworten