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:

Fehler: Default types or suffixes are only valid in -lang ..

 
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
roteo



Anmeldungsdatum: 31.07.2014
Beiträge: 15

BeitragVerfasst am: 31.07.2014, 14:33    Titel: Fehler: Default types or suffixes are only valid in -lang .. Antworten mit Zitat

Hallo zusammen,

ich bin gerade dabei, mir ein wenig FreeBasic anzusehen und probiere ein wenig aus. Dabei erhalte ich die folgende Compilermeldung:

Default types or suffixes are only valid in -lang deprecated or fblite or qb in 'function yesno(message as string)'

Was mache ich da falsch? Ich habe danach auch eine Liste gesucht, in der die Fehlermeldungen erklärt werden, habe aber keine gefunden. Gibt es so etwas?

Danke für eure Hilfe.

Gruß, Roteo

Editiert durch Moderator: Ursprünglichen Betreff "Bedeutung einer Fehlermeldung" durch die Fehlermeldung selbst ersetzt, damit andere Nutzer mit demselben Problem die Lösung leichter finden können. (Sebastian)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 31.07.2014, 14:54    Titel: Antworten mit Zitat

Zitat:
Ich habe danach auch eine Liste gesucht, in der die Fehlermeldungen erklärt werden, habe aber keine gefunden. Gibt es so etwas?

Leider noch nicht; steht auf meiner TODO-Liste, aber die ist leider ziemlich lang ...

In FreeBASIC muss jede Variable explizit deklariert werden. Das gilt auch bei der Verwendung von SUB oder FUNCTION, bzw, in deinem Fall für den Rückgabewert der Funktion. Richtig ist z. B.
Code:
function yesno(message as string) as integer
  ' ...
  return -1 ' Datentyp INTEGER, wie oben deklariert
end function

_________________
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
roteo



Anmeldungsdatum: 31.07.2014
Beiträge: 15

BeitragVerfasst am: 31.07.2014, 15:33    Titel: Antworten mit Zitat

Hallo nemored,

danke für deine Antwort. Das hatte ich auch versucht, zumal ich es auch von Pascal so kenne. Aber wenn ich das tue, meckert er wegen doppelter Deklaration, da die function ja ganz schon deklariert wurde.

Gruß Roteo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 31.07.2014, 15:47    Titel: Antworten mit Zitat

Was genau hast du denn geschrieben? Die DECLARE-Zeile muss (fast) genauso aussehen wie der Kopf der Funktion, bis auf das DECLARE am Anfang. Insbesondere muss auch beide Male derselbe Datentyp verwendet werden.
Code:
declare function yesno(message as string) as integer

print yesno("Programm beenden?")

function yesno(message as string) as integer
  ' ...
  return -1
end function

Wenn das nicht weiterhilft, poste am besten einmal ein Minimalbeispiel, bei dem es Probleme gibt.

Falls ich das jetzt falsch verstehe und du die Funktion yesno mehrmals für verschiedene Parameter bereitstellen möchtest, brauchst du OVERLOAD.
_________________
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
roteo



Anmeldungsdatum: 31.07.2014
Beiträge: 15

BeitragVerfasst am: 31.07.2014, 15:55    Titel: Antworten mit Zitat

Das hier ist die Deklarationszeile:

declare function yesno(message as string) as integer

und das ist der Kopf der function:

function yesno(message as string)

Wenn ich das so:

function yesno(message as string) as integer

mache, bekomme ich

Duplicated definition, at parameter 1 (message) of YESNO() in 'function yesno(message as string) as integer'

Gruß, Roteo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
roteo



Anmeldungsdatum: 31.07.2014
Beiträge: 15

BeitragVerfasst am: 31.07.2014, 16:13    Titel: Antworten mit Zitat

Ich habe den Fehler gefunden... sehr seltsam...

Ich habe noch eine sub mit Namen "message(...)"

Der Parameter der function yesno heißt ja auch message. Nachdem ich ihn in "text" umbenannt hatte, war der Fehler weg. Scheinbar klappt da was mit der Variablenzuweisung nicht richtig.

Gruß Roteo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 31.07.2014, 16:44    Titel: Antworten mit Zitat

Eine Variable (auch ein Prozedur-Parameter) kann nicht genauso heißen wie eine bereits deklarierte Prozedur. Innerhalb der DECLARE-Zeile wird das allerdings ignoriert - da muss auch überhaupt kein Parametername angegeben werden, nur der Parametertyp. Man gibt meistens trotzdem einen Namen an, um es lesbar zu gestalten.

Dass der Compiler in deiner ersten Version nicht wegen des Parameternamens gemeckert hat, liegt daran, dass er noch mit dem Meckern über den fehlenden Rückgabetyp beschäftigt war. grinsen
_________________
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
roteo



Anmeldungsdatum: 31.07.2014
Beiträge: 15

BeitragVerfasst am: 31.07.2014, 22:27    Titel: Antworten mit Zitat

Danke, nemored, für deine Antwort. grinsen

Gruß, Roteo
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