Seite 1 von 2

Pointer auf Variable in Procedure

Verfasst: 21.02.2010 15:24
von dater
Hallo,
ich möchte in einer Procedure eine Globale Variable veränder ?
Das geht aber nicht ! Kann mir da jemand helfen ?

Code: Alles auswählen

Global aa=10

; Die Procedure soll eine Globale Variable veränder und dann zurückgeben !
Procedure.l	addsub(*var,i)
*var+i
ProcedureReturn *var
EndProcedure

; aa sollte von 10 bis 30 sein !!!!
For i=1 To 20
	Debug addsub(aa,1)
Next i

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 15:35
von RSBasic
@dater
Wenn du eine globale Variable benutzt, dann brauchst du deine Variable garnicht mehr übergeben.

Code: Alles auswählen

Global aa=10

; Die Procedure soll eine Globale Variable veränder und dann zurückgeben !
Procedure.l   addsub()
aa+1
ProcedureReturn aa
EndProcedure

; aa sollte von 10 bis 30 sein !!!!
For i=1 To 20
   Debug addsub()
Next i

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 15:39
von WPö
Hast Du schonmal drangedacht, daß eine Variable an deine Prozedur übergeben, nicht aber ins Hauptprogramm zurüchgebracht wird? Schreibe doch:

Code: Alles auswählen

Procedure.l addsub(var,i)
blabla
ProcedureReturn var
EndProcedure
Dann mußt Du aber auch diesen Rückgabewert in Debug ausgeben.

Gruß - WPö

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 16:06
von Kaeru Gaman
es stimmt, dass man eine Globale nicht übergeben muss, weder als Wert noch referenziert.

ich nehme mal an, du wolltest sie referenziert übergeben, dann den Inhalt auf den der Pointer zeigt verändern, und diesen Wert zurückgeben.

Code: Alles auswählen

Define  aa.l = 10

Procedure.l   addsub(*var.Long,i)
  *var\l +1
  ProcedureReturn *var\l
EndProcedure

; aa sollte von 10 bis 30 sein !!!!
For i=1 To 20
   Debug addsub(@aa,1)
Next i
du musst den Wert hinter dem Pointer verändern und zurückgeben.
um auf den direkt zugreifen zu können, musst du dem Pointer eine Struktur geben, nämlich Long.
das findet hier im Prozedurkopf statt.
dann kannst du auf das einzige Strukturfeld \l zugreifen, um an den Wert zu kommen,
sowohl für die Addition als auch für die Rückgabe.

und du musst beim Aufruf die Adresse deiner Variable übergeben (@) nicht ihren Wert.


Was willst du denn machen?
eventuell ist es noch etwas früh, dich mit pointern rumzuschlagen?
ist nicht bös' gemeint... :)

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 16:21
von ts-soft
@Kaeru
Dein Code hat einen kleinen Fehler. aa hat den Standardtypen, also Integer und nicht Long!

Gruß
Thomas

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 16:22
von Kaeru Gaman
aye, danke für den Hinweis.

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 17:07
von ts-soft
Warum kann man jetzt nicht sehen, das Du es editiert hast :freak:
Weiß ja nicht was die Leute denken, wenn sie jetzt mein sinnloses Posting lesen :o

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 17:11
von Kaeru Gaman
das liegt wohl an phpBB3... kann ich auch nix dran machen.
aber da ich mich für den Hinweis bedankt hab, wird ja wohl jeder raffen, dass dein Posting nicht sinnlos war.

und noch ein seelsorgerischer Hinweis:
Scheiß drauf was irgendwelche Leute denken könnten, davon kriegt man nur graue Haare und schlechte Nerven.

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 17:17
von ts-soft
Kaeru Gaman hat geschrieben: Scheiß drauf was irgendwelche Leute denken könnten, davon kriegt man nur graue Haare und schlechte Nerven.
Dieser Hinweis kam leider zu spät :mrgreen:

Re: Pointer auf Variable in Procedure

Verfasst: 21.02.2010 17:20
von TomS
Kaeru is Moderator. Er kann jeden Beitrag editieren, ohne, dass was angezeigt wird. Unter phpbb2 wurde auch nichts angezeigt, wenn ein Mod seinen eigenen Beitrag editierte (afair).