![]() |
Offene Arrays - Dynamische Array - Parameter
Hallo,
Arrays welche per Wert Parameter übergeben werden, verhalten sich ja trotzdem wie var Parameter. (dh es wird keine Kopie erzeugt) Wird bei offenen Arrays eine Kopie erzeugt? Muss ich evtl explizit das offene Array als Var Parameter übergeben um keine Kopie zu bekommen? Mir leuchtet nicht ein, warum ich meinen Array nicht an SetLength übergeben kann... Mir ist bewusst, das ich hier kein Array-Parameter habe sondern ein Offenes Array-Parameter, aber was kann ich machen, ohne mir einen Typen des Arrays zu deklarieren.
Delphi-Quellcode:
Wäre super wenn es genau dafür eine Lösung gibt, sonst könnte es kompliziert werden alles auf TMyClass = class MyArray : array of TIrgendwas; begin DoSomething(MyArray); SetLength(MyArray, 10); // Garkein Problem end; DOSomething(ParaArray : array of TIrgendwas) begin SetLength(ParaArray, 1); // Inkompatible Typen end;
Delphi-Quellcode:
umzustellen...
TMyArray : array of TIrgenswas
Grüße edit: Wo ich schon mal dabei bin, mir erschließt sich nicht der Sinn, warum wir 2 Array Typen brauchen...
Delphi-Quellcode:
// Warum ist: TMyArray = array of TObject; var MyArray : TMyArray // anders als var MyArray : array of TObject |
AW: Offene Arrays - Dynamische Array - Parameter
Zitat:
Zitat:
Zitat:
|
AW: Offene Arrays - Dynamische Array - Parameter
hi, danke gamma
Zitat:
Delphi-Quellcode:
von fester Größe ist, warum kann ich dann Setlength(MyArray, X) aufrufen? Da scheint mir die größe doch variabel?
MyArray : array of TObject
Ich kann es ja nur nicht in der übergebenen prozedur aufrufen? edit: Wenn ich mich entscheide, ob ich ein Dynamisches oder Offenes Array brauche, überlege ich dann einfach, ob die Größe variabel oder fix sein wird? edit2: Noch hatte ich keine Erleuchtung...
Delphi-Quellcode:
var myarry : array of TObject; // das hier müsste ja ein offenes Array sein begin SetLength(myarry, 10); SetLength(myarry, 4); SetLength(myarry, Wasauchimmer); // funktioniert... und erscheint mir recht dynamisch? end; |
AW: Offene Arrays - Dynamische Array - Parameter
Zitat:
|
AW: Offene Arrays - Dynamische Array - Parameter
Ein offenes Array ist niemals eine Variable, sondern immer ein Parameter.
Delphi-Quellcode:
Siehe auch
var
Arr: array of integer; //dynamisches Array procedure MachWas(Arr: array of integer); //offenes Array ![]() |
AW: Offene Arrays - Dynamische Array - Parameter
Gut, dann habe ich vorher kein "Offenes Array".
Also kann ich das dynamisches Array nur als Referenz übergeben, wenn ich vorher eine Array Typdefinition erstelle. Sonst wird es ein heimlich ein "Offenes Array" naja... merkwürdig. Danke nochmal. |
AW: Offene Arrays - Dynamische Array - Parameter
Delphi-Quellcode:
Manchmal geht mir die Typsicherheit echt auf den Senkel.
type
tmya = array of integer; pmya = ^tmya; procedure Machwas(p_myarray:pmya); var ...... Gruß K-H |
AW: Offene Arrays - Dynamische Array - Parameter
Zitat:
Delphi-Quellcode:
(aus Math-Unit) implementieren kann, ohne mit Pointern (plus Längenangaben) zu arbeiten zu müssen.
function Mean(const Data: array of Double): Extended;
|
AW: Offene Arrays - Dynamische Array - Parameter
Zitat:
Und da der dann nicht mit einem anderen Typen übereinstimmt, auch wenn er eigentlich gleich aussieht, sind sie nicht kompatibel. |
AW: Offene Arrays - Dynamische Array - Parameter
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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