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:

Existenzüberprüfung
Gehe zu Seite 1, 2  Weiter
 
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
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 22.10.2006, 12:33    Titel: Existenzüberprüfung Antworten mit Zitat

Hallo,
ich würder gerne wissen, wie es möglich ist zu überprüfen, ob eine .dat Datei existiert oder nicht.

Ich kann mit meinem Program den momentanen stand in einer .dat Datei abspeichern. cool

Code:

INPUT "Unter welchem Namen abspeichern? ", datname$
OPEN "o", #1, datname$ + ".dat"         'Datei anlegen
FOR y = 1 TO 9                          'Werte eintragen
    FOR x = 1 TO 9
        IF x < 9 THEN PRINT #1, v(x, y).zahl, v(x, y).farbe, v(x, y).fest;
        IF x = 9 THEN PRINT #1, v(x, y).zahl, v(x, y).farbe, v(x, y).fest
    NEXT x
NEXT y
CLOSE #1   


und dann kann man diese Datei auch wieder öffenen. happy

Code:

INPUT "Name der zu öffnenden Datei? ", datname$
OPEN "i", #1, datname$ + ".dat"

FOR y = 1 TO 9
  FOR x = 1 TO 9
     INPUT #1, zahl, farbe, fest
     v(x, y).zahl = zahl
     v(x, y).farbe = farbe
     v(x, y).fest = fest
  NEXT x
NEXT y
CLOSE #1


Allerdings kann es ja sein, dass der Dateiname falsch ist oder, dass es die Datei garnicht gibt und dann kommt natürlich eine Fehlermedung( mit dem Kopf durch die Mauer wollen ), was ich verhindern möchte.

Gruß,
Dark_King

PS: wer sich für den aktuellen Stand von meinem Sudoku Program interessiert kann sich hier die aktuellste Version runterladen.
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 22.10.2006, 12:48    Titel: Antworten mit Zitat

Zitat:
Existenzüberprüfung

"Ich denke also bin ich" - SCRN.

was du brauchst ist (in qbasic) eine lösung mit "on error gosub meinefehlerbehandlungsroutine" (schau einfach in der referenz nach), in freebasic kann man das viel eleganter machen, da sich open auch als funktion verwenden lässt, die dann ne erfolgs- oder misserfolgsmeldung zurückgibt.

Gruß
Lutz böse Ifer
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elvis



Anmeldungsdatum: 01.06.2006
Beiträge: 818
Wohnort: Deutschland, BW

BeitragVerfasst am: 22.10.2006, 13:22    Titel: Antworten mit Zitat

Du kannst auch mit dir den Verzeichnis-Inhalt auslesen, und dann halt
überprüfen, ob die Datei, die du suchst, enthalten ist...
Sebastian (oder wars jemand anderes?) hat letztens zu dir auch noch eine
elegantere Lösung vorgestellt, als die, die normalerweise verwendet wird. lächeln
Ich guck noch mal...

Das mit ON ERROR ist aber einfacher... durchgeknallt zwinkern


Grüße, Elvis
_________________
Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 22.10.2006, 13:38    Titel: Antworten mit Zitat

hmm irgendwas stimmt da net, wenn ich "ON ERROR GOTO Marke" schreibe, kann ich das Programm nicht starten, da immer kommt, dass die Marke nicht definiert ist. Ich weis nicht warum, die Marke ist ja eigentlich definiert.

mfg
Dark_King
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 22.10.2006, 13:41    Titel: Antworten mit Zitat

Dann poste doch mal bitte den ganzen Code. zwinkern
Bzw. wenn der zu groß ist, den relevanten Ausschnitt. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 22.10.2006, 13:47    Titel: Antworten mit Zitat

durchgeknallt hab ich irgendwie vergessen

Code:
SUB oeffnen

LOCATE 23, 1: COLOR farb1: PRINT "[Name (max 8 Buchstaben), Abbrechen]                                                 "
LOCATE 22, 1: INPUT "Name der zu ”ffnenden Datei?                                                           ", datname$


IF datname$ = "Abbrechen" THEN
   LOCATE 22, 1: COLOR farb1: PRINT "                                             "
   LOCATE 23, 1: COLOR farb1: PRINT "                                             "
   EXIT SUB
END IF



DO
  IF LEN(datname$) > 8 THEN
existenz:
     LOCATE 22, 1: COLOR farb1: INPUT "Datei existiert nicht; Neuen Dateinamen eingeben: ", datname$
  ELSE
     EXIT DO
  END IF
LOOP

ON ERROR GOTO existenz
OPEN "i", #1, datname$ + ".dat"


FOR y = 1 TO 9
  FOR x = 1 TO 9
     INPUT #1, zahl, farbe, fest
     v(x, y).zahl = zahl
     v(x, y).farbe = farbe
     v(x, y).fest = fest
  NEXT x
NEXT y
CLOSE #1
CALL startbild
LOCATE 22, 1: COLOR farb1: PRINT "Die Datei "; datname$; ".dat wurde ge”ffnet."
SLEEP 3
LOCATE 22, 1: COLOR farb1: PRINT "                                            "
LOCATE 23, 1: COLOR farb1: PRINT "                                            "
END SUB

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 22.10.2006, 13:50    Titel: Antworten mit Zitat

Aja. lächeln
Ich glaube, solche On Error-Labels müssen immer im Hauptprogramm definiert sein. Ich hab vor 'ner Ewigkeit mal 'n bissl damit gearbeitet, weiß das also nicht mehr 100%ig. Probier's mal aus. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 22.10.2006, 14:08    Titel: Antworten mit Zitat

