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:

Funktionen in -lang qb

 
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
funkmaster5000



Anmeldungsdatum: 15.02.2013
Beiträge: 2

BeitragVerfasst am: 15.02.2013, 10:20    Titel: Funktionen in -lang qb Antworten mit Zitat

Hallo Community.

Derzeit bereitet mir folgendes Problem Kopfzerbrechen:
Ich habe ein älteres Programm in QBasic, das ich gerne mit FreeBasic und dem Parameter -lang qb kompilieren möchte.

Das hat bislang wunderbar geklappt, allerdings habe ich jetzt das QBasic Programm um eine Funktion ergänzt und jetzt kompiliert es nicht mehr. Deklariert wurde sie mit
Code:
DECLARE FUNCTION GenRandNum(min AS INTEGER,max AS INTEGER) AS INTEGER


Rufe ich sie jetzt im Programm auf mit Zufallszahl% = GenRandNum(1,2), hält der Compiler sie für ein Array und beschwert sich, dass es nicht dimensioniert wurde. Gibt es in Bezug auf FreeBasic etwas zu beachten? In QB funktioniert das erzeugen der Exe wunderbar. Danke im Voraus!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 15.02.2013, 11:06    Titel: Antworten mit Zitat

Hi,
leider kann ich das Problem ohne weitere Angaben nicht nachvollziehen.
Code:
Declare Function GenRandNum(min As Integer,max As Integer) As Integer
Randomize
Zufallszahl% = GenRandNum(1,2)
? Zufallszahl%
Sleep

Function GenRandNum(min As Integer,max As Integer) As Integer
  GenRandNum = Rnd*max+min
End Function
So funktioniert es (-lang qb) bei mir ohne Fehlermeldung.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
funkmaster5000



Anmeldungsdatum: 15.02.2013
Beiträge: 2

BeitragVerfasst am: 15.02.2013, 13:57    Titel: Antworten mit Zitat

Danke für die Antwort, ich probiere es zu Hause nochmal aus. Gibt es eine Beschränkung, in welcher Reihenfolge Types, Functions und Subs deklariert werden müssen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 15.02.2013, 14:24    Titel: Antworten mit Zitat

Grob gesagt,
bevor ich eine Variable, Sub oder Function benutze muss sie dem Compiler bekannt (dimensioniert bzw. declariert) sein.


PS.: So gehts als -lang qb auch grinsen
Code:
Declare Function GenRandNum%(min% ,max%)
Randomize
Zufallszahl% = GenRandNum(1,2)
? Zufallszahl%
Sleep

Function GenRandNum%(min% ,max%)
  GenRandNum% = Rnd*max%+min%
End Function

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



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

BeitragVerfasst am: 15.02.2013, 14:27    Titel: Antworten mit Zitat

Es muss immer so deklariert werden, dass sie dem Compiler bei einem Zugriff bereits bekannt sind. Z. B. muss die DECLARE-Zeile kommen, bevor die Prozedur das erste Mal verwendet wird, oder wenn TYPE A innerhalb von TYPE B als Element verwendet werden soll, muss TYPE A auch vor TYPE B deklariert werden. Oder wenn ein TYPE als Element einer Funktion auftritt, muss es auch vor der Funktion deklariert werden.

Kurz gesagt, der Compiler lernt die Elemente in der Reihenfolge kennen, in der sie im Quelltext aufgeführt werden; und er kann nur Elemente verwenden, die er zuvor kennengelernt hat.
_________________
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