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:

on error goto

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 18.05.2006, 20:14    Titel: on error goto Antworten mit Zitat

CLS
anfang:
ON ERROR GOTO fehler
INPUT "Dateiname: ", name$
OPEN name$ FOR INPUT AS 1
DO
INPUT #1, text$
PRINT text$
LOOP UNTIL EOF(1)

fehler:
GOTO anfang:


wenn ich in diesem programm 2x den Namen einer nicht existenten datei angebe, dann wird das Programm beendet - warum? eigentlich sollte es doch immer wieder erneut nach dem namen der Datei fragen, oder ?
Wenn nein wie realisiere ich dies ?



mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.05.2006, 20:58    Titel: Antworten mit Zitat

So muss der Code richtig aussehen:
Code:
ON ERROR GOTO FEHLER
CLS
INPUT "Dateiname: ", d$
OPEN d$ FOR INPUT AS #1
DO UNTIL EOF(1)
 LINE INPUT #1,zeile$
 PRINT zeile$
LOOP
CLOSE #1
SLEEP: END
FEHLER:
PRINT "Es ist Fehler Nr. "; LTRIM$(STR$(ERR)); " aufgetreten."
SLEEP: END

_________________

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
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 18.05.2006, 21:03    Titel: Antworten mit Zitat

aber dieser code bewirkt doch nicht, dass ich nochmals den aufgefordert werde den dateinamen einzugeben, oder ? Er gibt doch nur die Fehlernummer aus

ich moechte, dass er mich immer wieder nach dem Namen der datei fragt, bis ich einen funktionierenden angebe.


Zuletzt bearbeitet von alfonsospringer am 18.05.2006, 21:06, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.05.2006, 21:06    Titel: Antworten mit Zitat

Code:
ON ERROR GOTO FEHLER
Anfang:
CLS
INPUT "Dateiname: ", d$
OPEN d$ FOR INPUT AS #1
DO UNTIL EOF(1)
 LINE INPUT #1,zeile$
 PRINT zeile$
LOOP
CLOSE #1
SLEEP: END
FEHLER:
PRINT "Es ist Fehler Nr. "; LTRIM$(STR$(ERR)); " aufgetreten."
INPUT "Nochmal probieren? ", aw$
IF instr(UCASE$(aw$),"J") THEN GOTO Anfang
END

_________________

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
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 19.05.2006, 15:29    Titel: Antworten mit Zitat

Oho, Sebastian verwendet den GOTO-Befehl lachen

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 19.05.2006, 15:35    Titel: Antworten mit Zitat

wenn man in dem Programm 2 mal hintereindander den namen einer nicht exisstenten datei eingibt funktioniert es nicht mehr. Probiert's mal aus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 19.05.2006, 16:16    Titel: Antworten mit Zitat

Um sicherzustellen, dass auch der nächste Fehler wieder von der Fehlerbehandlungsroutine abgefangen wird, muss man die Fehlerbehandlung mit dem RESUME-Befehl (und nicht mit dem GOTO-Befehl, der diesmal nicht nur aus stilistischen Gründen unangebracht ist) beenden.

Der korrekte Code lautet somit:

Code:
ON ERROR GOTO FEHLER
Anfang:
CLS
INPUT "Dateiname: ", d$
OPEN d$ FOR INPUT AS #1
DO UNTIL EOF(1)
 LINE INPUT #1,zeile$
 PRINT zeile$
LOOP
CLOSE #1
SLEEP: END
FEHLER:
PRINT "Es ist Fehler Nr. "; LTRIM$(STR$(ERR)); " aufgetreten."
INPUT "Nochmal probieren? ", aw$
IF instr(UCASE$(aw$),"J") THEN RESUME Anfang
END

_________________
lG
pinkpanther lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 19.05.2006, 19:50    Titel: Antworten mit Zitat

Im moment habe ich diese etwas unschoene Variante um nach einem Fehler in einem sub den sub nochmal neuu zu starten

Code:
ON ERROR GOTO fehler

CALL menue 'menuesub

END 'ende des Programmes happy

fehler: 'fehlerroutine
CLS
PRINT "Datei nicht gefunden bitte nochmal versuchen"
RESUME again 'gehe zu again und schalte die fehlerverfolgung wieder ein

again: ' nur dafuer zustaendig den sub neuzustarten nachdem die Fehlerverfolgung  wieder aktiv ist

CALL alt' startet den sub neu



geht das auch schoener ohne die zweite sprungmarke?


Zuletzt bearbeitet von alfonsospringer am 20.05.2006, 09:17, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 19.05.2006, 20:26    Titel: Antworten mit Zitat

Am elegantesten löst du dieses Problem, indem du es erst überhaupt nicht zu einem Fehler kommen lässt. Das heißt, du musst erst prüfen, ob es die Datei gibt, bevor du sie mit irgendwelchen Dateibefehlen bearbeitest.

Wie man prüfen kann, ob eine bestimmte Datei existiert, habe ich im folgenden Beitrag beschrieben:
http://forum.qbasic.at/viewtopic.php?p=21887&highlight=#21887
_________________
lG
pinkpanther lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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 QBasic. 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