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

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

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

Beitragvon thosch » 23. Jan 2020, 10:50 Error: Incompatible type for arg no. 1: Got "Array[0..12] Of

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?
thosch
 
Beiträge: 182
Registriert: 10. Jul 2017, 19:32

Beitragvon Socke » 23. Jan 2020, 11:54 Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

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
Socke
Lazarusforum e. V.
 
Beiträge: 2667
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon thosch » 23. Jan 2020, 21:13 Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

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.
thosch
 
Beiträge: 182
Registriert: 10. Jul 2017, 19:32

Beitragvon Socke » 23. Jan 2020, 22:53 Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

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
Socke
Lazarusforum e. V.
 
Beiträge: 2667
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Mathias » 24. Jan 2020, 15:16 Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4421
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon fliegermichl » 27. Jan 2020, 10:07 Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

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);
 
fliegermichl
Lazarusforum e. V.
 
Beiträge: 464
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Mathias » 27. Jan 2020, 16:57 Re: Error: Incompatible type for arg no. 1: Got "Array[0..12

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


Es wird anstandslos kompiliert.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4421
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried