 |
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 |
alex2001
Anmeldungsdatum: 27.09.2012 Beiträge: 9
|
Verfasst am: 27.09.2012, 10:18 Titel: Compilertes Programm schließt sofort wieder |
|
|
Hallo,
nach fast 20 Jahren der Abstinenz beschäftige ich mich seit einiger Zeit wieder mit Basic, um genau zu sein mit QuickBasic 7/PDS.
Das Ganze läuft bei mir unter Windows 7 (64-bit) in der Dos-Box.
Da das, wenn das Proframm, das ich schreibe, irgendwann mal fertig sein sollte, natürlich unbefriedigend ist, habe ich auch begonnen, mich mit freebasic zu beschäftigen. Programmieren möchte ich in einer IDE unter freebasic eigentlich nicht, QBX bietet doch mehr Unterstützung/Hilfestellung dierekt bei der Eingabe.
Ich wollte nun mals ausprobieren, wie sich die Übersetzung meines Programmes in freebasic gestaltet.
Also:
Freebasic runterladen (v.024)
installieren
IDE runterladen und installieren
Einstellungen vornehmen (-lang qb)
QB-Programm ist als Text (nicht binär) gespeichert
in die IDE laden
und erster Versuch mit F5
Wie nicht anders zu erwarten, wurden div. Fehlermeldungen angezeigt, die ich durch Änderungen am Code schließlich alle zum verstummen brachte, mit anderen Worten fbc lief nun ohne Fehlermeldung durch, erzeugte mir brav die erwartete .exe
Als ich nun erwartungsvoll die .exe anklickte, öffnete sich ein Konsolenfenster (wie es auch sein sollte, handelt sich schließlich um ein reines Konsolenprogramm), welches sich aber sofort wieder schloss.
Kein Kommentar, keine Fehlermeldung, nichts.
Zu bemerken ist vielleicht noch, daß es sich um ein monolithisches Programm handelt, ich habe auch keine externen Libraries verwendet, alles was getan werden soll, steht in der einen Datei.bas.
Das Programm läuft unter QBX klaglos und ohne Fehlermeldung, die von QBX erzeugte .exe läuft in der Dos-Box ebenfalls klaglos und ohne Fehlermeldung, selbst Freebasic hat beim compilieren nichts zu meckern, jedoch.......
Ich weiß, wenn es am Code liegen sollte würde es nur helfen diesen hier einzustellen, da es aber mittlerweile gegen 2000 Zeilen sind, erstmal so die Frage:
Hat irgend jemand eine Erleuchtung nach dem Motto:"Natürlich, das passiert immer wenn..."?
Habe getreulich die FAQ's gelesen, und auch hier im Forum herumgestöbert, aber nichts gefunden. Das lässt mich denken, daß ich einfach vernagelt bin, und einen offensichtlichen, ganz einfachen Fehler gemacht habe. |
|
Nach oben |
|
 |
Quisslich
Anmeldungsdatum: 09.09.2012 Beiträge: 38
|
Verfasst am: 27.09.2012, 12:13 Titel: |
|
|
startest du die EXE aus dem Windows-Explorer heraus? Wenn am Ende deines Programmes nicht z.B. auf einen Tastendruck gewartet wird, beendet sich die DOS-Box dann gleich wieder.
Versuch doch mal, dein Programm direkt aus der DOS-Box zu starten. Oder bau am Ende deines Codings eine Tastaturabfrage ein, die auf einen Tastendruck zum Beenden des Programmes wartet. |
|
Nach oben |
|
 |
alex2001
Anmeldungsdatum: 27.09.2012 Beiträge: 9
|
Verfasst am: 27.09.2012, 12:19 Titel: |
|
|
Hier herschen offenbar ein paar Mißverständnisse:
1. mit der DOS-Box hat das nichts mehr zu tun, wenn das Programm in freebasic compiliert wurde
2. das programm ist eine dialoganwendung, mit anderen Worten: da läuft nichts bis zum ende durch |
|
Nach oben |
|
 |
