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
Vars aus Hauptprogamm in Procedure manipulieren!?
Code: Alles auswählen
Global G
procedure Test()
G+1
endprocedure
debug g
test()
debug g
test()
debug g
test()
Ansatz:
Code: Alles auswählen
procdure Test(*P.long)
*p\l+1
endprocedure
debug a
Test(@A)
debug a
Test(@a)
debug a
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
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.
Gruß Falko
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 ErgebnisIch habe das Beispiel getestet, funktioniert. Ich verstehe aber nicht warum. Wo ist die Structure p\l deklariert? Kann mich jemand aufklären?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
manchmal weiß auch ich etwas, ich erinnere mich bloß schlecht daran
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Mißverständis.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?
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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
