Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi dynamische Arrays := Incompatible Type !? Wie kommt es ? (https://www.delphipraxis.net/5983-dynamische-arrays-%3D-incompatible-type-wie-kommt-es.html)

JoelH 25. Jun 2003 13:14


dynamische Arrays := Incompatible Type !? Wie kommt es ?
 
Also ich hab 2 dynamische Array of Integer, einmal eins in einem eigenen Record Type drin und dann ein ganz normales.

Wenn ich jetzt aber mach

Delphi-Quellcode:
 userrechte.liste := akt_liste;
Dann bemängelt der Compiler ein 'incompatible Types' :(

Warum ?
Liegt es an der Länge der Arrays aber ich dachte dynamische Arrays sind nur Zeiger auf Speicherbereiche und die Länge ist egal oder liegt es gar nicht an der Länge ?

sakura 25. Jun 2003 13:16

Könntest Du mal die Variablendeklaration und ggf. die Typendefinitionen der Variablen posten. So ist es zwecklos was zu sagen.

...:cat:...

JoelH 25. Jun 2003 14:03

hmm,
 
Delphi-Quellcode:
type test = record
  id : integer;
 liste : array of integer;
end;

....



var
   user : test;
   akt_liste : array of integer;

.....


// im Programm dann irgendwann
  akt_liste := user.liste;

sakura 25. Jun 2003 14:06

Re: hmm,
 
Es ist nur eine Änderung nötig. Du musst einen Typen für den Integer-Array deklarieren, der Rest geht dann ohne Probleme.
Code:
type
  [color=#ff0000]TIntegerArray = array of integer;[/color]

  test = record
    id : integer;
    liste : [color=#ff0000]TIntegerArray;[/color]
  end;

....



var
   user : test;
   akt_liste : [color=#ff0000]TIntegerArray;[/color]
...:cat:...

BrainCode 25. Jun 2003 14:57

Wo ist denn da die Logik? Ich sehe keinen direkten Unterschied!

sakura 25. Jun 2003 15:15

array of Integer ist keine eindeutige Typendeklaration - ist so festgelegt. Wenn Du aber TInteger = array of Integer deklarierst, gilt dieser als ein definierter Typ.

...:cat:...

Christian Seehase 25. Jun 2003 15:30

Moin Zusammen,

ich denke mal, dass das so festgelegt worden ist, um den Compiler zu vereinfachen. Wenn ein Typ nur aus einem Bezeichner besteht, ist dies leichter zu prüfen, als wenn er aus Bezeichnern zusammengesetzt ist.

negaH 27. Jun 2003 12:00

Chrstian: eher um uns Programmieren die Arbeit zu erleichtern. Unter PASCAL sind nur Datentypen zuweisbar die auch den gleichen Typ haben. Dies macht die Sprache Typsicher und der Programmierer kann erst garnicht Source coden der inkompatible Speicherbereich mit einander überschreibt.


Das Problem mit obiger Lösung ist halt das das "array of Integer" eine Typdeklaration ist, und KEIN deklarierter Typ. Damit wären alle Felder/Variablen die als "array of Integer" deklariert wurde nicht Typisiert.

Bevor mich einer drauf hinweisst, es gibt im Delphi Ausnahmen von der Regel.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz