![]() |
Auf Dyn.Array klassenübergreifend zugreifen
Ich hab in meiner Hauptklasse ein Dyn. Array
Ich hab nun eine weitere Klasse TKlasse erstellt, und im Konstruktor das Dyn.Array der Hauptklasse übergeben. Ich möchte nun auf das dyn. Array, sodass sich auch das Dyn.Array in der Hauptklasse ändert, (nicht opbjektorientiert würde man das "CALL by reference" heißen) zugreifen. Hier der Konstruktor:
Delphi-Quellcode:
type
TKlasse = class private FArray: TDynamicArray; public constructor Create(AArray: TDynamicArray); end; constructor TKlasse.Create(AArray: TDynamicArray); begin FArray := AArray; end; |
Re: Auf Dyn.Array klassenübergreifend zugreifen
Was spricht gegen Pointer?
Delphi-Quellcode:
type
PDynamicArray = ^TDynamicArray; TKlasse = class private FPArray: PDynamicArray; public constructor Create(AArray: TDynamicArray); end; constructor TKlasse.Create(AArray: TDynamicArray); begin FPArray := @AArray; end; |
Re: Auf Dyn.Array klassenübergreifend zugreifen
Braucht es die Pointer Deklaration uebhaupt, das dyn. Array (Array of Integer)
besteht ja aus Pointern? |
Re: Auf Dyn.Array klassenübergreifend zugreifen
Lieber ein Pointer zu viel als einer zu wenig. Probiers doch einfach aus.
|
Re: Auf Dyn.Array klassenübergreifend zugreifen
Moin!
Es braucht keinen Pointer - die Definition wie du sie zuerst bei deiner Frage schon hattest reicht vollkommen aus. MfG Muetze1 |
Re: Auf Dyn.Array klassenübergreifend zugreifen
Ich habe das dyn. Array in der Hauptklasse bereits vor dem Konstruktor-Aufruf gefüllt,
nach dem Zuweisen im Konstruktor ist FArray leer. Ich habs auch mit der Pointer-Variante, probiert, funktioniert nicht! bitte helft mir |
Re: Auf Dyn.Array klassenübergreifend zugreifen
in der Hilfe steht:
Zitat:
Der Fehler liegt sicher woanders. |
Re: Auf Dyn.Array klassenübergreifend zugreifen
Danke, wenn das die Hilfe sagt muss das ja stimmen.
mytar |
Re: Auf Dyn.Array klassenübergreifend zugreifen
Ich hatte folgendes Problem:
Delphi-Quellcode:
Ohne die mit * markiert Zeile hätte A[0] den Wert 2, so wie hier ist A[0] genau 1.
var
A, B: array of Integer; begin SetLength(A, 1); A[0] := 1; B := A; SetLength(A, 1); //* B[0] := 2; end; Ich muss nun wenn ich wiederum mit B auf A zugreifen will
Delphi-Quellcode:
nach dem 2. SetLength einfügen.
B := A;
Da ich in meinem Programm die Länge des Dynamischen Arrays öfterns, andere d.h. als nach jedem SetLength() von A muss ich die Zuweisung B := A durchführen. Geht das auch irgendwie einfacher, oder muss ich mich mit diesem Problem bei dynamischen Arrays abfinden? mytar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 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