![]() |
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:
Dann bemängelt der Compiler ein 'incompatible Types' :(
userrechte.liste := akt_liste;
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 ? |
Könntest Du mal die Variablendeklaration und ggf. die Typendefinitionen der Variablen posten. So ist es zwecklos was zu sagen.
...:cat:... |
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; |
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:
...:cat:...
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] |
Wo ist denn da die Logik? Ich sehe keinen direkten Unterschied!
|
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:... |
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. |
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 23:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz