Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Referenz auf array


Rool - Fr 13.06.03 09:21
Titel: Referenz auf array
Wie kann ich eine Referenz auf ein Array erstellen. Wenn ich es genauso deklariere, sagt er: "inkompatible typen!"

also

Quelltext
1:
2:
3:
4:
5:
var refArr: array of TTest;

begin

refArr:=arrListe;   //arrListe ist global deklariert


Wie macht man so etwas?


AndyB - Fr 13.06.03 09:33

Du musst einen neuen Typen anlegen, denn wenn die beiden Variablen nicht in der selben "Zeile" deklariert sind, sind sie nicht kompatibel.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
var
  a, b: array of TTest;

a := b; // is OK



var 
  a: array of TTest;
  b: array of TTest;

a := b; // Fehler



type
  TTestDynArray = array of TTest;
var
  a: TTestDynArray;
  b: TTestDynArray;

a := b; // ist OK

Das ist nun mal der Pascal-Standard den man akzepieren muss.


Rool - Fr 13.06.03 15:18
Titel: ..
Alles klar! Ist ja sehr merkwürdig! Aber DANKE!


Rool - Fr 13.06.03 15:32
Titel: ...
Aber das ist ja gar keine Referenz! Wenn ich in a irgendwas drin stehen habe und dann
b:=a
setzte,

und dann in b etwas ändere, ändert sich das in a NICHT!!!


AndyB - Fr 13.06.03 15:52

Bei dynamisch Arrays müsste das schon so sein. Hast du vielleicht ein festgelegtes Array (Array[x..y] of XX) deklariert?


Rool - So 15.06.03 16:21
Titel: ne
ne, ist n dynamisches!


UGrohne - So 15.06.03 16:25

Bei dynamischen Arrays wird es nur eine Referenz, habe dasselbe Problem vor kurzem gehabt, dass plötzlich beides gleich war und ich nicht wusste warum, nur weil ich einen Fehler bei der Datenübergabe gemacht habe. Typen sind bei solchen Zuweisungen im Normalfall immer Referenzen.