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:

[gelöst] Mehrere Unverständliche Fehler:

 
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
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.11.2007, 14:23    Titel: [gelöst] Mehrere Unverständliche Fehler: Antworten mit Zitat

Schon wieder ich...
grinsen
Ich habe hier folgenden Code:
Code:
Dim MenuWin As Win
      With MenuWin
         .WinStyle = "Menu"
         .Text = MenuText
         .PosX = 0
         .PosY = 0
         .XLength = 0
         .YLength = 0
         .Filling = Chr(000)
         .Frame = CHR(194) + CHR(196) + CHR(194) + CHR(179) + CHR(192) + Chr(217) 'entspr. Frame3
         .ForeColour = 4
         .BackColour = 11
      End With
      ItemNumbs = InitMenu (FirstLetterX, FirstLetterY, MenuWin)
   
   Task = Task + GetItem(CurPosY, CurPosX, FirstLetterX, FirstLetterY, MenuWin.PosX, MenuWin.PosY, MenuWin.XLength, MenuWin.YLength)

Der UDT Win ist natürlich im Programmkopf schon deklariert.

Warum bekomme ich da einen

Zitat:
FbTemp.bas(189) error 41: Variable not declared, MenuWin in 'Task = Task + GetItem(CurPosY, CurPosX, FirstLetterX, FirstLetterY, MenuWin.PosX, MenuWin.PosY, MenuWin.XLength, MenuWin.YLength)'
?
Ist die Übergabe von UDT-Records an Funktionen nicht erlaubt?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.


Zuletzt bearbeitet von Elektronix am 14.11.2007, 15:18, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 13.11.2007, 14:52    Titel: Antworten mit Zitat

Keine Ahnung wo der Fehler liegt, aber UDTs darfst du schon übergeben.
Damit ich es compilieren kann, habe ich vorne einfach mal schnell ein paar Definitionen eingefügt:
Code:
TYPE Win
  AS STRING WinStyle, Text, Filling, Frame
  AS INTEGER PosX, PosY, XLength, YLength, ForeColour, BackColour
END TYPE

DIM AS STRING MenuText
DIM AS INTEGER ItemNumbs, FirstLetterX, FirstletterY, CurPosX, CurPosY, Task

FUNCTION InitMenu(X AS INTEGER, Y AS INTEGER, MWin AS Win) AS INTEGER
  RETURN 0
END FUNCTION
FUNCTION GetItem(CurPosY AS INTEGER, CurPosX AS INTEGER, FirstLetterX AS INTEGER, FirstLetterY AS INTEGER,_
     WinPosX AS INTEGER, WinPosY AS INTEGER, WinXLength AS INTEGER, WinYLength AS INTEGER) AS INTEGER
  RETURN 0
END FUNCTION

' es folgt dein geposteter Code

Damit compilert es bei mir fehlerfrei. Ich vermute, der Fehler liegt irgendwo im nicht geposteten Teil.
_________________
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
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.11.2007, 15:02    Titel: Antworten mit Zitat

Das kann nicht sein, denn wenn ich die Task-Zeile auskommentiere, läuft das Programm einwandfrei.

Jetzt habe ich noch einen merkwürdigen Fehler entdeckt, ganz oben im Programmkopf:

Code:
Const Frame1 As String = CHR(201) + CHR(205) + CHR(187) + CHR(186) + CHR(200) + CHR(188) + CHR(206) + Chr(203) + CHR(204) + Chr(202) + Chr(185)'Doppelter Rahmen
Const Frame2 As String = CHR(218) + CHR(196) + CHR(191) + CHR(179) + CHR(192) + CHR(217) + CHR(197) + CHR(194) + CHR(195) + Chr(193) + Chr(180)'Einfacher Rahmen
Const Frame3 As String = CHR(194) + CHR(196) + CHR(194) + CHR(179) + CHR(192) + Chr(217)'Einfacher Rahmen mit Anbindung an Menüzeile

'                        >>>>>>               vvvvvv      <<<<<      happyhappyhappy
Const Frame4 As String = Chr(62) + Chr(62) + Chr (118) + Chr (118) + Chr(60) + Chr(94)
Const Frame5 As String = Chr(16) + Chr(31) + Chr(17) + Chr(30)'Gleich wie Frame4, nur gefüllte Pfeile
Const Frame6 As String = Chr(250) +  Chr(250) + Chr(250) + Chr(250) + Chr(250) + Chr(250)'Gepunkteter Rahmen
Const Frame7 As String = Chr(219) + Chr(219) + Chr(219) + Chr(219) + Chr(219) + Chr(219)'Rahmen aus vollen Matrixfeldern
Const Fillings As String = Chr(000) + Chr(219) + Chr(176) + Chr(177) + Chr(178) 'Verschieden dichte Füllraster


Das Const Fillings (...) verursacht:
Zitat:
FbTemp.bas(13) error 11: Expected constant, Fillings in 'Const Fillings As String = Chr(000) + Chr(219) + Chr(176) + Chr(177) + Chr(178) 'Verschieden dichte Füllraster'

Wenn ich Fillings nur mit DIM deklariere, funktioniert es bestens. Liegt hier ein Bug im Compiler?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.11.2007, 16:04    Titel: Antworten mit Zitat

Ich habe das ganze Prog mal da ->

http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=267
hochgeladen und die Fehler in den Kommentaren vermerkt.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 13.11.2007, 17:12    Titel: Antworten mit Zitat

Wegen des CONST Fillings: Vielleicht mag er in der Konstante das Chr(000) nicht? Nur eine Vermutung.

Nachtrag: Was hast du für eine Compiler-Version? Mit 0.18.2 (Linux) kann ich das Programm fehlerlos compilieren. neutral
(übrigens auch mit CONST Fillings, wenn ich das Chr(000) rausnehme)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.


Zuletzt bearbeitet von nemored am 13.11.2007, 17:17, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.11.2007, 17:17    Titel: Antworten mit Zitat

Meine Version ist 0.18.2-Windows, compiliert mit -lang fb.

Das mit dem CHR(000) mag er tatsächlich nicht. Ich habe stattdessen " " eingegeben, jetzt akzeptiert er auch die Const.

Aber das zweite Problem ist dadurch noch nicht gelöst missbilligen
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.


Zuletzt bearbeitet von Elektronix am 13.11.2007, 17:22, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 13.11.2007, 17:20    Titel: Antworten mit Zitat

Sehr seltsam neutral

Das Programm funktioniert zwar nicht so ganz richtig (erstes Menü lässt sich aufklappen, danach geht es nicht weiter), aber compilieren kann ich es ohne Fehler. Vielleicht doch ein Compiler-Bug.
_________________
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
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.11.2007, 17:25    Titel: Antworten mit Zitat

Bis jetzt soll es auch noch nicht weitergehen. Das ist schon richtig. Ich wollte erstmal die Bugs beheben, bevor ich weitermache.

Habe jetzt verschiedene Möglichkeiten durchprobiert mit FBEdit und FBIDE, immer das selbe Resultat... missbilligen Vielleicht muß ich mir den FBC nochmal saugen...

[EDIT] Neuinstallieren hat auch nix gebracht. missbilligen Och Mööönsch
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.


Zuletzt bearbeitet von Elektronix am 13.11.2007, 17:43, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 13.11.2007, 17:43    Titel: Antworten mit Zitat

Hast du schon das Compilieren direkt mit der Konsole probiert?
_________________
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
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.11.2007, 17:49    Titel: Antworten mit Zitat

Aha, so funktioniert es. Aber aus der IDE heraus kann ich das nicht compilieren. Was isn das??? geschockt
Das ist nämlich sehr umständlich, das zum Compilieren immer die Consloe zu starten...
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 13.11.2007, 17:50    Titel: Antworten mit Zitat

Code:
Chr(0)
ist in der Tat keine Konstante. Also ein echter Compilerbug, der hat auch nichts mit der IDE zutun zwinkern

Und
Code:
Chr(0)
!=
Code:
" "
zwinkern
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.11.2007, 17:54    Titel: Antworten mit Zitat

Weiß ich. Läßt sich aber bei mir problemlos ersetzen.

Mein Hauptproblem ist das Task = Task + GetItem()-Dings. Das läßt sich komischerweise nur mit der Kommandozeile compilieren, aus der IDE heraus gibt das den Fehler. Muß wohl noch ein Bug in der IDE sein...? Aber bei FBEdit und FBIDE habe ich immer das gleiche Ergebnis. Haben beide IDEs den gleichen Bug?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 13.11.2007, 22:04    Titel: Antworten mit Zitat

Elektronix hat Folgendes geschrieben:
Meine Version ist 0.18.2-Windows, compiliert mit -lang fb.
Das ist ja interessant, wenn eine neue Compiler-Version herauskommt, mache ich mich relativ schnell daran, die neuen Compiler-Optionen zu übersetzen. Das Ergebnis ist immer hier zu finden.. happy
Bei Version 0.18.2 gibt es die Option -lang fb gar nicht mehr, das könnte bedeuten, daß die IDE eine Fehlermeldung erhält und auswertet, die in der Befehlszeile nicht angezeigt wird ??
Ich schau mir den Code aber noch mal an, vllt ist ja niemand schneller grinsen
[Edit]
Natürlich mußte ich erst mal die Task=.. Zeile wieder entkommentieren mit dem Kopf durch die Mauer wollen happy
FBEdit 1.0.5.7 hat Folgendes geschrieben:
D:\Sprachen\FreeBASIC\fbc -s console "Elektronix.bas"

Make done
(unnötig, zu erwähnen, daß ich FB 0.18.2 verwende happy)
Wenn du MenuWin innerhalb der If-Anweisung Dim'st, dann gilt es auch nur innerhalb der If-Anweisung, wenn du die Dim-Anweisung in den Function-Kopf verschiebst, ist dieses Problem beseitigt happy
42
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



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

BeitragVerfasst am: 13.11.2007, 22:31    Titel: Antworten mit Zitat

Stimmt, ich hatte auch übersehen, den Kommentar vor der Task-Deklaration zu entfernen. Mit der Verschiebung der DIM-Anweisung, klappt es aber wieder.
_________________
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
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 14.11.2007, 12:34    Titel: Antworten mit Zitat

Also, ist schon merkwürdig, daß der Task-Fehler nur bei der IDE auftritt, nicht bei der Commandozeile. Ist aber jetzt mal egal, programmtechnisch macht es auch mehr Sinn, die Task-Funktion innerhalb der IF-Anweisung zu setzen. Die DIM vor die If-Klausel zu setzen, macht in diesem Fall keinen Sinn, weil gerade das DIMmen bedingt sein soll.

Die -lang fb-Option hatte ich noch von der alten Compilerversion drin stehen gehabt (bei FBEdit). Ich dachte, das wäre einfach nur die Defaulteinstellung und hätte keine Auswirkungen, darum hab ich's einfach stehen gelassen.
Hab' immer noch drin stehen, aber jetzt funktioniert auch wieder alles.

Liebe Leute, danke, danke! Ihr habt mir sehr geholfen.
Danke auch an alle, die keine blöden Kommentare gemacht haben... lachen
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
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