AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Frage zur Übergabe von grüßer Variable
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zur Übergabe von grüßer Variable

Ein Thema von faux · begonnen am 19. Sep 2005 · letzter Beitrag vom 19. Sep 2005
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Frage zur Übergabe von grüßer Variable

  Alt 19. Sep 2005, 19:04
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
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

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

  Alt 19. Sep 2005, 19:24
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 , ich glaube schon . 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.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

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

  Alt 19. Sep 2005, 19:58
Zitat von Khabarakh:
Arrays sind immer Verweistypen (also wie die dynamischen Arrays in Delphi), es wird also nur ein Zeiger kopiert.
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
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

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

  Alt 19. Sep 2005, 20:04
Array != Delegate
[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]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

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

  Alt 19. Sep 2005, 20:11
Zitat von Khabarakh:
Array != Delegate
Das hab ich nie behauptet!

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?
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

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

  Alt 19. Sep 2005, 20:12
He, das müssen keine 10 Sekunden zwischen deinem Post und meinem Edit gewesen sein .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#7

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

  Alt 19. Sep 2005, 20:14
ASOOOO jetzt verstehe ich!!
Zeiger auf Variable != Zeiger auf Funktion
Das war mein Denkfehler, oder?
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz