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:

Compilertes Programm schließt sofort wieder

 
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
alex2001



Anmeldungsdatum: 27.09.2012
Beiträge: 9

BeitragVerfasst am: 27.09.2012, 10:18    Titel: Compilertes Programm schließt sofort wieder Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Quisslich



Anmeldungsdatum: 09.09.2012
Beiträge: 38

BeitragVerfasst am: 27.09.2012, 12:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
alex2001



Anmeldungsdatum: 27.09.2012
Beiträge: 9

BeitragVerfasst am: 27.09.2012, 12:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Quisslich



Anmeldungsdatum: 09.09.2012
Beiträge: 38

BeitragVerfasst am: 27.09.2012, 13:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
RWK



Anmeldungsdatum: 04.07.2011
Beiträge: 44

BeitragVerfasst am: 27.09.2012, 13:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 27.09.2012, 13:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Quisslich



Anmeldungsdatum: 09.09.2012
Beiträge: 38

BeitragVerfasst am: 27.09.2012, 14:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
alex2001



Anmeldungsdatum: 27.09.2012
Beiträge: 9

BeitragVerfasst am: 27.09.2012, 14:11    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden
alex2001



Anmeldungsdatum: 27.09.2012
Beiträge: 9

BeitragVerfasst am: 27.09.2012, 17:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.09.2012, 17:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alex2001



Anmeldungsdatum: 27.09.2012
Beiträge: 9

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

...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 mit dem Kopf durch die Mauer wollen
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