Seite 2 von 2
Verfasst: 22.05.2009 14:23
von Kaeru Gaman
ich würde das sogar als Bug bezeichnen.
wenn eine Variable, die Shared sein soll, im Hauptscope vorhanden sein
muss,
sollte auch verlangt werden, dass sie im Hauptscope deklariert wird, mit oder ohne explicit.
tatsächlich ist sie ja auch bei der "on the fly" deklaration im Hauptscope vorhanden.
Code: Alles auswählen
Procedure test1()
Shared a
a=10
EndProcedure
Debug a
test1()
Debug a
Verfasst: 05.06.2009 12:28
von PureBasic4.0
Hallo,
ich habe zu diesem Thema noch eine Frage:
Wie übergebe ich eine Linked List an eine Procedure? Ich habe es soeben mit der gleichen Methode versucht, allerdings darf man ja keine Klammern im Funktionsnamen haben...
Mein Code:
Code: Alles auswählen
Structure namen
vorname.s
name.s
EndStructure
NewList namen.namen()
Procedure verarbeite(*namen.namen())
[...]
EndProcedure
AddElement(namen())
namen()\vorname = "Max"
namen()\name = "Mustermann"
verarbeite(@namen())
Verfasst: 05.06.2009 12:35
von Captn. Jinguji
Code: Alles auswählen
Structure namen
vorname.s
name.s
EndStructure
NewList namen.namen()
Procedure verarbeite(List MyList.namen())
Debug MyList()\Vorname
EndProcedure
AddElement( Namen() )
namen()\vorname = "Max"
namen()\name = "Mustermann"
verarbeite( Namen() )
Verfasst: 05.06.2009 12:36
von PureBasic4.0
Vielen Dank für die schnelle Antwort. Funktioniert!
Verfasst: 05.06.2009 15:13
von Little John
PureBasic4.0 hat geschrieben:Vielen Dank für die schnelle Antwort. Funktioniert!
Ein Glück dass es funktioniert, ansonsten wäre ein dicker Fehler in der PB-Hilfe!
Gruß, Little John
Verfasst: 05.06.2009 15:54
von ZeHa
Nochmals zum urspruenglichen Problem. Eigentlich sollte auch das hier funktionieren (kann es grad nicht testen):
Code: Alles auswählen
Structure Namen
name.s
vorname.s
EndStructure
Procedure.l verarbeite(vorname$,name$)
Define *Namensliste.Namen = AllocateMemory(SizeOf(Namen))
*Namensliste\name = name$
*Namensliste\vorname = vorname$
ProcedureReturn *Namensliste
EndProcedure
*list.Namen = verarbeite("Max","Mustermann")
debug *list\name
debug *list\vorname
Verfasst: 08.06.2009 11:59
von Shardik
Kaeru Gaman hat geschrieben:die deklaration einer Variablen mit Shared innerhalb einer Procedure ist nur dann möglich, wenn sie bereits zuvor im Hauptcode deklariert wurde!
Das ist nicht korrekt: mein Beispiel funktioniert in PB 4.20 und 4.30 einwandfrei ohne Fehlermeldung!
Natürlich sollte man wie von ts-soft empfohlen immer Enable Explicit verwenden. Dann _muß_ eine
in einer Prozedur verwendete Variable vor der Prozedur deklariert werden. Ich hatte lediglich versucht,
das Ursprungs-Beispiel von PureBasic 4.0 mit möglichst wenig Änderungen anzupassen...