 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 13.11.2007, 14:23 Titel: [gelöst] Mehrere Unverständliche Fehler: |
|
|
Schon wieder ich...
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 13.11.2007, 14:52 Titel: |
|
|
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 13.11.2007, 15:02 Titel: |
|
|
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 <<<<<  
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 13.11.2007, 17:12 Titel: |
|
|
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.
(ü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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 13.11.2007, 17:17 Titel: |
|
|
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  _________________ 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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 13.11.2007, 17:20 Titel: |
|
|
Sehr seltsam
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 13.11.2007, 17:25 Titel: |
|
|
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... Vielleicht muß ich mir den FBC nochmal saugen...
[EDIT] Neuinstallieren hat auch nix gebracht. 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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 13.11.2007, 17:43 Titel: |
|
|
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 13.11.2007, 17:49 Titel: |
|
|
Aha, so funktioniert es. Aber aus der IDE heraus kann ich das nicht compilieren. Was isn das???
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 13.11.2007, 17:54 Titel: |
|
|
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 13.11.2007, 22:04 Titel: |
|
|
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..
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
[Edit]
Natürlich mußte ich erst mal die Task=.. Zeile wieder entkommentieren
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 )
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
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 13.11.2007, 22:31 Titel: |
|
|
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 14.11.2007, 12:34 Titel: |
|
|
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...  _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
|
|
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.
|
|