Error: Incompatible type for arg no. 1: Got "Array[0..12] Of

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Error: Incompatible type for arg no. 1: Got "Array[0..12] Of

Beitrag von thosch »

Hallo,

Ich erhalte folgernde Fehlermeldung:

Error: Incompatible type for arg no. 1: Got "Array[0..12] Of TMyData", expected "{Open} Array Of MyData"

wie kann ich erreichen, dass ein Array [0..X] of TMyData oder eines anderen beliebigen Datentyps genau so angesprachen wird wie ein OpenArry of MyData. Im Array stehen Record Daten, von denen zwei Felder wirklich benutzt werden.

Hängt wohl mit meinem vorherigen Problem zusammen, durch ausgetauschte Units den Datentyp redefiniert zu haben. Aber dazu sollte es doch egal sein ob ich einem Open Array Parameter dann ein konkretes Array übergebe. Das sollte doch der Sinn von Open Arrays als Parameter sein?

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

Beitrag von Socke »

Array-Typen und Open Arrays sind unterschiedliche Konstrukte. Eine Zuweisung ist nur in Grenzen möglich. Insbesondere wenn der Element-Typ abweicht, ist eine Zuweisung nie möglich.
Die Syntax im Zugriff ist identisch.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

Beitrag von thosch »

Danke für die Antwort, auch wenn mir der Inhalt überhaupt nicht passt, weil ich nun genau deshalb meinen Quellcode mühsam anpassen muss. Hilft alles nichts. Da muss ich jetzt durch.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

Beitrag von Socke »

Ohne Quellcode kann dir auch niemand helfen, die Anpassungen auf ein Minimum zu reduzieren.

Du kannst z.B. einen Bereich eines dynamischen Arrays in einen Open Array Parameter übergeben:

Code: Alles auswählen

type
  TMyArray = array of integer; 
 
procedure DoIt(const a: Array of integer)
var
  a: TMyArray;
begin
  a := SomeMagicGlobaArry; // Array befüllen
  DoIt(a[0..5]);
end;


Die Frage ist also, was du genau ändern willst.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

Beitrag von Mathias »

Mit der aktuellen Trunk von FPC ist folgendes möglich:

Code: Alles auswählen

var
  a: array of byte;
begin
  a := [1, 2, 3, 4, 5];
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

Beitrag von fliegermichl »

Mathias hat geschrieben:Mit der aktuellen Trunk von FPC ist folgendes möglich:

Code: Alles auswählen

var
  a: array of byte;
begin
  a := [1, 2, 3, 4, 5];
end;


Gibt es mittlerweile auch eine Möglichkeit, daß als Konstante zu initialisieren a la?

Code: Alles auswählen

 
const
 a : array of byte = (1, 5, 7, 9);
 

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

Beitrag von Mathias »

Gibt es mittlerweile auch eine Möglichkeit, daß als Konstante zu initialisieren a la?


Es wird anstandslos kompiliert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten