Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Globale Variablen in Subs/Functions?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
asmodeus



Anmeldungsdatum: 01.09.2009
Beiträge: 9
Wohnort: NRW

BeitragVerfasst am: 01.09.2009, 19:22    Titel: Globale Variablen in Subs/Functions? Antworten mit Zitat

Hallo, ich bin noch relativ neu in FreeBASIC.
Kann mir jemand sagen, ob, und wenn, wie es möglich ist, globale Variablen in Subs bzw. Funktionen zu verwenden? Es scheint mir nämlich so, dass ich sie nicht einfach so in Subs verwenden kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 01.09.2009, 19:30    Titel: Antworten mit Zitat

Willkommen im Forum.

Um Variablen global zu verwenden, brauchst du "Shared".

Bsp.:
Zitat:
Dim Shared As Integer variable
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
asmodeus



Anmeldungsdatum: 01.09.2009
Beiträge: 9
Wohnort: NRW

BeitragVerfasst am: 01.09.2009, 19:51    Titel: lästig... Antworten mit Zitat

MOD hat Folgendes geschrieben:
Willkommen im Forum.

Um Variablen global zu verwenden, brauchst du "Shared".

Bsp.:
Zitat:
Dim Shared As Integer variable

Da es sein könnte, dass ich viele Subs schreibe bzw. dass diese viele Variablen verdenden, ist es auf Dauer eigentlich lästig, immer Shared zu schreiben. Aber falls es keine andere Möglichkeit gibt, werde ich das wohl so machen müssen happy.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2009, 19:58    Titel: Antworten mit Zitat

Hi asmodeus; Na - auch endlich bei "richtigen" Programmiersprachen angelangt? happy

Viele globale Variablen sind eigentlich schlechter Stil; Am besten ist es eigentlich, die benötigten Variablen immer zu übergeben oder zumindest nur in ihren "Klassen" (Klassen lassen sich im Moment nur mit TYPE emulieren) bekannt zu machen. Aber wenn du wirklich bei globalen Variablen bleiben willst, ist ein "shared" mehr ja auch nicht sooo viel mehr Aufwand. happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
asmodeus



Anmeldungsdatum: 01.09.2009
Beiträge: 9
Wohnort: NRW

BeitragVerfasst am: 01.09.2009, 20:05    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Hi asmodeus; Na - auch endlich bei "richtigen" Programmiersprachen angelangt? happy

Ich hab ja auch schon mit C++ angefangen, und die Syntax dieser Sprache behersche ich eigentlich auch schon sehr gut (ich glaube sogar basser als die von FreeBASIC), aber irgendwie komme ich immer wieder nicht so richtig klar damit. Ich weiß einfach manchmal nicht, wie ich was mache, einige Beispiel-Codes scheinen nicht zu funktionieren etc. traurig.
Außerdem habe ich schon viel Erfahrung mit PHP und der sogenannten Game Maker Language (yoyogames.com) happy.
Mit FreeBASIC versuche ich nur zu arbeiten, weil ich da habe, was man braucht. Also, wenn ich z.B. in C++ ein Windows Fenster erstellen möchte, mit Strings abreiten möchte etc., muss ich immer gucken, was ich da inkludieren will, das ist aber in FreeBASIC, PHP und GML nicht der Fall.

Jojo hat Folgendes geschrieben:
Viele globale Variablen sind eigentlich schlechter Stil; Am besten ist es eigentlich, die benötigten Variablen immer zu übergeben oder zumindest nur in ihren "Klassen" (Klassen lassen sich im Moment nur mit TYPE emulieren) bekannt zu machen. Aber wenn du wirklich bei globalen Variablen bleiben willst, ist ein "shared" mehr ja auch nicht sooo viel mehr Aufwand. happy

Ok happy.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2009, 20:09    Titel: Antworten mit Zitat

Deine yoyogames sind mir ja bekannt. Zunge rausstrecken (daher die Anspielung auf "richtige" Programmiersprachen.)
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
asmodeus



Anmeldungsdatum: 01.09.2009
Beiträge: 9
Wohnort: NRW

