Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 31.05.2008, 15:05 Titel: Constructor frage: |
|
|
Wie komme ich an den Zeiger eines UDTs innerhalb dessen Constructors? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 31.05.2008, 16:11 Titel: |
|
|
Wat? ... wie meinst du das? .. du willst den zeiger auf ein noch nicht existierendes UDT haben!?
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 31.05.2008, 17:48 Titel: |
|
|
In dem moment wo man mit Dim eine UDT initiiert wird ja der constructor der UDT ausgeführt falls man einen definiert...
Nun möchte ich einen Constructor zu einem UDT so programmieren, dass bei initiierung der Zeiger zur UDT in ein (shared) array eingetragen wird... im prinzip so ein bischen wie ein loggbuch.. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 31.05.2008, 22:49 Titel: |
|
|
hmmm ... cih glaub das geht nicht ... wenn ich mich nicht irre, dann wird der constructor doch ausgeführt, bevor die eigentliche inizialisierung beginnt. Sprich, es is noch nicht vorhanden, und wird erst erstellt, nachdem der constructor fertig is.
bin ich mir ziemlich sicher, ... aber, kann mich auch irren.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 31.05.2008, 23:00 Titel: |
|
|
Auf die Eigenschaften des UDTs kann ich doch vom constructor aus zugreifen! Dann schätze ich doch mal das der speicher für das UDT bzw für dessen Eigenschaften bereits reserviert und initiiert wurde oder?
und wenn der speicher bereits reserviert und initiiert wurde, dann wirds sicherlich auch schon einen zeiger dahin geben.. schätze ich einfach mal... |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 02.06.2008, 11:49 Titel: |
|
|
OneCypher hat Folgendes geschrieben: | Auf die Eigenschaften des UDTs kann ich doch vom constructor aus zugreifen! Dann schätze ich doch mal das der speicher für das UDT bzw für dessen Eigenschaften bereits reserviert und initiiert wurde oder?
und wenn der speicher bereits reserviert und initiiert wurde, dann wirds sicherlich auch schon einen zeiger dahin geben.. schätze ich einfach mal... |
Verschätzt.
Ein Zeiger ist nur eine Integer-Variable, die eine Speicheradresse aufnimmt. Den Zeiger mußt Du wie jede andere Variable selbst deklarieren und zuweisen. Das Deklarieren mußt Du ausßerhalb des Construktors machen und kannst ihn dann dem Construktor übergeben oder einfach die Adresse des UDT abfragen. Innerhalb des Constructors wird der Zeiger mit Abschluß der Constructor-Funktion ungültig. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 02.06.2008, 14:50 Titel: |
|
|
@Elektronix:
"Ein Zeiger ist nur eine Integer-Variable, die eine Speicheradresse aufnimmt."
Rüschtüsch...
"Den Zeiger mußt Du wie jede andere Variable selbst deklarieren und zuweisen."
Auch rüschtüsch...
"Das Deklarieren mußt Du ausßerhalb des Construktors machen und kannst ihn dann dem Construktor übergeben oder einfach die Adresse des UDT abfragen."
Wie soll ich dem Construktor einen Zeiger zu etwas übergeben was noch nicht existiert?
Wird der Constructor ausgeführt, sind definitiv bereits alle Eigenschaften des UDTs per Default-Constructor initiiert!!
Der UDT-Constructor soll dann nur noch die aufgabe übernehmen die Werte der Eigenschaften auf die anforderungen des Programmierers anzupassen...
"Innerhalb des Constructors wird der Zeiger mit Abschluß der Constructor-Funktion ungültig"
Das entspricht nicht meinen Beobachtungen.
Der Pointer "@This" innerhalb eines Constructors zeigt definitiv auf die Position des UDTs.
Also entweder hast du eine falsche informationsquelle oder wir haben aneinander vorbeigeredet und haben es nur nicht gemerkt.
Trotzdem vielen dank für deinen Beitrag.
@Stormy: Danke für deine Recherche!! Auf @This wär ich nie gekommen *dirbeigelegenheitnenkaffeeausgeb* |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 02.06.2008, 15:19 Titel: |
|
|
Nein, Du kannst einem Construktor auch externe Werte übergeben, um diese bestimmten Variablen des UDT zuzuweisen. Natürlich müssen die Werte vorher geDIMt sein. Beispiel aus meiner verketteten Liste:
Code: | Dim ListHead As HeadNode = HeadNode (pListHead, pListEnd, pListItem, "sorted") |
Damit wird der Construktor von HeadNode aufgerufen, der die Pointer und die Listenart ("sorted") übernimmt. Die Übergabekonventionen sind die gleichen wie bei normalen Funktionen.
Zitat: | Der Pointer "@This" innerhalb eines Constructors zeigt definitiv auf die Position des UDTs. | Richtig, der ist aber nur innerhalb des Construktors gültig. Außerhalb nur in Record-Funktionen des UDT. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 02.06.2008, 15:23 Titel: |
|
|
Ja ok... verstehe wie du das meinst, aber ich glaub wir haben aneinander vorbeigeredet.
Klar kann man pointer einem constructor für ein udt übergeben..
Meine frage war aber, wie ich innerhalb eines UDT-Constructors an den EIGENEN Zeiger komme. Und nicht an den Zeiger eines anderen UDTs oder eine anderen Variable...
Aber wie gesagt, das hat sich mit "@This" erledigt  |
|
Nach oben |
|
 |
|