Quisslich
Anmeldungsdatum: 09.09.2012 Beiträge: 38
|
Verfasst am: 27.09.2012, 13:00 Titel: |
|
|
mit welchen Compiler-Optionen hast du das Programm denn erstellt?
Zuletzt bearbeitet von Quisslich am 27.09.2012, 13:02, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 27.09.2012, 13:01 Titel: |
|
|
Wenn Du am Ende des Programms ein
Sleep
einfügst, bleibt das Consolenfenster bis zu einem Tastendruck geöfnet.
Na klar nur, wenn denn zwischendurch nicht irgendwo ein Fehler auftritt. Dann hilft es das programm direkt aus der cmd-Konsole zu starten.
Grüße |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 27.09.2012, 13:51 Titel: |
|
|
alex2001 hat Folgendes geschrieben: | Hier herschen offenbar ein paar Mißverständnisse:
1. mit der DOS-Box hat das nichts mehr zu tun, wenn das Programm in freebasic compiliert wurde
2. das programm ist eine dialoganwendung, mit anderen Worten: da läuft nichts bis zum ende durch |
Er meinte wahrscheinlich, du könntest mal probieren, aus der Eingabeaufforderung (cmd.exe) heraus das Programm zu starten. Es war vermutlich nicht der DOS-Emulator "DOSBox" gemeint, sondern die Eingabeaufforderung von Windows.
Wenn dein Programm einen unerwarteten Laufzeitfehler verursacht, gibt es nämlich eine Fehlermeldung auf der Konsole und das Programm beendet sich. Startest du das Programm in dem Fall über den Explorer, ist das Fenster dann so schnell wieder weg, dass du keine Chance hast, die Fehlermeldung zu sehen. Deshalb kann es hilfreich sein, das Programm aus der cmd heraus zu starten, weil du dann alle Ausgaben des Programms in Ruhe lesen kannst. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Quisslich
Anmeldungsdatum: 09.09.2012 Beiträge: 38
|
Verfasst am: 27.09.2012, 14:09 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | Er meinte wahrscheinlich, du könntest mal probieren, aus der Eingabeaufforderung (cmd.exe) heraus das Programm zu starten. Es war vermutlich nicht der DOS-Emulator "DOSBox" gemeint, sondern die Eingabeaufforderung von Windows. |
äh ja, genau das meinte ich, sorry. War davon ausgegangen, dass mit DOS-Box die normale Win-Eingabeaufforderung gemeint war. |
|
Nach oben |
|
 |
alex2001
Anmeldungsdatum: 27.09.2012 Beiträge: 9
|
Verfasst am: 27.09.2012, 14:11 Titel: |
|
|
@Quisslich
soweit ich mich erinnere habe ich den "Standart-Optionen", d.h. den in der IDE vorgegebenen nur -lang qb hinzugefügt. Ich glaube aber, mehr als -exx war da auch nicht. Ich kanns im Moment nicht nachsehen, werde das aber heute abend mal...
@RWK
Ich kenne den Sleep-Befehl. Sei versichert, der nützt hier nichts. Das Programm wartet an diversen Stellen auf Benutzereingaben, eben eine Dialoganwendung
@Sebastian
Ich meine, daß ich das schon probiert habe, mit dem Ergebnis, daß nur wieder der Prompt ausgegeben wurde, ebenfalls keine Fehlermeldung
Aber auch das werde ich heut Abend nochmal ausprobieren
An alle erstmal vielen Dank |
|
Nach oben |
|
 |
alex2001
Anmeldungsdatum: 27.09.2012 Beiträge: 9
|
Verfasst am: 27.09.2012, 17:18 Titel: |
|
|
Hallo,
das Problem ist gelöst. Es war tatsächlich ein saudummer Fehler:
Da das Programm unter QBX in der Dos-Box geschrieben ist, mussten die Pfade natürlich auch denen der Umgebung von Dos-Box entsprechen, d.h.
c:\ wird im realen Verzeichnis c:\dosbox abgebildet. Den Pfaden im Programm fehlte also eben dies "dosbox". Muss man aber erstmal drauf kommen (vielen dank, Sebastian).
Was mich dabei aber stutzig macht: im entsprechenden Sub, welches zum lesen der Datei zuständig ist, sollte der "File not found"-Fehler eigentlich dadurch abgefangen werden, daß eine neue Datei angelegt wird, sofern die gesuchte nicht gefunden wird:
SUB indexLesen
datei$ = lf$ + "index.seq"
IF LEN(__DIR(datei$)) = 0 THEN GOSUB fehler2
fehler1:
dn = FREEFILE
OPEN datei$ FOR INPUT AS dn
i = 0
DO
i = i + 1
INPUT #dn, PLU.nummer(i), PLU.satz(i)
PLU.nummer(i) = RTRIM$(PLU.nummer(i))
LOOP UNTIL EOF(1)
maxPLU% = i
CLOSE dn
MD = "Index eingelesen"
GOTO fehler3
fehler2:
CLOSE
dn = FREEFILE
OPEN datei$ FOR OUTPUT AS dn
MD = "Neuer Index wird erzeugt " + STR$(i)
Call meldungAusgeben(MD)
WRITE #dn, PLU.nummer(1), PLU.satz(1)
maxPLU% = 1
CLOSE dn
MD = "Index neu angelegt"
RETURN
fehler3:
END SUB
Der "file not found" -Fehler trat in rot markierten Zeile auf. Ich ging davon aus, das ein open mit output auch in freebasic eine neue Datei anlegt, sofern sie nicht gefunden wird????
Nochmal danke an alle |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 27.09.2012, 17:27 Titel: |
|
|
FOR OUTPUT legt immer eine leere Datei an. Egal ob bereits eine Datei mit gleichem Namen existiert oder nicht. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
alex2001
Anmeldungsdatum: 27.09.2012 Beiträge: 9
|
Verfasst am: 27.09.2012, 17:43 Titel: |
|
|
...muss ich Dir bei weiterem Nachdenken zustimmen, und da der Pfad in der angegebenen Form nicht existierte hat das eben den "file not found" erzeugt, nun sind alle Klarheiten beseitigt  |
|
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.
|
|