Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Frage zur Übergabe von grüßer Variable (https://www.delphipraxis.net/53598-frage-zur-uebergabe-von-gruesser-variable.html)

faux 19. Sep 2005 20:04


Frage zur Übergabe von grüßer Variable
 
Hallo!

Ich habe folgendes Problem:

Code:
class MyClass
{
  ListViewItem[] Item;
  //Indizierung und befüllung von Item...
  AnyOtherClass aoc = new AnyOtherClass();
  aoc.MyVar = Item; //*** HIER DIE STELLE, DIE ICH MEINE
}
class AnyOtherClass
{
  private ListViewItem[] _MyVar;
  public ListViewItem[] MyVar
  {
    set
    {
      this._MyVar = value;
    }
  }
  public AnyMethod()
  {
    //Verarbeitung von _MyVar;
  }
}
Kann man das aus Zeile 7 so machen? Oder wird dann die Größe die Item (und nachher auch _MyVar) braucht zwei mal verbraucht? Die Größe von Item kann gute 150MB sein, also wäre das nicht so nett, wenn die zweimal verbraucht werden...
Wäre man hier mit Delegenten besser dran, oder verwechsel ich da was GANZ GANZ stark??? (Ich hab mich bis dato mit Delegenten noch nicht beschäftigt)

Grüße
Faux

Khabarakh 19. Sep 2005 20:24

Re: Frage zur Übergabe von grüßer Variable
 
Arrays sind immer Verweistypen (also wie die dynamischen Arrays in Delphi), es wird also nur ein Zeiger kopiert.
Zitat:

Ein Array ist ein Verweistyp, der mehrere Variablen enthält, auf die über Indizes zugegriffen wird.
Zitat:

Wäre man hier mit Delegenten besser dran, oder verwechsel ich da was GANZ GANZ stark???
Wenn du Delegates meinst :mrgreen: , ich glaube schon :mrgreen: . Delegates (von mir aus auch Delegaten) sind mit den Funktionszeigern von Delphi zu vergleichen, allerdings objektorient, außerdem kann jeder Delegat mehrere Methoden beinhalten. Ich wüsste aber nicht, wie man die in dein Problem einbauen könnte.
Zitat:

Delegaten ermöglichen Szenarien, für die einige andere Sprachen Funktionszeiger verwenden. Delegaten sind jedoch im Gegensatz zu Funktionszeigern objektorientiert und typsicher.

Eine Delegatdeklaration definiert eine Klasse, die von der System.Delegate-Klasse abgeleitet ist. Eine Delegatinstanz schließt eine Aufrufliste ein. Dies ist eine Liste aus einer oder mehreren Methoden, auf die als aufrufbare Entität verwiesen werden kann. Bei Instanzmethoden besteht eine aufrufbare Entität beispielsweise aus einer Instanz und einer Methode für diese Instanz. Bei statischen Methoden besteht eine aufrufbare Entität nur aus einer Methode. Das Aufrufen einer Delegatinstanz mit einem geeigneten Argumentsatz bewirkt, dass die aufrufbaren Entitäten der einzelnen Delegaten mit dem jeweiligen Argumentsatz aufgerufen werden.


faux 19. Sep 2005 20:58

Re: Frage zur Übergabe von grüßer Variable
 
Zitat:

Zitat von Khabarakh
Arrays sind immer Verweistypen (also wie die dynamischen Arrays in Delphi), es wird also nur ein Zeiger kopiert.

Zitat:

Zitat von Khabarakh
Delegates (von mir aus auch Delegaten) sind mit den Funktionszeigern von Delphi zu vergleichen

Du sagst, es wird nur ein Zeiger kopiert. Dann sagst du, dass ein Delegant mit einem Zeiger zu vergleichen ist. Aber ich kann das NICHT mit Deleganten lösen...

Ich glaube dir schon, dass ich falsch liege, aber für mich gibt das keinen Sinn... lol
Bitte um Erklärung...

Grüße
Faux

Khabarakh 19. Sep 2005 21:04

Re: Frage zur Übergabe von grüßer Variable
 
Array != Delegate :gruebel:
[edit] Ah, jetzt hab ichs verstanden. Mit dem Array-Zeiger meine ich einen normalen Pointer auf die Speicherstelle der Instanz. Ein Funktionszeiger unter Delphi ist ein Pointer auf eine Funktion oder Methode. Das ist also nur eine andere Art eines Pointers als ein Referenztyp, ein Referenztyp besteht nicht aus einem Funktionszeiger. Ein Delegate ist nur eine Liste von Methoden, hat also erstmal nichts mit Referenztypen zu tun. [/edit]

faux 19. Sep 2005 21:11

Re: Frage zur Übergabe von grüßer Variable
 
Zitat:

Zitat von Khabarakh
Array != Delegate :gruebel:

Das hab ich nie behauptet! :lol:

DU hast gesagt, dass ein Zeiger auf einen Array übergeben wird. Und eine Delegent ist laut dir ein Zeiger. Oder versteh ich das net ganz?

Khabarakh 19. Sep 2005 21:12

Re: Frage zur Übergabe von grüßer Variable
 
He, das müssen keine 10 Sekunden zwischen deinem Post und meinem Edit gewesen sein :lol: .

faux 19. Sep 2005 21:14

Re: Frage zur Übergabe von grüßer Variable
 
ASOOOO jetzt verstehe ich!!
Zeiger auf Variable != Zeiger auf Funktion
Das war mein Denkfehler, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz