Pointer auf Variable in Procedure

Anfängerfragen zum Programmieren mit PureBasic.
dater
Beiträge: 43
Registriert: 14.01.2006 15:22

Pointer auf Variable in Procedure

Beitrag 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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Pointer auf Variable in Procedure

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Pointer auf Variable in Procedure

Beitrag 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ö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Pointer auf Variable in Procedure

Beitrag 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... :)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Pointer auf Variable in Procedure

Beitrag von ts-soft »

@Kaeru
Dein Code hat einen kleinen Fehler. aa hat den Standardtypen, also Integer und nicht Long!

Gruß
Thomas
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Pointer auf Variable in Procedure

Beitrag von Kaeru Gaman »

aye, danke für den Hinweis.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Pointer auf Variable in Procedure

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Pointer auf Variable in Procedure

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Pointer auf Variable in Procedure

Beitrag 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:
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Pointer auf Variable in Procedure

Beitrag 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).
Antworten