Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
asmodeus

Anmeldungsdatum: 01.09.2009 Beiträge: 9 Wohnort: NRW
|
Verfasst am: 01.09.2009, 19:22 Titel: Globale Variablen in Subs/Functions? |
|
|
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 |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 01.09.2009, 19:30 Titel: |
|
|
Willkommen im Forum.
Um Variablen global zu verwenden, brauchst du "Shared".
Bsp.:
Zitat: | Dim Shared As Integer variable |
|
|
Nach oben |
|
 |
asmodeus

Anmeldungsdatum: 01.09.2009 Beiträge: 9 Wohnort: NRW
|
Verfasst am: 01.09.2009, 19:51 Titel: lästig... |
|
|
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 . |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2009, 19:58 Titel: |
|
|
Hi asmodeus; Na - auch endlich bei "richtigen" Programmiersprachen angelangt?
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.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
asmodeus

Anmeldungsdatum: 01.09.2009 Beiträge: 9 Wohnort: NRW
|
Verfasst am: 01.09.2009, 20:05 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Hi asmodeus; Na - auch endlich bei "richtigen" Programmiersprachen angelangt?  |
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. .
Außerdem habe ich schon viel Erfahrung mit PHP und der sogenannten Game Maker Language (yoyogames.com) .
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.  |
Ok . |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2009, 20:09 Titel: |
|
|
Deine yoyogames sind mir ja bekannt. (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 |
|
 |
asmodeus

Anmeldungsdatum: 01.09.2009 Beiträge: 9 Wohnort: NRW
|
Verfasst am: 01.09.2009, 20:13 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Deine yoyogames sind mir ja bekannt. (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 . Aber PHP kann man nicht "richtige" Programmierungssprache nennen?  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2009, 20:22 Titel: |
|
|
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 ) - 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 |
|
 |
asmodeus

Anmeldungsdatum: 01.09.2009 Beiträge: 9 Wohnort: NRW
|
Verfasst am: 01.09.2009, 20:27 Titel: |
|
|
Jetzt wird das hier ja schon Off-Topic . Ich weiß jetzt, dass ich mein Problem mit Shared löse, und damit ist meine eigentliche Frage beantwortet . |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 01.09.2009, 21:37 Titel: |
|
|
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 |
|
 |
asmodeus

Anmeldungsdatum: 01.09.2009 Beiträge: 9 Wohnort: NRW
|
Verfasst am: 01.09.2009, 22:08 Titel: genau richtig |
|
|
Das was ich im Moment "versuche" geht auch tatsächlich in Richtung Spiel . |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2009, 22:12 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 01.09.2009, 22:19 Titel: |
|
|
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 )
Gut, mit Pointer gibt es vielleicht annehmbare Lösungen, aber da muss ich zu viel denken, um den Speicher nicht kaputt zu schießen.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|