Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
roteo
Anmeldungsdatum: 31.07.2014 Beiträge: 15
|
Verfasst am: 31.07.2014, 14:33 Titel: Fehler: Default types or suffixes are only valid in -lang .. |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 31.07.2014, 14:54 Titel: |
|
|
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 |
|
 |
roteo
Anmeldungsdatum: 31.07.2014 Beiträge: 15
|
Verfasst am: 31.07.2014, 15:33 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 31.07.2014, 15:47 Titel: |
|
|
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 |
|
 |
roteo
Anmeldungsdatum: 31.07.2014 Beiträge: 15
|
Verfasst am: 31.07.2014, 15:55 Titel: |
|
|
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 |
|
 |
roteo
Anmeldungsdatum: 31.07.2014 Beiträge: 15
|
Verfasst am: 31.07.2014, 16:13 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 31.07.2014, 16:44 Titel: |
|
|
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.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
roteo
Anmeldungsdatum: 31.07.2014 Beiträge: 15
|
Verfasst am: 31.07.2014, 22:27 Titel: |
|
|
Danke, nemored, für deine Antwort.
Gruß, Roteo |
|
Nach oben |
|
 |
|