Seite 1 von 2
Globals in Proceduren
Verfasst: 31.07.2007 15:03
von DerProgrammierer78
Hallo zusammen...
Irgendwie scheine ich etwas wichtiges übersehen zu haben.
Ich habe das Problem, dass ich im Programmkopf ein paar Globals definiere, aber in den Proceduren gesagt bekomme, dass diese Variablen nicht existieren. Woran kann das liegen ?
Re: Globals in Proceduren
Verfasst: 31.07.2007 15:15
von Kiffi
DerProgrammierer78 hat geschrieben:Woran kann das liegen ?
Auch wenn es hart klingen mag: Da hast Du wohl einen Fehler gemacht!
Grüße ... Kiffi
P.S.: Ein kurzer Code-Schnippsel, anhand dessen man Deinen Fehler
nachvollziehen kann, wäre hilfreich
Verfasst: 31.07.2007 15:19
von Kaeru Gaman
> Ein kurzer Code-Schnippsel, anhand dessen man Deinen Fehler
> nachvollziehen kann, wäre hilfreich
definitiv.
Verfasst: 31.07.2007 15:19
von Olaf
Code, bitte^^
Vielleicht liegts an der Reihenfolge wie du's geschrieben hast.
Du musst, damit's richtig funktioniert, die Variablen etc. vor deinen Prozeduren deklarieren.
Beispiel:
Code: Alles auswählen
Procedure DebugIt()
Debug Var
EndProcedure
Global Var.l=3
DebugIt()
ergibt nicht das gewünschte Resultat (gibt erwartungsgemäß - da falsch deklariert - 0 anstatt 3 aus), während
Code: Alles auswählen
Global Var.l=3
Procedure DebugIt()
Debug Var
EndProcedure
DebugIt()
genau das tut, was es soll, da hier die globalen Variablen bereits vor den Prozeduren deklariert werden.
Verfasst: 31.07.2007 15:22
von Kaeru Gaman
und ein
EnableExplicit ist immer sehr hilfreich:
Code: Alles auswählen
EnableExplicit
Global FuerchterlichLangerUndUmstaendlicherVariablenname.l
Procedure TesteMich()
Debug FuerchterlichLangerUndUmstandlicherVariablenname
EndProcedure
TesteMich()
Verfasst: 31.07.2007 15:28
von Olaf
@Kaeru:
Ja, in solchen Fällen trägt EnableExplicit schon massiv zur Fehlerfindung bei, aber eig. mag ich's nich so sehr, weil ich dann tatsächlich jeden Scheiß vorher deklarieren muss und nich den Komfort von PB nutzen kann, die Variablen einfach mal so zu verwenden/einzuführen, wobei sie dann automatisch deklariert werden.
Verfasst: 31.07.2007 15:32
von ts-soft
>> weil ich dann tatsächlich jeden Scheiß vorher deklarieren muss
Machs wie ich, programmiere einfach keinen Scheiß
EnableExplicit sollte erzwungen werden, damits nicht mehr so nach Scheiß riecht

Verfasst: 31.07.2007 15:33
von Kiffi
Olaf hat geschrieben:aber eig. mag ich's nich so sehr, weil ich dann tatsächlich jeden Scheiß vorher deklarieren muss
man kann auch einzelne Blöcke mit EnableExplicit / DisableExplicit klammern.
Grüße ... Kiffi
Verfasst: 31.07.2007 15:46
von Olaf
Kiffi hat geschrieben:
man kann auch einzelne Blöcke mit EnableExplicit / DisableExplicit klammern.
Grüße ... Kiffi
Ja, ich weiß...aber wenn ich's schonma an hab, dann will ich's auch durchhalten

Verfasst: 31.07.2007 17:08
von DerProgrammierer78
Also ich schreib hier mal rein wie ich es gemacht habe ...
Code: Alles auswählen
Dim ServerAdresse.s(250)
Global ServerAdresse.s
ServerAdresse(0) = "Adresse1"
ServerAdresse(1) = "Adresse1"
ServerAdresse(2) = "Adresse1"
ServerAdresse(3) = "Adresse1"
ServerAdresse(4) = "Adresse1"
ServerAdresse(5) = "Adresse1"
Procedure ZeigeServer()
Debug (ServerAdresse(0))
Debug (ServerAdresse(1))
Debug (ServerAdresse(2))
Debug (ServerAdresse(3))
Debug (ServerAdresse(4))
Debug (ServerAdresse(5))
EndProcedure
ZeigeServer()