Seite 2 von 2

Verfasst: 20.10.2006 15:44
von NicTheQuick
Wenn du Pointern arbeitest, musst du daran denken, dass alles ByRef
übergeben wird und ByVal.

Verfasst: 20.10.2006 15:48
von #NULL
@dw

hallo, *.klopf.klopf.*
wie du in der proc auf die daten der ganzen structure zugreifen
kannst, wurde gezeigt. und zwar ohne @. wenn ich mich nicht
irre brauchst du ein @ sowieso nur für primitive typen. arrays,
und struktuierte typen geben ihre addresse einfach so preis,
wenn du kein index oder feld angibst.

Verfasst: 20.10.2006 15:50
von Hellhound66
Vielleicht will man ja, oder vielleicht will ich ja auch,
Geil. Wir sind in einer Ratestunde..

@dw:
Wenn du eine Struktur übergeben möchtest, dann kannst du das auf die Art und Weise machen, wie es #NULL dargestellt hat.
Dass Adressierungszeichen @ ist für die Strukturübergabe nicht notwendig. Du musst nur aufpassen, dass du mit einem Zeiger auf eine Struktur in der Prozedur arbeitest.

Beispiel für Zeiger:

Code: Alles auswählen

;# Eine Struktur deklarieren
Structure _STRUC
    Feld1.l
    Feld2.l
EndStructure

;# Eine lokale Variable vom Typ _STRUC definieren. (Verbraucht sizeof(_STRUC) Bytes)
Lokal._STRUC

;# Einen Zeiger auf einen strukturierten Speicherblock vom Typ _STRUC definieren.
;# Würde ich jetzt ohne Initialisierung in den Zeiger schreiben (*Zeiger\Feld1 = 3),
;# dann würde ich einen IMA (invalid memory access) bekommen.
*Zeiger._STRUC

;# Hier weise ich dem Struktuzeiger "*Zeiger" die Adresse der lokalen Variable "Lokal" zu.
;# dadurch zeigen beide Variablen auf den gleichen Speicherbereich.
*Zeiger = Lokal


;# Wenn ich jetzt über "Zeiger" einen Wert lade, ändert er sich natürlich in Lokal auch, weil es
;# ja der gleiche Speicherbereich ist.
*Zeiger\Feld1 = 666

;# Mittels Debug überprüfe ich das, und siehe da, es ist gleich.
Debug Lokal\Feld1

;# Umgekehrt gehts natürlich auch:
Lokal\Feld2 = 999
Debug *Zeiger\Feld2

Verfasst: 20.10.2006 15:54
von Kaeru Gaman
und wie NTQ bereits angedeutet hat:
du übergibs die strukturierte Variable selber, nicht deren werte.
d.h. wenn du die werte innerhalb der Proc manupulierst,
dann ändern sie sich auch im Hauptprogramm.

Verfasst: 20.10.2006 20:12
von DW
Genau das will ich ja auch machen.

Danke für eure Antworten, war nett in diesem thread. Für mich ist das Gespräch beendet. Thread kann geschlossen werden.

Verfasst: 20.10.2006 21:32
von mk-soft
Strukturen übergeben und maipolieren

Code: Alles auswählen

Procedure test(*format.test)

  *format\a = 100
  
EndProcedure
FF :wink: