Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 07.11.2022, 11:03 Titel: Versteh die Fehlermeldung nicht |
|
|
Hallo,
nach langer Zeit habe ich wieder ein Problem: ich bekomme eine Fehlermeldung in einer SUB, die ich hier aus dem Forum kopiert habe und die seit damals (das ist jetzt ein paar Monate und ca.40 Programme her).
Diese SUB verwende ich in jedem Programm zum Einstellen der Schriftgröße und -art in der Console. Sie wird von einer SUB aufgerufen mit der ich die Größe der Console und ihre Position einstelle.
Die Fehlermeldung des Compilers lautet:
""F:\FreeBASIC\./fbc" "F:\SVS\Programtst\m03Wartung.bas" "
Build-Fehler:
F:\SVS\Programtst\sippadmin.bi(134) error 14: Expected identifier, found 'CONSOLE_FONT_INFOEX' in 'Dim As CONSOLE_FONT_INFOEX info'
F:\SVS\Programtst\sippadmin.bi(135) error 41: Variable not declared, info in 'With info'
F:\SVS\Programtst\sippadmin.bi(136) error 264: Symbol not a CLASS, ENUM, TYPE or UNION type, before 'cbSize' in '.cbSize = Sizeof(info)'
F:\SVS\Programtst\sippadmin.bi(137) error 264: Symbol not a CLASS, ENUM, TYPE or UNION type, before 'dwFontSize' in '.dwFontSize.X = w'
F:\SVS\Programtst\sippadmin.bi(138) error 264: Symbol not a CLASS, ENUM, TYPE or UNION type, before 'dwFontSize' in '.dwFontSize.Y = h'
F:\SVS\Programtst\sippadmin.bi(139) error 264: Symbol not a CLASS, ENUM, TYPE or UNION type, before 'FaceName' in '.FaceName = ftype'
F:\SVS\Programtst\sippadmin.bi(141) error 41: Variable not declared, SetCurrentConsoleFontEx in 'SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, @info)'
Ich verstehe einfach nicht was diese Meldung aussagt. Hier ist auch die SUB:
Code: | ' Schriftart und Größe
' w ... Breite / h ... Höhe / ftype ... Schriftart
' (für Rasterschriftart w und h nötig, sonst nur h, w=0)
SetWindowPos(GetConsoleWindow, HWND_TOP, 20, 20, 500, 300, 0)
'
Sub changefontsize(w As Long, h As Long, ftype As String = "")
Dim As CONSOLE_FONT_INFOEX info
With info
.cbSize = Sizeof(info)
.dwFontSize.X = w
.dwFontSize.Y = h
.FaceName = ftype
End With
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, @info)
End SUB |
Dazu muss ich ergänzen, dass ich an dieser Sache rein gar nichts verändert habe. Der Fehler muss also von wo anders her kommen. Ich habe aber keine Idee wo ich suchen soll. _________________ Grüße
kilix |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1261 Wohnort: Ruhrpott
|
Verfasst am: 07.11.2022, 15:58 Titel: |
|
|
Die Fehlermeldung bedeutet, daß CONSOLE_FONT_INFOEX nicht definiert wurde. Vermutlich hast du irgendwo vorher im Programm (versehentlich) eine #Include oder #Declare - Anweisung auskommentiert oder gelöscht.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 07.11.2022, 16:05 Titel: |
|
|
Das hatte ich mir schon angesehen. Diese SUB steht in einer *.bi und dort steht als erste Zeilen:
Zitat: |
#PRAGMA ONCE 'veranlasst die Quelldatei, in der das Pragma verwendet wird, sich
' SO ZU VERHALTEN, ALS OB SIE MIT #INCLUDE ONCE EINGEBUNDEN WURDE.
'
#INCLUDE ONCE "vbcompat.bi" ' Datumsfunktionen
#INCLUDE ONCE "windows.bi" ' Programmierschnittstelle für Windows-Anwendungen
#INCLUDE ONCE "file.bi" ' Die Dateifunktionen aktivieren[/code]
|
Wenn ich mich recht erinnere muss dafür windows.bi inkludiert werden und bei "ONCE" muss das in den Programmen nict nochmals stehen.
EDIT: eine Ergänzung: die exe-Dateien funktionieren! Ich schreibe das weil ich dachte, dass die bi-Datei beschädigt sein könnte aber da würden die exe-Programme auch nicht laufen.
EDIT2: hatte den Hinweis auf die DECLARE-Anweisung übersehen. Dieses steht auch in der bi-Datei ganz oben:
Code: |
DECLARE sub changefontsize(w As Long, h As Long, ftype As String = "")
|
_________________ Grüße
kilix |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 07.11.2022, 20:11 Titel: |
|
|
Ich glaube ich habe das Problem behoben! Ich habe einfach die Zip-Datei, die ich noch vom Download von FreeBasic und Compiler hatte über das installierte FreeBasic expandiert und jetzt ließen sich die ersten Programme wieder kompilieren.
Daher nehme ich an, dass doch eine Datei zerstört oder beschädigt war. Ich werde ja sehen wie es weiter geht. _________________ Grüße
kilix |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 09.11.2022, 19:09 Titel: |
|
|
Leider ist der Fehler nicht behoben bzw. gibt es noch einen anderen:
1) die obige Fehlermeldung kommt beim Kompilieren nicht mehr
2) habe an einem Programm einige Änderungen gemacht und Fehler beseitigt. Im Compiler wird es anscheinend richtig kompiliert, es gibt keine Fehlermeldung mehr. Aber das Programm öffnet gerade die Console und schwirrt dann ab, die Console schließt sich wieder.
Die Meldung im Compiler ist nach dem Kompilieren:
""F:\FreeBASIC\./fbc" "F:\SVS\Programtst\5AnwesenhtTST.bas" -s console"
Compilation ausgeführt _________________ Grüße
kilix |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 10.11.2022, 11:32 Titel: |
|
|
ich weiß nicht mehr was ich machen soll.
ich habe FreeBasic komplett entfernt und neu Installiert. Alte Programme, die ich in letzter Zeit nicht ändern wollte funktionieren, hier sind die exe-Dateien in Ordnung.
Wenn ich aber ein BAS-Programm neu kompilieren will (egal ob mit Änderung oder ohne) das funktioniert es nicht mehr.
Der Compiler zeigt, dass richtig compiliert wurde und es öffnet sich die richtige Console abder diese schließt sich sofort wieder. Es läuft nichts.
Ich dachte ob der Fehler (durch was weiß ich nicht) in der BI-Datei meines Projekts liegen könnte und habe eine alte Version recovered aber auch das brachte nichts.
Wenn ich leine Lösung finde ist FreeBasic für mich leider tot! Dann iist aber leider mein Projekt wahrscheinlich auch gestorben denn ich weiß nicht ob ich es mit einer anderen Sprache neu probiere. Allerdings hat mich Python neugierig gemacht denn da könnte ich gleich unter Windows programmieren. _________________ Grüße
kilix |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1261 Wohnort: Ruhrpott
|
Verfasst am: 11.11.2022, 11:33 Titel: |
|
|
Ohne deinen Quellcode kann ich da leider nicht viel zu sagen.
Welchen Editor benutzt du? Deiner Beschreibung nach könnte der Fehler auch in dessen Konfiguration liegen. Versuch mal, diesen kleinen Zweizeiler zu kompilieren und laufen zu lassen:
Code: | Print "Hallo Welt"
Sleep |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 11.11.2022, 12:55 Titel: |
|
|
dieser Code ließ sich kompilieren und aufrufen.
Die aktuelle Situation sieht so aus:
- ich habe die Verzeichnisse \freebasic und \mein projekt vom Laptop (auf dem der Fehler auftrat) und vom Desktop (auf dem ich vor 2 Wochen problemlos gearbeitet habe) auf USB-Stick kopiert
- die Verzeichnisse \freebasic und \mein projekt vom Laptop Laptop gelöscht und die Kopien vom Desktop auf den Laptop kopiert.
- Programme, die ich vorher auf dem Laptop mit dem Compiler nicht neu zu kompilieren versuchte scheinen zu laufen (scheinen weil ich nur einzelne probiert habe). Programme die ich kompilieren wollte, die aber dann bei Aufrufen nach dem Öffnen der Console sofort abstürzten stürzen weiterhin ab.
- aufgefallen ist mir, dass ein Programm das am Desktop schon fertig lief auf den Laptop kopiert genau so abstürzt wie die anderen.
Ich habe es mit den Einstellungen der originalen Datei wxFBE.xmi (vom Desktop) und mit anderen Einstellungen die ich am Laptop gespeichert habe probiert.
So wie es aussieht muss ich jetzt alle Programme die ich geschrieben habe durchtest und schauen ob sie laufen oder nicht. Nur was ich mit den Programmen machen die jetzt nicht mehr laufen obwohl sie bereits sehr gut liefen weiß ich nicht.
Ich muss sagen, dass meine Stimmung FreeBasic betreffend ziemlich am Tiefstpunkt ist. Denn so wie es vor ein paar Monaten war als ein ähnlicher Fehler wahrscheinlich wegen eines Fehlers in einer speziellen Datei auftrat ist es diesmal nicht weil die betroffenen Programmen mit unterschiedlichen Dateien arbeiten die auch in anderen Programmen nicht zu Fehlern führen. _________________ Grüße
kilix |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1261 Wohnort: Ruhrpott
|
Verfasst am: 11.11.2022, 18:41 Titel: |
|
|
Dann solltest du dir jetzt eins der abstürzenden Programme vornehmen und -von vorne nach hinten- durch Einfügen von SLEEP - Befehlen versuchen, die Stelle zu finden, an der das Programm abstürzt. Diese Methode führt meistens recht schnell zum Ziel.
Außerdem solltest du einmal versuchen, das Programm mit "fbc -s console -exx -w pedantic" zu kompilieren, eventuell spuckt der Compiler dann einige zusätzliche aufschlußreiche Meldungen aus.
Wenn dein Programm keine Geheimnisse enthält, könntest du mir den Quelltext auch posten (an meine eMail-Adresse als Dateianhang), dann würde ich es mir einmal ansehen. Zumindest könnte man dann feststellen, ob der Fehler im Programm selber liegt oder in der Rechnerkofiguration zu suchen ist. Ich hatte sowas ähnliches schon einmal durch einen defekten Grafiktreiber.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4679 Wohnort: ~/
|
Verfasst am: 11.11.2022, 20:44 Titel: |
|
|
Nur einmal so ein anderer Gedanke: Passen die verwendeten Programmteile mit der Compiler-Plattform (32bit vs. 64bit) zusammen? Wenn sich ein Programm früher fehlerfrei compilieren und ausführen ließ und es jetzt beim Ausführen zu Abbrüchen kommt, könnte das auch mit falsch verwendeten INTEGER-Variablen zusammenhängen - die sind auf beiden Plattformen unterschiedlich groß.
Ich würde auch auf jeden Fall mal versuchen, das mit "fbc -s console -exx -w pedantic" compilierte Programm direkt aus der Eingabeaufforderung heraus aufzurufen, damit gegebenenfalls auftretende Runtime-Fehler angezeigt werden. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 11.11.2022, 20:45 Titel: |
|
|
ich habe das Problem gelöst! Es sind 2 Programme die nicht mehr funktionierten. Das eine war - bis auf weitere Tests fertig und beim zweiten war ich gerade dabei Änderungen vorzunehmen. Warum dann auch die zuvor funktionierende Version keine Probleme machte aber dann schon weiß ich nicht. Auf jeden Fall habe ich diesen Programm schrittweise neu geschrieben aber viele alte Teile kopiert. Das funktioniert jetzt - wenn es auch noch nicht ganz macht was ich will aber das ist nur eine Fehler im Code den ich noch finden werde. Dann werde ich mir das andere Programm noch ansehen. Aber ich glaube nicht, dass es gröbere Probleme damit geben wird.
Im Grunde ist mir jetzt leichter weil die viele Arbeit die doch in diesem Projekt steckt nicht umsonst war.
Was da eigentlich passiert ist kann ich mir nicht vorstellen. Nachdem aber die gröbsten Probleme beseitigt waren nachdem ich das ganze Projekt vom Desktop auf den Laptop kopiert habe muss etwas in Dateien von Freebasic bzw. dem Kompiler zerstört gewesen sein. Dieser Fehler hat dann wahrscheinlich beim Kompilieren zumindest dieses eine Programm irgendwie beschädigt. Denn andere Programme die ich am Laptop gegenüber dem Desktop geändert hatte konnte ich in der Version vom Laptop übernehmen.
Auf jeden Fall Danke, dass du dran geblieben bist und versucht hast eine Lösung zu finden! _________________ Grüße
kilix |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 11.11.2022, 21:07 Titel: |
|
|
@nemored,
ich kann das leider nicht mehr testen weil ich das kritische Programm umgeschrieben habe (es hatte einen groben Fehler und außerdem hab ich die Bedienung verbessert). Jetzt läuft es, auch wenn es noch nicht ganz das macht was es soll, aber das ist nur ein normaler Fehler im Code. Den werde ich morgen sicher schnell finden, heute bin ich zu müde dafür. _________________ Grüße
kilix |
|
Nach oben |
|
|
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 12.11.2022, 15:28 Titel: |
|
|
Heute früh hatte ich noch eine Idee was die Ursache für mein Problem gewesen sein könnte: ich hatte etwa zur gleichen Zeit, eigentlich schon etwas früher, Probleme mit dem Windows-Explorer, der beim Kopieren, verschieben und umbenennen von Dateien von Zeit zu Zeit aber immer wieder das Fenster schloss und weg war.
Ich habe dann sfc /scannow gefahren und dabei wurden defekte Dateien festgestellt und korrigiert. Es könnte doch sein, dass das Auswirkung auf den Compiler gehabt haben könnte. _________________ Grüße
kilix |
|
Nach oben |
|
|
|