Ist doch kein Trick. Das ist der Sinn von ByRef bzw. Pointern. Direktes verändern der Werte.
Rückgabe ist dann meist nur #True oder #False.
Man sollte dabei immer die Gültigkeit bzw. Existenz des Speichers berücksichtigen!
Das erzeugen in einer anderen Procedure und zurückgeben, würde normal nicht gehen,
es sei denn, es wurde Static verwendet, was man aber eher meiden sollte.
Zuletzt geändert von ts-soft am 21.01.2013 17:02, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
ts-soft hat geschrieben:Ist doch kein Trick. Das ist der Sinn von ByRef bzw. Pointern. Direktes verändern der Werte.
Rückgabe ist dann meist nur #True oder #False.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Sorry, war ein ungünstiger Democode.
Die Pointer sind eigentlich XML-Nodes für die es meines Wissens keine Struktur als Typ gibt.
Wie kann ich hier ein ProcedureReturn umgehen?
Procedure XMLSchuelerNode(*MainNode, Sid.l, *Schueler)
If *MainNode
*Schueler = XMLNodeFromPath(*MainNode, "Schueler")
While *Schueler <> 0
If GetXMLAttribute(*Schueler, "sid") = Str(Sid)
ProcedureReturn *Schueler
EndIf
*Schueler = NextXMLNode(*Schueler)
Wend
EndIf
EndProcedure
Damit wäre dann *Schueler auch gleich deklariert, was Du wohl nicht unbedingt machst
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Damit wäre dann *Schueler auch gleich deklariert, was Du wohl nicht unbedingt machst [/quote]
Das wäre schon ok.
Verstehe ich das also richtig? Wenn ich einen Pointer an eine Procedure übergebe und diesen dort ändere, ist er auch in der "Elternprozedur" geändert.
Download of PureBasic - Module Download of PureBasic - Programmes
Das mit dem deklarieren meinte ich schon Ernst, EnableExplicit gehört in jedem Source an erster Stelle.
Codes ohne dieses untersuche ich normalerweise gar nicht mehr nach Fehlern, die sind es nicht Wert
bereinigt zu werden
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Vielen Dank für die Erläuterung.
Ich muss jetzt erstmal meinen Code überprüfen, da ich womöglich unabsichtlich in Prozeduren Pointer geändert haben könnte.
Download of PureBasic - Module Download of PureBasic - Programmes
Der Pointer ändert sich nicht. Das war wohl falsch. Nur der Inhalte an dieser Speicherstelle kann geändert werden!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.