BeitragVerfasst am: 01.09.2009, 20:13    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Deine yoyogames sind mir ja bekannt. Zunge rausstrecken (daher die Anspielung auf "richtige" Programmiersprachen.)

Bist ja doch der "Jojo", den ich erst im Sinn hatte. Wegen der Signatur, die ich jetzt erst sehe, bin ich mir sicher happy. Aber PHP kann man nicht "richtige" Programmierungssprache nennen? happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2009, 20:22    Titel: Antworten mit Zitat

Ja, der bin ich. PHP ist schon ein Programmiersprache, hat aber halt nen anderen Einsatzzweck als FB (wobei man mit FB natürlich auch Webseiten programmieren könnte, ist aber etwas aufwendiger happy) - Für mich zählen Scriptsprachen auch zu den Programmiersprachen.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
asmodeus



Anmeldungsdatum: 01.09.2009
Beiträge: 9
Wohnort: NRW

BeitragVerfasst am: 01.09.2009, 20:27    Titel: Antworten mit Zitat

Jetzt wird das hier ja schon Off-Topic happy. Ich weiß jetzt, dass ich mein Problem mit Shared löse, und damit ist meine eigentliche Frage beantwortet happy.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 01.09.2009, 21:37    Titel: Antworten mit Zitat

Zitat:
Viele globale Variablen sind eigentlich schlechter Stil; Am besten ist es eigentlich, die benötigten Variablen immer zu übergeben

Weil ich das immer wieder lese: Ich verwende sehr viel SHARED und weiß auch warum - ich teile meine Programme sehr gern in einzelne Unterprogramme (SUBs) auf, brauche dort aber einen Großteil meiner Variablen-Umgebung. Gerade bei den Spielen - die allermeisten der SUBs brauchen Zugriff auf das Spielfeld, die Informationen über die einzelnen Spielelemente usw.* Ob ich jetzt an fast alle SUBs die komplette Variablenliste übergebe, oder gar einen großen UDT "Spiel" erfinde mit all den Elementen drin, die ich brauche, und nur einer einzigen Variable dieses Typs - nämlich mein aktuelles Spiel - oder ob ich dann gleich alle Sachen, die ich sowieso (fast) überall brauche, für überall zugreifbar mache, ist docj gerade egal.

In einer objektorientieren Sprache würde ich das nochmal anders machen, aber da habe ich auch entsprechend andere Möglichkeiten und auch eine andere Denkweise.

*) edit: oder ein Unterprogramm muss einen Aufruf zum Zeichnen eines Steines vornehmen. Das zu zeichnende Bild (Bildspeicher) muss zwar nur der zeichnenden Funktion bekannt sein, aber woher bekommt sie es, wenn sie ja von einer anderen Funktion aufgerufen wurde?
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
asmodeus



Anmeldungsdatum: 01.09.2009
Beiträge: 9
Wohnort: NRW

BeitragVerfasst am: 01.09.2009, 22:08    Titel: genau richtig Antworten mit Zitat

Das was ich im Moment "versuche" geht auch tatsächlich in Richtung Spiel happy.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.09.2009, 22:12    Titel: Antworten mit Zitat

nemored: Bei Jumpin' Hi hab ich die globalen variablen eigentlich auf ein minimum reduzieren können. Ich hab die hauptschleife, und vor der werden objekte initialisiert... diese werden dann in jedem schleifendurchgang aufgerufen und darin passiert dann praktisch alles von alleine. manche objekte müssen natürlich auf andere objekte zurückgreifen, aber das geht eigentlich auch ganz einfach mit pointerübergabe.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 01.09.2009, 22:19    Titel: Antworten mit Zitat

Bei mir ist meistens nur das Hauptmenü in der Hauptschleife, das eigentliche Spiele ist dann bereits in einer SUB ... (dann kann ich auch wieder schön wegklappen grinsen )

Gut, mit Pointer gibt es vielleicht annehmbare Lösungen, aber da muss ich zu viel denken, um den Speicher nicht kaputt zu schießen. lachen
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz