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:

Problem mit Bezeichner in einem Unterprogramm

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



Anmeldungsdatum: 20.02.2007
Beiträge: 2

BeitragVerfasst am: 23.02.2007, 01:33    Titel: Problem mit Bezeichner in einem Unterprogramm Antworten mit Zitat

Hallo

Ich habe vor Kurzem das schöne 3D-Grafiktutorial von Mario Zechner gelesen und dabei ein par (für mich) neue Befehle kennengelernt. Unter anderem SUB und TYPE. Arrays verwende ich auch erst seit kurzer Zeit.
Nun wollte ich eines meiner Programme mit diesen Befehlen verschönern und bin auf ein Problem gestoßen.

Mein Programm simuliert die Bewegung von mehreren Massepunkten.
Da es etwas kompliziert ist, habe ich die folgenden Beispiele vereinfacht. Der Fehler ist aber der Selbe.

Das folgende Beispiel funktioniert:

Code:
TYPE Punkt
 x AS SINGLE
 y AS SINGLE
END TYPE

DIM Masse(5) AS Punkt
m1=1
Masse(m1).x = 400
END


Wenn ich nun den Befehl "Masse(m1).x = 400" in einem Unterprogramm ausführen will, wird er markiert und ich bekomme folgende Fehlermeldung:

"Bezeichner können keinen Punkt enthalten"

Mein Unterprogramm hatte die folgende Form:

Code:
DECLARE SUB Wechselwirkung (m1 AS INTEGER)

TYPE Punkt
 x AS SINGLE
 y AS SINGLE
END TYPE

DIM Masse(5) AS Punkt
Wechselwirkung 1
END

SUB Wechselwirkung (m1 AS INTEGER)
Masse(m1).x = 400
END SUB


Das Programm sollte jetzt im Grunde genau dasselbe machen wie im oberen Beispiel, nämlich die Variable Masse(1).x auf 400 setzen. Ich kann mir die Fehlermeldung nicht erklären. Was ein Bezeichner ist, weiß ich nicht genau. Im Qb-Kochbuch wurde der Begriff zwar verwendet, aber nicht erklärt.

Was müsste an dem Unterprogramm verändert werden damit es funktioniert?

Gruß
Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 23.02.2007, 09:06    Titel: Antworten mit Zitat

Der Fehler: Deine Variable "Masse" ist nicht global. Aber mittels
Code:
DIM SHARED Masse(5) AS Punkt

lässt sich das bereits korrigieren.

Ansonsten noch zwei Links aus meiner Sammlung:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/SUB-Unterprogramme.html

=> Ausführliches Tutorial zu SUB, wo auch SHARED und das ganze Drumherum zum Thema Sichtbarkeiten beschrieben wird.

http://www.dreael.ch/Deutsch/Download/Billard-Simulation.html

=> geht von der Thematik in eine ähnliche Richtung und ist übrigens auch unter Zuhilfenahme von TYPE programmiert, so dass Du dort das eine oder andere abschauen kannst.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MichaelO



Anmeldungsdatum: 20.02.2007
Beiträge: 2

BeitragVerfasst am: 23.02.2007, 14:44    Titel: Antworten mit Zitat

Hallo

Vielen Dank, jetzt kann ich endlich weiter programmieren happy .

Deine Seite habe ich mir angesehen, da steht das mit SHARED auch nochmal gut erklärt.

Globale Variablen kenne ich von Java. Ich dachte, das wäre bei QB nicht nötig. Jetzt weiß ich ja bescheid.

Gruß
Michael
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 QBasic. 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