Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
George
Anmeldungsdatum: 21.02.2010 Beiträge: 13 Wohnort: Bremen
|
Verfasst am: 21.02.2010, 20:45 Titel: Plötzlich lässt sich die -.exe nicht mehr ausführen |
|
|
Guten Tag, zusammen!
Ich arbeite seit ein paar Wochen mit FreeBASIC und bin eigentlich eher erfahren im "alten" QBASIC. Aber weil der DOS-Interpreter auf meinem Rechner nicht mehr läuft, muss ich jetzt wohl auf etwas "Moderneres" umsteigen und meine Spielprogramme neu auflegen.
Jetzt hänge ich fest! Ich habe einen Programmcode geschrieben, gespeichert und compiliert und dann ausgeführt - alles ohne Probleme. Jetzt wollte ich nach und nach die einzelnen Programmfeatures ergänzen und plötzlich lässt sich das Programm zwar noch ohne Fehlermeldung compilieren, aber es kommt nicht mehr zur Ausführung (jedenfalls nicht sichtbar). Nach dem letzten fehlerfreien Probelauf habe ich nur ein paar "Draw string.." Anweisungen ergänzt. Davon habe ich vorher schon dutzende eingesetzt. An der Syntax kann es m. E. nicht liegen. Einen "normalen" Laufzeitfehler (so etwas wie eine Endlosschleife) kann ich auch ausschließen.
Ich arbeite mit der FBIde, dem vor 2 Wochen downgeloadeten Compiler aus dem FB-Portal, mit Windows XP und Office 2000. (Das letzte erwähne ich, weil ich zwischen den Probeläufen eine ppt-Datei gestartet habe - aus anderen Gründen - und in meinem Programm mit dem Befehl "sreenres 1200,900,32,2" arbeite. - Also vielleicht ein Problem der Grafikwiedergabe(?)). Selbst nach dem Booten des Rechners, nach dem Neu-Installieren der IDE und des Compilers, läuft es immer noch nicht. Es sind inzwischen 225 Lines of Code - was ja eigentlich auch kein Problem sein dürfte.
Ich weiß nicht, wo ich weiterforschen soll. Ich bin natürlich auch mit dem Programmieren unter Windows-Umgebung und mit Compilern überhaupt ziemlich unerfahren.
Danke für einen Tipp!
Viele Grüße Georg |
|
Nach oben |
|
 |
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 21.02.2010, 20:48 Titel: |
|
|
Wenn du deinen Quelltext hier postest könnte man viel leichter helfen.  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 21.02.2010, 20:51 Titel: |
|
|
Mit FBIde kenne ich mich nicht aus, weiß also nicht, wo du die unten aufgeführten Dinge einstellen oder auslesen kannst ...
Eine Möglichkeit wäre zunächst, das Programm mit der Option -exx zu kompilieren. Kommt es dann während der Programmausführung zu einem Fehler (der u. U. für einen Absturz verantwortlich ist), dann wird eine entsprechende Fehlermeldung zurückgegeben. Inwiefern FBIde diese Fehlermeldung dann anzeigt, weiß ich nicht; notfalls musst du das Programm halt über Konsolenfenster aufrufen.
edit:
Stueber hat Folgendes geschrieben: | Wenn du deinen Quelltext hier postest könnte man viel leichter helfen.  |
Bei über 200 Zeilen Code würde ich dazu aber einen NoPaste-Service empfehlen.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
George
Anmeldungsdatum: 21.02.2010 Beiträge: 13 Wohnort: Bremen
|
Verfasst am: 21.02.2010, 21:58 Titel: |
|
|
Danke, für die schnellen Antworten!
Ich habe mit diesem NoPaste-Service noch nie gearbeitet. Ich hoffe, ich habe alles richtig gemacht. Den Quellcode habe ich unter "Airport - ein unvollständiges Spielprogramm" upgeloaded.
Weiterhin habe ich bei der FBIde unter Einstellungen -> FeeBASIC in der Mitte "<$fbc>" -exx "<$file>" -s gui eingetragen. Den letzten Zusatz habe hinzugefügt, weil ich hier im Forum gelesen habe, dass dadurch das Konsolenfenster im Hintergrund verschwindet. Ich habe es auch schon probehalber wieder herausgenommen - ohne Erfolg.
Ein anderes Programm, das ich danach eingegeben habe funktioniert übrigens auch nicht (also die -.exe nicht). Dort werden einfach nur data-Werte mit einer for .. read.. next Zeile gelesen. Als ich dort gerade ein print "fertig" an den Schluss etzte kam die Fehlermeldung vom Compiler C:\FreeBASIC\bin\win32\ld.exe: cannot open output file C:\Projekte\Versuche\Versuch03.exe: Permission denied
Diese Meldung kommt aber bei Airport.bas nicht.
Gruß George |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 22.02.2010, 00:04 Titel: |
|
|
Hier der Link.
Was vorneweg, was nichts mit dem Programmabsturz zu tun hat: In einer Schleife, die nur auf ein Ereignis (Tastatureingabe) wartet, solltest du noch ein
einfügen, um dem Prozessor ein bisschen Zeit für andere Programme zu geben.
Du hast in Zeile 22 ein
Code: | DIM shared as Integer Pa(1 to 236) |
und in Zeile 159 ein
Code: | for i=1 to 237: Pa(i)=99: next |
Das wird mit großer Wahrscheinlichkeit nicht gut gehen.
Zitat: | C:\FreeBASIC\bin\win32\ld.exe: cannot open output file C:\Projekte\Versuche\Versuch03.exe |
klingt so, als ob das Programm noch am Laufen wäre - schau vielleicht mal im Taskmanager nach. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
George
Anmeldungsdatum: 21.02.2010 Beiträge: 13 Wohnort: Bremen
|
Verfasst am: 22.02.2010, 19:54 Titel: |
|
|
Sorry, den Link zum Quellcode habe ich vergessen!
Danke, nemored, für die Hinweise zum Quellcode. Ich habe es gerade korrigiert - und Oh Wunder! - es läuft. Kann es sein, dass so ein Verweis außerhalb des arrays das ganze Programm gar nicht erst starten lässt?
Ich Habe aber außerdem gestern noch bei Ansicht -> Einstellungen -> FreeBASIC in dem Kästchen "Compile-Befehl" den Zusatz "-s gui "herausgenommen. Könnte dass vielleicht der Teufel im Detail gewesen sein?
Jetzt steht in der Zeile Compile Befehl nur noch:
"<$fbc>" -exx "<$file>"
Ist das so der richtige (für mich optimale) Eintrag?
Jetzt habe ich heute den Rechner wieder eingeschaltet (also neu gebootet so zu sagen) und es funktioniert.
Allerdings kommt jetzt am Ende eine kleine Messagebox "Exit Code 0" (die war vorher nicht vorhanden). Was soll das? Ist dass so ähnlich wie bei C++ ein "return 0;" wenn alles glatt ging? Bei dem anderen Programm (das mit der Fehlermeldung ".. cannot open output file..") kommt nämlich jetzt ein "Exit Code 1"
Kann mir jemand dass erklären? - Danke!
George |
|
Nach oben |
|
 |
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 22.02.2010, 20:36 Titel: |
|
|
Jetzt da du den Fehler gefunden hast kannst du das -exx weg machen, dann sollte da keine MessageBox mehr sein. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 23.02.2010, 00:20 Titel: |
|
|
Zitat: | Ist dass so ähnlich wie bei C++ ein "return 0;" wenn alles glatt ging? |
Ja, genau.
Zitat: | Kann es sein, dass so ein Verweis außerhalb des arrays das ganze Programm gar nicht erst starten lässt? |
Ich vermute eher, dass dein Programm zwar gestartet, aber dann so schnell wieder abgestürzt ist, dass man das gar nicht gemerkt hat. Ein Schreibzugriff auf einen unerlaubten Bereich erzeugt mit einer sehr hohen Wahrscheinlichkeit einen Absturz. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
George
Anmeldungsdatum: 21.02.2010 Beiträge: 13 Wohnort: Bremen
|
Verfasst am: 23.02.2010, 19:22 Titel: |
|
|
Danke für die Hinweise!
Jetzt steht im NoPaste-System vom FreeBASIC-Portal noch mein fehlerhaftes Programm. Nicht das mich das stört, aber es ist immerhin fehlerhaft und für andere nicht zu gebrauchen (auch nicht zum Lernen). Ich habe aber keine Möglichkeit gefunden, es zu löschen.
Ist es okay, es einfach so stehen zu lassen?
Gruß George |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 23.02.2010, 19:28 Titel: |
|
|
Hallo!
George hat Folgendes geschrieben: | Jetzt steht im NoPaste-System vom FreeBASIC-Portal noch mein fehlerhaftes Programm. Nicht das mich das stört, aber es ist immerhin fehlerhaft und für andere nicht zu gebrauchen [...] Ist es okay, es einfach so stehen zu lassen? |
Ja, das ist überhaupt kein Problem. Ich würde das sogar als vorteilhaft ansehen, dass die hier besprochenen Quelltexte auch nach der Lösung des Problems noch einsehbar sind. Wenn sich später jemand anderes für das Problem und seine Lösung interessiert, ist das Material dann noch vorhanden.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
|