hmm dann kann ich den error ja eigentlich nicht wirklich auf mein sub abstimmen... vllt mit variablen und if...
naja mal ausprobieren

thx für eure antworten lächeln

mfg

Dark_King
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 22.10.2006, 15:00    Titel: Antworten mit Zitat

Mit
Code:
ON LOCAL ERROR ...

kann man auch Fehler in Unterprogrammen abfangen, aber ich weiß nicht, ob und in welchen QB-Versionen das ging.
_________________

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
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 22.10.2006, 15:10    Titel: Antworten mit Zitat

Hmm leider geht das bei v4.5 nicht..

mfg

Dark_King
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


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

BeitragVerfasst am: 22.10.2006, 21:49    Titel: Antworten mit Zitat

Elvis hat Folgendes geschrieben:
Du kannst auch mit dir den Verzeichnis-Inhalt auslesen, und dann halt
überprüfen, ob die Datei, die du suchst, enthalten ist...
Sebastian (oder wars jemand anderes?) hat letztens zu dir auch noch eine
elegantere Lösung vorgestellt, als die, die normalerweise verwendet wird. lächeln
Ich guck noch mal...

Das mit ON ERROR ist aber einfacher... durchgeknallt zwinkern


Grüße, Elvis


das is aber erst seit qb7.1 drin. und die meisten verwenden pds 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
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 23.10.2006, 07:13    Titel: Antworten mit Zitat

Elvis schrieb:
Zitat:
Elvis hat Folgendes geschrieben:
Du kannst auch mit dir den Verzeichnis-Inhalt auslesen, und dann halt
überprüfen, ob die Datei, die du suchst, enthalten ist...
Sebastian (oder wars jemand anderes?) hat letztens zu dir auch noch eine
elegantere Lösung vorgestellt, als die, die normalerweise verwendet wird.


Ich hab mal dazu eine Lösung vorgeschlagen...
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
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 23.10.2006, 17:06    Titel: Antworten mit Zitat

wie wärs mit
Code:

open datei$ for append as #1
dummy=eof(1)
close #1
if dummy then
 kill datei$
 [WAS SOLL GETAN WERDEN WENN NICHT VORHANDEN]
else
 [WAS SOLL GETAN WERDEN WENN VORHANDEN]
endif



hat den einen nachteil, dass leere dateien auch als "nicht vorhanden" gewertet werden...
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 23.10.2006, 17:59    Titel: Antworten mit Zitat

hi, die lösung gefällt mir eigenltich sehr gut, da das mit

Code:
on error goto


irgendwie nur 1 mal funktioniert hat und wenn ich dann nochmal versucht habe eine nicht existierende datei zu öffen das ganze wieder eine fehlermedung ausgab...

ich hab deine lösung mal mit eingebaut aber es kommt immer die meldung "Falscher Dateimodus" bei

Code:
dummy=eof(1)


weist du was da falsch ist oder könntest du mir die funktion von eof(1) mal erklären, da ich aus der qb hilfe net ganz schlau werde.

mfg

Dark_King
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 23.10.2006, 19:26    Titel: Antworten mit Zitat

Er hat da nur EOF und LOF verwechselt. zwinkern
EOF gibt 1 zurück, wenn das Ende der Datei erreicht ist - LOF die Länge in Bytes. Wenn die Länge 0 beträgt, kann man davon ausgehen, dass es die Datei nicht gibt, da sie gerade angelegt wurde - aber keine 100%ige Garantie, dass es sie auch nicht gibt. Warum? Es kann ja auch einfach eine leere Datei sein. neutral
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 23.10.2006, 19:33    Titel: Antworten mit Zitat

find ich gut, da ich des schon mal eingebaut habe, da des mit ein wenig logischer erschien grinsen

mfg

Dark_King
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 24.10.2006, 08:27    Titel: Antworten mit Zitat

Zum Titelthema: Siehe

http://beilagen.dreael.ch/QB/DATEXIST.BAS

Stellt eine zu FileExists() aus VBScript gleichwertige FUNCTION-Prozedur zur Verfügung.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 25.10.2006, 17:26    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
Er hat da nur EOF und LOF verwechselt. zwinkern
EOF gibt 1 zurück, wenn das Ende der Datei erreicht ist - LOF die Länge in Bytes. Wenn die Länge 0 beträgt, kann man davon ausgehen, dass es die Datei nicht gibt, da sie gerade angelegt wurde - aber keine 100%ige Garantie, dass es sie auch nicht gibt. Warum? Es kann ja auch einfach eine leere Datei sein. neutral

öha... sorry lächeln


das problem dass on error nur einmal geht hab ich auch... des NERVT
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 25.10.2006, 22:30    Titel: Antworten mit Zitat

wie wärs damit:
Code:
SHELL "CD "+pfad$
SHELL "DIR /A-D > C:\temp.dat"
f=FREEFILE
OPEN "temp.dat" FOR INPUT AS #f
...und so weiter
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 25.10.2006, 23:08    Titel: Antworten mit Zitat

kleiner_hacker hat Folgendes geschrieben:
das problem dass on error nur einmal geht hab ich auch... des NERVT


Kann es sein, dass du nicht mit RESUME bzw. RESUME NEXT aus der Fehlerbehandlung zurückkehrst, sondern mit GOTO?
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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