Seite 1 von 1
Vars aus Hauptprogamm in Procedure manipulieren!?
Verfasst: 28.09.2004 21:40
von PB-Newbie
Hi Leute!
Ich bin noch absoluter Neuling in PureBasic. Bin gerade auf ein Problem gestoßen. Habe auch schon versucht es mit Hilfe eines Tuts zu lösen, aber das hat leider nicht geklappt.
Ich will Variablen aus dem Hauptprogramm an eine Procedure übergeben, damit diese dort verändert werden können. Die Verändernung soll sich auf die orignal Variablen aus dem Hauptprogramm auswirken. Ich habs mit shared und Pointern versucht, aber leider hab ich die Fuktionsweise in PB noch nicht ganz durchblickt. Vielleicht kann jemand schnell ein kleines Beispiel posten.
Danke!
Gruß, PB-Newbie
Verfasst: 28.09.2004 21:57
von GPI
Code: Alles auswählen
Global G
procedure Test()
G+1
endprocedure
debug g
test()
debug g
test()
debug g
test()
Aber man sollte eigentlich nach möglichkeit Globale vermeiden.
Ansatz:
Code: Alles auswählen
procdure Test(*P.long)
*p\l+1
endprocedure
debug a
Test(@A)
debug a
Test(@a)
debug a
Verfasst: 28.09.2004 22:01
von Falko
Ist ein bischen schwierig sich einen Wunsch auszudenken, aber ich
probiere es mal unkompliziert
Probiere mal diesen Code aus und kommentiere mal das Shared mit dem
Semikolon weg. Ich hoffe so in der Richtung.
Code: Alles auswählen
Procedure.l mul(Zahl.l,multiplikator.l)
Shared Zahl,multiplikator
Result=Zahl*Multiplikator
Zahl=10
multiplikator=5
ProcedureReturn Result
EndProcedure
;Hauptprogramm
Zahl=10
multiplikator=2
Debug mul(Zahl,multiplikator); übergebe Zahl und Multiplikator und danach die Ausgabe
Debug Zahl; Prüfe die Variable Zahl
Debug multiplikator; Prüfe die Variable multiplikator
Debug mul(Zahl,multiplikator) ;Ausgabe neues Ergebnis
Gruß Falko
Verfasst: 29.09.2004 10:55
von bvc
GPI hat geschrieben:
Code: Alles auswählen
procedure Test(*P.long)
*p\l+1
endprocedure
debug a
Test(@A)
debug a
Test(@a)
debug a
Ich habe das Beispiel getestet, funktioniert. Ich verstehe aber nicht warum. Wo ist die Structure p\l deklariert? Kann mich jemand aufklären?
Verfasst: 29.09.2004 11:01
von remi_meier
Da die Sturuktur Long schon im Reference-File von Purebasic vordeklariert ist. Nützlich für WinApi!
Thx!
Verfasst: 29.09.2004 12:20
von PB-Newbie
Danke GPI!
Dein zweites Beispiel ist genau das, was ich gesucht habe.
Jetzt kann ich richtig loslegen.
Gruß, PB-Newbie
Verfasst: 29.09.2004 19:51
von GPI
bvc hat geschrieben:Ich habe das Beispiel getestet, funktioniert. Ich verstehe aber nicht warum. Wo ist die Structure p\l deklariert? Kann mich jemand aufklären?
Mißverständis.
Ich hab in den procedure-Zeile als Übergabe eine Pointer definiert (*P) von Typ Long (.long -> *p.long). Ein Pointer ist eine Adresse. Der Typ sagt, das an dieser Adresse ein Long ist.
mit "*p\l" sag ich, das ich auf diesen Long in der Adresse von *P zugreifen will (\l).
mit @a wird nicht der INhalt der Variable a übergeben, sonder deren Adresse, so das ich oben mit den Pointer die Variable manipulieren kann.