Globals in Proceduren
-
- Beiträge: 126
- Registriert: 24.10.2004 21:11
- Wohnort: Ahlen
Globals in Proceduren
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 ?
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 ?
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!!
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!!

Re: Globals in Proceduren
Auch wenn es hart klingen mag: Da hast Du wohl einen Fehler gemacht!DerProgrammierer78 hat geschrieben:Woran kann das liegen ?

Grüße ... Kiffi
P.S.: Ein kurzer Code-Schnippsel, anhand dessen man Deinen Fehler
nachvollziehen kann, wäre hilfreich
a²+b²=mc²
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- Olaf
- Beiträge: 117
- Registriert: 20.04.2006 14:51
- Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
- Kontaktdaten:
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:ergibt nicht das gewünschte Resultat (gibt erwartungsgemäß - da falsch deklariert - 0 anstatt 3 aus), während
genau das tut, was es soll, da hier die globalen Variablen bereits vor den Prozeduren deklariert werden.
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()
Code: Alles auswählen
Global Var.l=3
Procedure DebugIt()
Debug Var
EndProcedure
DebugIt()
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion."
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion."

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
und ein EnableExplicit ist immer sehr hilfreich:
Code: Alles auswählen
EnableExplicit
Global FuerchterlichLangerUndUmstaendlicherVariablenname.l
Procedure TesteMich()
Debug FuerchterlichLangerUndUmstandlicherVariablenname
EndProcedure
TesteMich()
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- Olaf
- Beiträge: 117
- Registriert: 20.04.2006 14:51
- Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
- Kontaktdaten:
@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.
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.
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion."
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion."

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> 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
Machs wie ich, programmiere einfach keinen Scheiß

EnableExplicit sollte erzwungen werden, damits nicht mehr so nach Scheiß riecht

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Olaf
- Beiträge: 117
- Registriert: 20.04.2006 14:51
- Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
- Kontaktdaten:
Ja, ich weiß...aber wenn ich's schonma an hab, dann will ich's auch durchhaltenKiffi hat geschrieben: man kann auch einzelne Blöcke mit EnableExplicit / DisableExplicit klammern.
Grüße ... Kiffi

PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion."
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion."

-
- Beiträge: 126
- Registriert: 24.10.2004 21:11
- Wohnort: Ahlen
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()
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!!
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!!
