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:

if Abfrage
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
BombE



Anmeldungsdatum: 18.01.2006
Beiträge: 31

BeitragVerfasst am: 08.07.2006, 17:56    Titel: if Abfrage Antworten mit Zitat

hallo wie mache ich eine if Abfrage die prüft ob eine Datei existiert ?
ich habe sowas versucht aber das geht nicht
Code:
IF EXIST DATEI.TXT DO GOTO 1 ELSE GOTO 2[quote][/quote]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elvis



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

BeitragVerfasst am: 08.07.2006, 18:13    Titel: Antworten mit Zitat

Ich meine irgendwo eimal gelesen zu haben, dass man, falls einer kommt, den Error-Code (wenn er die Datei nicht findet) einlesen muss. Wenn die Datei nicht existiert beendet er ja das Programm und zeigt zum Beispiel an:

File not found in Module TEST at Adress: 0924:003E

Hit any key to return to system


Tabellen zu den verschieden Error Codes gibt es ja.

Code:

OPEN "TEST.DAT" FOR INPUT AS #1
IF ErrCode = 1 THEN GOSUB DateiExistiertNicht      '1 ist nur ein Beispiel
INPUT #1, Variable$
CLOSE #1
END

DateiExistiertNicht:
PRINT "Sorry, die Datei existiert nicht. Versuch's nochmal mit einem"
PRINT "anderen Pfad..."


Ich hoffe, ich konnte dir damit ein Bisschen weiterhelfen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 08.07.2006, 18:16    Titel: Antworten mit Zitat

Hi,

Code:

datei$="blablub"
OPEN datei$ FOR BINARY AS #1
IF LOF(1) = 0 THEN CLOSE #1: KILL datei$: PRINT "Datei nicht vorhanden"
ELSE
CLOSE #1
PRINT "Datei vorhanden"
END IF


MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 08.07.2006, 18:18    Titel: Antworten mit Zitat

MonsterFAQ hat Folgendes geschrieben:
Frage deutsch
~~~~~~~~~~~~~~
Wie stelle ich fest, ob eine Datei vorhanden ist?


Question English
~~~~~~~~~~~~~~
How can I detect if a certain file is existing or not?
How to figure out whether a file is existing or not?



Antwort 1
~~~~~~~~~~~~~
[ von Thomas Antoni, 26.10.2004 - 5.4.2006 ]

So kann man prüfen, ob eine Datei vorhanden ist:


*** Variante 1: Fehlerauswertung mit ON ERROR
Willst Du feststellen, ob eine -> Sequentiellen Datei vorhanden ist, so musst Du sie erst zum Lesen öffnen. Ist die Datei nicht vorhanden, dann erfolgt eine Fehlermeldung, die Du mit ON ERROR abfangen kannst. Bei -> Direktzugriffsdateien und -> Binärdateien funktioniert das auch, aber dort gibt es eine elegantere Methode, die weiter unten in "Variante 2" erläutert ist.


Mein folgendes Programm "SEQERROR.BAS" zeigt, wie Du das Vorhandensein einer Datei mit ON ERROR fesstellen kannst.


'*********************************************************************
' SEQERROR.BAS = Stellt fest, ob eine sequentielle Datei vorhanden ist
' ============
' (C) Thomas Antoni, 15.5.2005
'*********************************************************************
ON ERROR GOTO fehler
INPUT "Welche Datei wollen Sie oeffnen "; dateiname$
OPEN dateiname$ FOR INPUT AS #1
GOTO weiter
fehler: PRINT "Datei nicht vorhanden!"
INPUT "Geben Sie den korrekten Dateinamen ein"; dateiname$
RESUME 'Ruecksprung zum fehlerverursachenden Befehl
weiter: PRINT "Datei ist vorhanden"
'... Hier folgen die weiteren Befehle


Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online unter www.antonis.de/faq/progs/seqerror.bas .


Das Programm beendet sich, wenn die eingegebene Datei nicht vorhanden ist. Viel komfortabler wäre es natürlich, wenn Du dem Anwender eine Chance zur Neueingabe des Dateinamens geben würdest. Wie man das realisieren kann, zeigt das folgende Programm:



'****************************************************************************
' FILEXIS2.BAS - Testet ob eine Datei vorhanden ist (Komfort-Version)
' ============
' Dieses Q(uick)Basic-Programm demonstriert, wie man feststellt, ob eine
' Datei vorhanden ist. Der Pfad- und Dateiname wird vom Anwender sooft
' erfragt bis auf die Datei ohne Fehler zugegriffen werden kann.
'
' (c) Thomas Antoni, 5.4.2006
'****************************************************************************
'
ON ERROR GOTO ErrorHandler 'Bei nicht vorhandener Datei
'Fehlerroutine anspringen
Start: 'Wieder-Einsprungstelle bei Fehler (nicht vorhandene Datei)
CLS
IF Fehler% = 1 THEN
COLOR 12, 0 'rot auf schwarz
PRINT "Datei "; path$; " exististiert nicht, bitte richtigen Pfad eingeben!"
COLOR 7, 0 'wieder normale Schrift hellgrau auf schwarz
END IF
'
'------------- Pfad- und Dateinamen erfragen und in path$ hinterlegen
LOCATE 3
PRINT "Gib den Pfad- und Dateinamen ein, z.B. C:\text\meintext.txt"
INPUT path$
'
'----------- Datei oeffnen
Fehler% = 0 'Vorbesetzung: Kein Fehler
OPEN path$ FOR INPUT AS #1
'ist die Datei nicht vorhanden, erfolgt sofort ein Sprung zum ErrorHandler
CLOSE #1
PRINT "Der Pfad ist korrekt eingegeben."
SLEEP 'Warten auf beliebige Taste
END
'
'----------- Fehlerbehandlung falls Datei nicht vorhanden -------------------
ErrorHandler:
Fehler% = 1 'Fehlermerker setzen
RESUME Start 'neue Eingabe


Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online unter www.antonis.de/faq/progs/filexis2.bas .



*** Variante 2: Dateilänge abfragen
Bei -> Direktzugriffdateien und -> Binärdateien kann man die Dateilänge auf "0" abfragen. Hat eine Datei die Länge Null, dann kann man davon ausgehen, dass sie nicht existiert. Es gibt zwar auch Dateien die keine Daten enthalten. Das siehst Du z.B., wenn Du z.B. ein leeres Programm in der QBasic-Entwicklungsumgebung abspeicherst. In der Programmierpraxis werden solche Leerdateien aber jedoch fast nie vorkommen.

Diese Längenabfrage funktioniert wie folgt:


IF LOF (<Dateinr. ohne #>) > 0 THEN ... 'Dateilänge > 0 ?


Die Methode funktioniert bei Direktzugriffs-Dateien und binären Dateien. Bei sequentiellen Dateien ist sie nur in der Zugriffsart OUTPUT verwendbar.


**** Variante 3
Bei Direktzugriffs-Dateien kannst prüfen, ob ein definiertes Datum z.B. eine "1" aus der ersten Datensatz der Datei rücklesbar ist, siehe TOP96.BAS (). Wenn stattdessen "0" ausgelesen wird, ist die Datei nicht vorhanden.

Welche der 3 genannten Varianten sinnvoll ist, hängt von der Dateiart und der Zugriffsart ab.



Antwort 2
~~~~~~~~~~~~~~~~
[ von Andreas Meile im QB-Forum, 2004 ]
.
Weil in QB so etwas wie file_exists() aus der Programmiersprache PHP fehlt, würde ich doch dafür eine kleine Ersatz-FUNCTION wie folgt implementieren:


'********************************************************
' FILEXIST.EXE = Testet ob eine Datei existiert
' ============
' Dieses QBasic-Programm stellt fest, ob eine Datei
' mit dem angegebenen Pfad- und Dateinamen existiert.
' Es ist ein einfacher Ersatz f?r file_exists() aus PHP
'
' (c) Andreas Meile, 25.10.2004
' ("Dreael"; qbasicde*dreael.ch)
'********************************************************
'
DECLARE FUNCTION DateiExistiert% (d$)
'
INPUT "Dateiname"; d$
'
IF DateiExistiert(d$) THEN
PRINT "Datei "; d$; " existiert."
ELSE
PRINT "Datei "; d$; " gibt es nicht!"
END IF
'
END
'
Fehler:
ex% = 0
RESUME NEXT
'
FUNCTION DateiExistiert% (d$)
SHARED ex%
'
ex% = -1
ON ERROR GOTO Fehler
OPEN d$ FOR INPUT AS 1
CLOSE 1
ON ERROR GOTO 0
DateiExistiert% = ex%
END FUNCTION


Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online unter www.antonis.de/faq/progs/filexist.bas .


Leider muss der Error-Handler bei Q(uick)Basic (hier die Befehlssequenz nach "Fehler:") im Hauptprogramm platziert sein und daf nicht in einer SUB oder FUNCTION untergebracht sein.



Antwort 3
~~~~~~~~~~~~~
[ im QB-Forum, 26.10.2004 ]

Wenn der Dateiname nicht als Variable im Programm gebraucht wird, kann man eine
Batchdatei oder als Shell-Befehl das ganze recht einfach machen.


*** Codebeispiel mit SHELL

SHELL "if exist c:\file.dat del c:\file.dat"


*** Codebeispiel mit einer Batchdatei namens loesch.bat

Inhalt der Batchdatei loesch.bat:

if exist %1 del %1


Inhalt QB-Programms, das die Batchdatei loesch.bat aufruft:

SHELL "loesch c:\file.dat"



Antwort 4
~~~~~~~~~
[ von BufferUnderrun, 11.1999 ]
.
Das geht gemäß folgender Befehlssequenz:
.
ON ERROR GOTO Handler
INPUT "Welche Datei ist auf ihre Existenz hin zu prüfen? ",datnam$
OPEN "I", #1, datnam$
CLOSE #1
GOTO Ende

Handler:
PRINT "Datei ";datnam$;"nicht gefunden!"
RESUME Ende

Ende:


Wichtig ist, dass die Datei sequenziell im INPUT-Modus geöffnet wird, denn im OUTPUS-Modus würde sie einfach erstellt werden.


Antwort 5
~~~~~~~~
[ von Ch@rly im QB-Forum 29.4.02 ]
.
Es gibt verschiedene Möglichkeiten, das abzuprüfen.


1. Wenn Du weißt, wie die Datei heißt, kannst Du sie einfach öffnen. Wenn das
Geht, dann ist die CD bereit. Z.B. so:


ON ERROR GOTO ErrorHandler:

fehler = 0
kanal = FREEFILE
OPEN "c:\tmp\test.bas" FOR INPUT AS #kanal
IF fehler = 0 THEN
CLOSE #kanal
PRINT "Die Datei existiert !"
ELSE
PRINT "Die Datei existiert nicht !"
END IF
END

ErrorHandler:
fehler = ERR
RESUME NEXT


Diese Methode hat 2 kleine Nachteile. Erstens ist sie so nicht Multi-User-fähig. Wenn die Datei z.B. existiert, aber von einem andern Programm exklusiv geöffnet ist, so kommt es trotzdem beim Öffnen zu einem Fehler. Um dies zu verhindern, müßte man zusätzlich die Fehler Codes abfragen. Zweitens mußt Du den Namen einer Datei kennen, um sie anwenden zu können.


2. Du machst ein Dir in eine Datei und liest diese aus:

ON ERROR GOTO ErrorHandler:

SHELL "dir c:\tmp\*.txt > c:\tmp\test.tmp"

fehler = 0
kanal = FREEFILE
OPEN "c:\tmp\test.tmp" FOR INPUT AS #kanal
IF fehler = 0 THEN
DO
LINE INPUT #kanal, a$
PRINT a$
' Hier die Kontrolle, ob es die Datei gibt.
LOOP WHILE NOT EOF(kanal)
CLOSE #kanal
END IF
KILL "c:\tmp\test.tmp"
END

ErrorHandler:
fehler = ERR
RESUME NEXT


Auch diese Methode hat einen Nachteil, und zwar kann ist das Ergebnis von DIR je nach Betriebssystem unterschiedlich sein. Außerdem ist sie natürlich langsam, da mehrere Male auf das Laufwerk zugegriffen werden muß


3. Du gehst zu www.plutomania.de.vu und dort findest Du unter SUBS – Datei verschiedene Routinen, die bestens funktionieren. Diese arbeiten mit Interupts, so daß sie schnell und ohne die oben beschriebenen Nachteile funktionieren.


Antwort 6
~~~~~~~~~
[ von TT-Soft ( www.East-Power-Soft.de/ ) per Mail, 18.01.2002 ]
.
Das geht mit der folgenden Befehlssequenz:


FileName$ = "BEISPIEL.TXT"
OPEN FileName$ FOR BINARY AS #1:L = LOF(1):CLOSE #1
IF L = 0 then
KILL FileName$
PRINT "Datei nicht vorhanden"
ELSE
PRINT "Datei existiert"
END IF



Antwort 7
~~~~~~~~~
Einfach vorher Fehlerroutine einbauen, dann versuchen Datei zu öffnen, z.B.


ON ERROR GOTO fehler
'
OPEN file$ FOR INPUT AS #1
CLOSE
'
if fehler% = 0 then print "DATEI EXISTIERT!!"
'
fehler:
fehler%=1
RESUME NEXT


Antwort 8
~~~~~~~~~
Wenn du ON ERROR nicht benutzen willst, kannst du's auch so machen:


OPEN "[Datei.ext]" FOR BINARY AS #1
IF LOF(1) < 1 DateiCheck=0
CLOSE #1


Der Nachteil dieser Methode ist, dass eine neue Datei mit dem Namen mit der Länge Null erzeugt wird, wenn es die Datei nicht gibt. Diese kannst Du z.B. mit dem KILL-Befehl löschen.


Antwort 9
~~~~~~~~
Du hast verschiedene Möglichkeiten.


Du kannst eine Fehlerbehandlung einbauen, das könnte dann ungefähr so aussehen:


ON ERROR GOTO ErrorHandler
'
fehler = 0
NAME "c:\tmp\test.txt" AS "c:\tmp\test1.txt"
IF fehler = 0 THEN
PRINT "OK"
ELSE
PRINT "Fehler:"; fehler
END IF
'
END
'
'
ErrorHandler:
fehler = ERR
RESUME NEXT


Oder du benutzt eine Routine, welche abprüft, ob die Datei existiert. Ungefähr so:


IF FileExist(file1$) THEN
NAME file1$ AS file2$
PRINT "OK"
ELSE
PRINTt "Fehler !"
END IF


Auf TheShadow's Webseite www.plutomania.de.vu/ bzw http://www.quickbasic.de.vu findest Du unter SUBSAMMLUNG - DATEI die meiner Meinung nach beste FileExist Routine! Diese sieht wie folgt aus:


FUNCTION Datei.Exist (Datei$)
IF INSTR(Datei$, ":") THEN Laufw = ASC(UCASE$(LEFT$(Datei$, 1))) - 64 ELSE Laufw = -1
IF Laufw.Bereit(Laufw) = 0 THEN EXIT FUNCTION
DateiX$ = LTRIM$(RTRIM$(UCASE$(Datei$))) + CHR$(0)
Inter.Dx = VARPTR(DTA)
Inter.Ds = VARSEG(DTA)
Inter.Ax = &H1A00
CALL INTERRUPT(&H21, Inter, InterX)
Inter.Ax = &H4E00
Inter.Cx = 247
Inter.Dx = SADD(DateiX$)
Inter.Ds = VARSEG(DateiX$)
CALL INTERRUPT(&H21, Inter, InterX)
IF (InterX.Fl AND 1) THEN ELSE Datei.Exist = 1
END FUNCTION



Antwort 10
~~~~~~~~~
[ von Frank Neumann ("Triton"; http://www.silizium-net.de , isn-interactive*web.de ), per Mail, 9.9 01 ]


*** Antwort a
wie wär's mit


ON ERROR Gosub NichtDa
OPEN "ss.txt" FOR INPIT AS #1
PRINT "Datei vorhanden!"
END
'
NichtDa:
PRINT "Datei nicht gefunden
END


*** Antwort b
Wenn ich weiß, in welchem Verzeichnis die Datei liegen soll, kann ich einfach alle Dateien(Namen) in eine Datei schreiben lassen und schauen, ob sie(die Datei) dabei ist.
Das geht mit dem DOS Befehl DIR den man dann so anwendet:


SHELL "dir/b/oe/a-d > dir.$$$"


Weiß man nicht, in welchem Verzeichnis die Datei liegt, muss man das gleiche mit Unterverzeichnissen machen und die dann alle nach der ersten Methode durchsuchen lassen. So schreibt man die Verzeichnisse in eine Datei:


SHELL "dir/ad/b > ver.$$$"



Antwort 11
~~~~~~~~~
[ von Manuel ( mk-gamemaker*arcor.de ) im QB-Forum, 27.11.2004 ]


Um zu erkennen, ob eine Datei vorhanden ist, kannst du die ERR-Variable nutzen. Diese Variable gibt bei einer Datei, die nicht existiert, den Wert 53 aus. Mithilfe von "ON ERROR GOTO blabla" am Programmanfang lässt sich jedoch der Fehler abfangen, z.B. so:


ON ERROR GOTO fehler
OPEN "test.txt" FOR INPUT AS #1
vorhanden:
' Er soll das und das machen
END
nichtvorhanden:
' Er soll das und das machen
END
'
fehler:
IF ERR = 53 THEN RESUME nichtvorhanden


Erläuterung: Wenn die Datei "test.txt" nicht vorhanden ist, springt das Programm nach 'fehler:'. Die ERR-Variable speichert, wie gesagt, den aktuellen Fehler. Ist die Fehlernummer 53, springt das Programm mit dem RESUME-Befehl nach 'nichtvorhanden' hin




Antwort 12
~~~~~~~~~
[ von A.K. ( webmaster*iconsoft.de ) im QB-Forum, 29.5.2003 ]


*** Problem
Kann mir jemand den ON ERROR GOTO -Befehl erklären? Ich habe ein Telefonbuch geschreiben. Wenn man beim Suchen vertippt, öffnet mein Programm eine Datei zum Lesen, die noch gar nicht existiert. Z.B.:

cls
open"test.123" for input as #1 'die datei gibt es nicht!
input #1,a$
close #1


Wo muss ich nun den ON ERROR Befehl einfügen damit mein Programm funktioniert? Es soll dann wieder zur ersten Zeile springen, damit der Anwender eine 2. Chance zur korrekten Eingabe des Dateinamens hat, falls er sich vertippt.


*** Lösung
Es gibt 2 Möglichkeiten...


ON ERROR GOTO xxx muss in das Hauptprogramm geschrieben werden. Am besten gleich in die allererste Zeile. Die Sprungmarke zu der er dann springen soll MUSS sich ebenfalls im Hauptprogramm befinden und darf leider nicht in einer SUB/FUNCTION stehen. Das ist übrigens ein Riesen-Nachteil von QBasic und eine große Einschränkung bei komlexen Softwareprojekten!! Das Programm das dann ab der Sprungmarke xxx hingeschrieben ist, MUSS mit einem RESUME enden.


Möglichkeiten hierfür sind RESUME yyy (macht bei einer bestimmten Zeile weiter) oder einfach nur Resume (macht in der nächsten Zeile nach dem Fehler weiter) . Nachteil von ON ERROR ist, das es bei JEDEM Fehler zur Sprungmarke geht. Um was für einen Fehler es sich genau handelt, kann man glaub ich mit ERR herausfinden.


Eine andere Möglichkeit zur Erkennung, ob eine Datei existiert oder nicht, ist diese:

OPEN "test.123" FOR BINARY AS #1
IF LOF(1) = 0 THEN PRINT "Fehler": CLOSE #1: KILL "test.123"


Wenn die Datei schon existiert hat sie auch eine Größe > 0, da ja schon was drinsteht. Wenn sie noch nicht existiert, wird sie neu erstellt und hat die Größe Null. Also heißt das jede Datei die die Größe 0 hat kann vorher nicht existiert haben. Mit BINARY wird der Dateimodus "binär" aktiviert. Das hat den Vorteil, dass eine bereits vorhandene Datei beim Öffnen nicht gelöscht wird.



Answer 13
~~~~~~~~~~~~~~
[ from The Official FidoNet Quick Basic Echo's FAQ, Edited by Greg Easthom ( greg_easthom*bandmaster.bc.ca ), Dec 15, 1999 ]


HOW CAN I CHECK FOR THE EXISTENCE OF A CERTAIN FILE?


There are many ways to do this; this FAQ will cover two of them. One method is to use the error-trapping features of QB (code by David Aukerman):


INPUT "Enter the file to open: ", File$
FileThere% = 1 'assume the file is there
ON ERROR GOTO FileNotFound
OPEN File$ FOR INPUT AS #1
ON ERROR GOTO 0
IF FileThere% = 1 THEN 'if we haven't been proven wrong,
PRINT "The file exists."
ELSE
PRINT "The file does not exist."
END IF
END

FileNotFound:
SELECT CASE ERR
CASE 53: FileThere% = 0 'File not found!!
END SELECT


Another method is to use INTERRUPTs. If you use this one, be sure to load QB with the /L switch. Code by Joe Negron.


DEFINT A-Z
DECLARE FUNCTION Exist% (FileName$)
'***************************************************************
'* FUNCTION Exist% *
'* *
'* PURPOSE *
'* Uses DOS ISR 21H, Function 4EH (Find First Matching *
'* Directory Entry) to determine the existence of FileName$.*
'***************************************************************
FUNCTION Exist% (FileName$) STATIC
DIM IRegsX AS RegTypeX, ORegsX AS RegTypeX
IRegsX.ax = &H4E00
IRegsX.cx = &H3F 'search for all files
FileName$ = FileName$ + CHR$(0) 'must end with null byte
'
IRegsX.ds = VARSEG(FileName$) 'load DS:DX with
IRegsX.dx = SADD(FileName$) 'address of FileName$
'
InterruptX &H21, IRegsX, ORegsX
Exist% = ORegsX.ax = 0 'if ax contains a value,
'remove the null byte
FileName$ = LEFT$(FileName$, LEN(FileName$) - 1)
END FUNCTION

_________________

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
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.07.2006, 18:21    Titel: Antworten mit Zitat

sebastian link reicht.. auch wenn du mod bist Zunge rausstrecken
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 08.07.2006, 18:29    Titel: Antworten mit Zitat

Ich habs in meiner Offline-MonFAQ rausgesucht und war dann zu bequem, den Link zur entsprechenden Onlineseite rauszusuchen. Die Online-MonFAQ lädt immer so lange.... urgs!
_________________

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
BombE



Anmeldungsdatum: 18.01.2006
Beiträge: 31

BeitragVerfasst am: 08.07.2006, 18:43    Titel: Antworten mit Zitat

hallo

Vielen Dank für eure schnellen Antworten allerdings habe ich es noch nicht geschafft das Prog zum laufen zu bringen hier ist mahl der komplette Code es geht halt darrum alle 25 sekunden zu gucken ob die Datei existiert und wenn die existirt sie zu löschen damit sie neu gesendet werden kann falls euch das Programm nicht sinfoll erscheint ich brauche es um zu sehen ob ein Rechner im Internet an ist und er soll später in dieser Datei paar Informationen mitsenden ich habb das ganze sogar schohn mit nem Kollegen in C geschrieben allerdings habe ich da Problehme mit der Schleife und ne CPU Auslastung von 100%
weinen

Code:


SHELL "if exist datei.txt del datei.txt"
start:
ON ERROR GOTO fehler
OPEN "I", #1, datei.txt
CLOSE #1
GOTO Ende
Ende:
PRINT "alles ok."
SLEEP 25
GOTO start
fehler:
PRINT "keine Daten empfangen."
SLEEP 25
GOTO start


Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 08.07.2006, 19:28    Titel: Antworten mit Zitat

DOS-Programme verursachen auf Windows NT/2000/XP immer eine 100%ige Prozessorauslastung. Dies lässt sich nur durch die Verwendung des Interrupts &H2F vermeiden. Such mal im Forum nach "DoNothing". Ansonsten schau mal in meine Signatur. zwinkern
_________________

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
BombE



Anmeldungsdatum: 18.01.2006
Beiträge: 31

BeitragVerfasst am: 08.07.2006, 22:08    Titel: Antworten mit Zitat

der Link ist tot missbilligen neutral
http://ssteiner.freebasic.de/index.php?s=download&file=auslast.zip
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 09.07.2006, 00:11    Titel: Antworten mit Zitat

Problem behoben. lächeln
_________________

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
BombE



Anmeldungsdatum: 18.01.2006
Beiträge: 31

BeitragVerfasst am: 09.07.2006, 10:48    Titel: Antworten mit Zitat

Vielen Dank das funzt 1a grinsen aber was war denn jetzt an meiner qb version falsch ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 09.07.2006, 12:02    Titel: Antworten mit Zitat

An deinem QB ist nichts falsch. Die obige Routine ist nur ein Assemblerprogramm,
das Windows ein bisschen Zeit zum Verschnaufen gibt... zwinkern

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



Anmeldungsdatum: 18.01.2006
Beiträge: 31

BeitragVerfasst am: 09.07.2006, 12:37    Titel: Antworten mit Zitat

peinlich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bad_King
gesperrt


Anmeldungsdatum: 15.04.2006
Beiträge: 455
Wohnort: nähe Stuttgart

BeitragVerfasst am: 10.07.2006, 21:15    Titel: :x :x :x :x :x :x :x :hammer: :hammer: :x :x :x Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
MonsterFAQ hat Folgendes geschrieben:
Frage deutsch
~~~~~~~~~~~~~~
Wie stelle ich fest, ob eine Datei vorhanden ist?


Question English
~~~~~~~~~~~~~~
How can I detect if a certain file is existing or not?
How to figure out whether a file is existing or not?



Antwort 1
~~~~~~~~~~~~~
[ von Thomas Antoni, 26.10.2004 - 5.4.2006 ]

So kann man prüfen, ob eine Datei vorhanden ist:


*** Variante 1: Fehlerauswertung mit ON ERROR
Willst Du feststellen, ob eine -> Sequentiellen Datei vorhanden ist, so musst Du sie erst zum Lesen öffnen. Ist die Datei nicht vorhanden, dann erfolgt eine Fehlermeldung, die Du mit ON ERROR abfangen kannst. Bei -> Direktzugriffsdateien und -> Binärdateien funktioniert das auch, aber dort gibt es eine elegantere Methode, die weiter unten in "Variante 2" erläutert ist.


Mein folgendes Programm "SEQERROR.BAS" zeigt, wie Du das Vorhandensein einer Datei mit ON ERROR fesstellen kannst.


'*********************************************************************
' SEQERROR.BAS = Stellt fest, ob eine sequentielle Datei vorhanden ist
' ============
' (C) Thomas Antoni, 15.5.2005
'*********************************************************************
ON ERROR GOTO fehler
INPUT "Welche Datei wollen Sie oeffnen "; dateiname$
OPEN dateiname$ FOR INPUT AS #1
GOTO weiter
fehler: PRINT "Datei nicht vorhanden!"
INPUT "Geben Sie den korrekten Dateinamen ein"; dateiname$
RESUME 'Ruecksprung zum fehlerverursachenden Befehl
weiter: PRINT "Datei ist vorhanden"
'... Hier folgen die weiteren Befehle


Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online unter www.antonis.de/faq/progs/seqerror.bas .


Das Programm beendet sich, wenn die eingegebene Datei nicht vorhanden ist. Viel komfortabler wäre es natürlich, wenn Du dem Anwender eine Chance zur Neueingabe des Dateinamens geben würdest. Wie man das realisieren kann, zeigt das folgende Programm:



'****************************************************************************
' FILEXIS2.BAS - Testet ob eine Datei vorhanden ist (Komfort-Version)
' ============
' Dieses Q(uick)Basic-Programm demonstriert, wie man feststellt, ob eine
' Datei vorhanden ist. Der Pfad- und Dateiname wird vom Anwender sooft
' erfragt bis auf die Datei ohne Fehler zugegriffen werden kann.
'
' (c) Thomas Antoni, 5.4.2006
'****************************************************************************
'
ON ERROR GOTO ErrorHandler 'Bei nicht vorhandener Datei
'Fehlerroutine anspringen
Start: 'Wieder-Einsprungstelle bei Fehler (nicht vorhandene Datei)
CLS
IF Fehler% = 1 THEN
COLOR 12, 0 'rot auf schwarz
PRINT "Datei "; path$; " exististiert nicht, bitte richtigen Pfad eingeben!"
COLOR 7, 0 'wieder normale Schrift hellgrau auf schwarz
END IF
'
'------------- Pfad- und Dateinamen erfragen und in path$ hinterlegen
LOCATE 3
PRINT "Gib den Pfad- und Dateinamen ein, z.B. C:\text\meintext.txt"
INPUT path$
'
'----------- Datei oeffnen
Fehler% = 0 'Vorbesetzung: Kein Fehler
OPEN path$ FOR INPUT AS #1
'ist die Datei nicht vorhanden, erfolgt sofort ein Sprung zum ErrorHandler
CLOSE #1
PRINT "Der Pfad ist korrekt eingegeben."
SLEEP 'Warten auf beliebige Taste
END
'
'----------- Fehlerbehandlung falls Datei nicht vorhanden -------------------
ErrorHandler:
Fehler% = 1 'Fehlermerker setzen
RESUME Start 'neue Eingabe


Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online unter www.antonis.de/faq/progs/filexis2.bas .



*** Variante 2: Dateilänge abfragen
Bei -> Direktzugriffdateien und -> Binärdateien kann man die Dateilänge auf "0" abfragen. Hat eine Datei die Länge Null, dann kann man davon ausgehen, dass sie nicht existiert. Es gibt zwar auch Dateien die keine Daten enthalten. Das siehst Du z.B., wenn Du z.B. ein leeres Programm in der QBasic-Entwicklungsumgebung abspeicherst. In der Programmierpraxis werden solche Leerdateien aber jedoch fast nie vorkommen.

Diese Längenabfrage funktioniert wie folgt:


IF LOF (<Dateinr. ohne #>) > 0 THEN ... 'Dateilänge > 0 ?


Die Methode funktioniert bei Direktzugriffs-Dateien und binären Dateien. Bei sequentiellen Dateien ist sie nur in der Zugriffsart OUTPUT verwendbar.


**** Variante 3
Bei Direktzugriffs-Dateien kannst prüfen, ob ein definiertes Datum z.B. eine "1" aus der ersten Datensatz der Datei rücklesbar ist, siehe TOP96.BAS (). Wenn stattdessen "0" ausgelesen wird, ist die Datei nicht vorhanden.

Welche der 3 genannten Varianten sinnvoll ist, hängt von der Dateiart und der Zugriffsart ab.



Antwort 2
~~~~~~~~~~~~~~~~
[ von Andreas Meile im QB-Forum, 2004 ]
.
Weil in QB so etwas wie file_exists() aus der Programmiersprache PHP fehlt, würde ich doch dafür eine kleine Ersatz-FUNCTION wie folgt implementieren:


'********************************************************
' FILEXIST.EXE = Testet ob eine Datei existiert
' ============
' Dieses QBasic-Programm stellt fest, ob eine Datei
' mit dem angegebenen Pfad- und Dateinamen existiert.
' Es ist ein einfacher Ersatz f?r file_exists() aus PHP
'
' (c) Andreas Meile, 25.10.2004
' ("Dreael"; qbasicde*dreael.ch)
'********************************************************
'
DECLARE FUNCTION DateiExistiert% (d$)
'
INPUT "Dateiname"; d$
'
IF DateiExistiert(d$) THEN
PRINT "Datei "; d$; " existiert."
ELSE
PRINT "Datei "; d$; " gibt es nicht!"
END IF
'
END
'
Fehler:
ex% = 0
RESUME NEXT
'
FUNCTION DateiExistiert% (d$)
SHARED ex%
'
ex% = -1
ON ERROR GOTO Fehler
OPEN d$ FOR INPUT AS 1
CLOSE 1
ON ERROR GOTO 0
DateiExistiert% = ex%
END FUNCTION


Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online unter www.antonis.de/faq/progs/filexist.bas .


Leider muss der Error-Handler bei Q(uick)Basic (hier die Befehlssequenz nach "Fehler:") im Hauptprogramm platziert sein und daf nicht in einer SUB oder FUNCTION untergebracht sein.



Antwort 3
~~~~~~~~~~~~~
[ im QB-Forum, 26.10.2004 ]

Wenn der Dateiname nicht als Variable im Programm gebraucht wird, kann man eine
Batchdatei oder als Shell-Befehl das ganze recht einfach machen.


*** Codebeispiel mit SHELL

SHELL "if exist c:\file.dat del c:\file.dat"


*** Codebeispiel mit einer Batchdatei namens loesch.bat

Inhalt der Batchdatei loesch.bat:

if exist %1 del %1


Inhalt QB-Programms, das die Batchdatei loesch.bat aufruft:

SHELL "loesch c:\file.dat"



Antwort 4
~~~~~~~~~
[ von BufferUnderrun, 11.1999 ]
.
Das geht gemäß folgender Befehlssequenz:
.
ON ERROR GOTO Handler
INPUT "Welche Datei ist auf ihre Existenz hin zu prüfen? ",datnam$
OPEN "I", #1, datnam$
CLOSE #1
GOTO Ende

Handler:
PRINT "Datei ";datnam$;"nicht gefunden!"
RESUME Ende

Ende:


Wichtig ist, dass die Datei sequenziell im INPUT-Modus geöffnet wird, denn im OUTPUS-Modus würde sie einfach erstellt werden.


Antwort 5
~~~~~~~~
[ von Ch@rly im QB-Forum 29.4.02 ]
.
Es gibt verschiedene Möglichkeiten, das abzuprüfen.


1. Wenn Du weißt, wie die Datei heißt, kannst Du sie einfach öffnen. Wenn das
Geht, dann ist die CD bereit. Z.B. so:


ON ERROR GOTO ErrorHandler:

fehler = 0
kanal = FREEFILE
OPEN "c:\tmp\test.bas" FOR INPUT AS #kanal
IF fehler = 0 THEN
CLOSE #kanal
PRINT "Die Datei existiert !"
ELSE
PRINT "Die Datei existiert nicht !"
END IF
END

ErrorHandler:
fehler = ERR
RESUME NEXT


Diese Methode hat 2 kleine Nachteile. Erstens ist sie so nicht Multi-User-fähig. Wenn die Datei z.B. existiert, aber von einem andern Programm exklusiv geöffnet ist, so kommt es trotzdem beim Öffnen zu einem Fehler. Um dies zu verhindern, müßte man zusätzlich die Fehler Codes abfragen. Zweitens mußt Du den Namen einer Datei kennen, um sie anwenden zu können.


2. Du machst ein Dir in eine Datei und liest diese aus:

ON ERROR GOTO ErrorHandler:

SHELL "dir c:\tmp\*.txt > c:\tmp\test.tmp"

fehler = 0
kanal = FREEFILE
OPEN "c:\tmp\test.tmp" FOR INPUT AS #kanal
IF fehler = 0 THEN
DO
LINE INPUT #kanal, a$
PRINT a$
' Hier die Kontrolle, ob es die Datei gibt.
LOOP WHILE NOT EOF(kanal)
CLOSE #kanal
END IF
KILL "c:\tmp\test.tmp"
END

ErrorHandler:
fehler = ERR
RESUME NEXT


Auch diese Methode hat einen Nachteil, und zwar kann ist das Ergebnis von DIR je nach Betriebssystem unterschiedlich sein. Außerdem ist sie natürlich langsam, da mehrere Male auf das Laufwerk zugegriffen werden muß


3. Du gehst zu www.plutomania.de.vu und dort findest Du unter SUBS – Datei verschiedene Routinen, die bestens funktionieren. Diese arbeiten mit Interupts, so daß sie schnell und ohne die oben beschriebenen Nachteile funktionieren.


Antwort 6
~~~~~~~~~
[ von TT-Soft ( www.East-Power-Soft.de/ ) per Mail, 18.01.2002 ]
.
Das geht mit der folgenden Befehlssequenz:


FileName$ = "BEISPIEL.TXT"
OPEN FileName$ FOR BINARY AS #1:L = LOF(1):CLOSE #1
IF L = 0 then
KILL FileName$
PRINT "Datei nicht vorhanden"
ELSE
PRINT "Datei existiert"
END IF



Antwort 7
~~~~~~~~~
Einfach vorher Fehlerroutine einbauen, dann versuchen Datei zu öffnen, z.B.


ON ERROR GOTO fehler
'
OPEN file$ FOR INPUT AS #1
CLOSE
'
if fehler% = 0 then print "DATEI EXISTIERT!!"
'
fehler:
fehler%=1
RESUME NEXT


Antwort 8
~~~~~~~~~
Wenn du ON ERROR nicht benutzen willst, kannst du's auch so machen:


OPEN "[Datei.ext]" FOR BINARY AS #1
IF LOF(1) < 1 DateiCheck=0
CLOSE #1


Der Nachteil dieser Methode ist, dass eine neue Datei mit dem Namen mit der Länge Null erzeugt wird, wenn es die Datei nicht gibt. Diese kannst Du z.B. mit dem KILL-Befehl löschen.


Antwort 9
~~~~~~~~
Du hast verschiedene Möglichkeiten.


Du kannst eine Fehlerbehandlung einbauen, das könnte dann ungefähr so aussehen:


ON ERROR GOTO ErrorHandler
'
fehler = 0
NAME "c:\tmp\test.txt" AS "c:\tmp\test1.txt"
IF fehler = 0 THEN
PRINT "OK"
ELSE
PRINT "Fehler:"; fehler
END IF
'
END
'
'
ErrorHandler:
fehler = ERR
RESUME NEXT


Oder du benutzt eine Routine, welche abprüft, ob die Datei existiert. Ungefähr so:


IF FileExist(file1$) THEN
NAME file1$ AS file2$
PRINT "OK"
ELSE
PRINTt "Fehler !"
END IF


Auf TheShadow's Webseite www.plutomania.de.vu/ bzw http://www.quickbasic.de.vu findest Du unter SUBSAMMLUNG - DATEI die meiner Meinung nach beste FileExist Routine! Diese sieht wie folgt aus:


FUNCTION Datei.Exist (Datei$)
IF INSTR(Datei$, ":") THEN Laufw = ASC(UCASE$(LEFT$(Datei$, 1))) - 64 ELSE Laufw = -1
IF Laufw.Bereit(Laufw) = 0 THEN EXIT FUNCTION
DateiX$ = LTRIM$(RTRIM$(UCASE$(Datei$))) + CHR$(0)
Inter.Dx = VARPTR(DTA)
Inter.Ds = VARSEG(DTA)
Inter.Ax = &H1A00
CALL INTERRUPT(&H21, Inter, InterX)
Inter.Ax = &H4E00
Inter.Cx = 247
Inter.Dx = SADD(DateiX$)
Inter.Ds = VARSEG(DateiX$)
CALL INTERRUPT(&H21, Inter, InterX)
IF (InterX.Fl AND 1) THEN ELSE Datei.Exist = 1
END FUNCTION



Antwort 10
~~~~~~~~~
[ von Frank Neumann ("Triton"; http://www.silizium-net.de , isn-interactive*web.de ), per Mail, 9.9 01 ]


*** Antwort a
wie wär's mit


ON ERROR Gosub NichtDa
OPEN "ss.txt" FOR INPIT AS #1
PRINT "Datei vorhanden!"
END
'
NichtDa:
PRINT "Datei nicht gefunden
END


*** Antwort b
Wenn ich weiß, in welchem Verzeichnis die Datei liegen soll, kann ich einfach alle Dateien(Namen) in eine Datei schreiben lassen und schauen, ob sie(die Datei) dabei ist.
Das geht mit dem DOS Befehl DIR den man dann so anwendet:


SHELL "dir/b/oe/a-d > dir.$$$"


Weiß man nicht, in welchem Verzeichnis die Datei liegt, muss man das gleiche mit Unterverzeichnissen machen und die dann alle nach der ersten Methode durchsuchen lassen. So schreibt man die Verzeichnisse in eine Datei:


SHELL "dir/ad/b > ver.$$$"



Antwort 11
~~~~~~~~~
[ von Manuel ( mk-gamemaker*arcor.de ) im QB-Forum, 27.11.2004 ]


Um zu erkennen, ob eine Datei vorhanden ist, kannst du die ERR-Variable nutzen. Diese Variable gibt bei einer Datei, die nicht existiert, den Wert 53 aus. Mithilfe von "ON ERROR GOTO blabla" am Programmanfang lässt sich jedoch der Fehler abfangen, z.B. so:


ON ERROR GOTO fehler
OPEN "test.txt" FOR INPUT AS #1
vorhanden:
' Er soll das und das machen
END
nichtvorhanden:
' Er soll das und das machen
END
'
fehler:
IF ERR = 53 THEN RESUME nichtvorhanden


Erläuterung: Wenn die Datei "test.txt" nicht vorhanden ist, springt das Programm nach 'fehler:'. Die ERR-Variable speichert, wie gesagt, den aktuellen Fehler. Ist die Fehlernummer 53, springt das Programm mit dem RESUME-Befehl nach 'nichtvorhanden' hin




Antwort 12
~~~~~~~~~
[ von A.K. ( webmaster*iconsoft.de ) im QB-Forum, 29.5.2003 ]


*** Problem
Kann mir jemand den ON ERROR GOTO -Befehl erklären? Ich habe ein Telefonbuch geschreiben. Wenn man beim Suchen vertippt, öffnet mein Programm eine Datei zum Lesen, die noch gar nicht existiert. Z.B.:

cls
open"test.123" for input as #1 'die datei gibt es nicht!
input #1,a$
close #1


Wo muss ich nun den ON ERROR Befehl einfügen damit mein Programm funktioniert? Es soll dann wieder zur ersten Zeile springen, damit der Anwender eine 2. Chance zur korrekten Eingabe des Dateinamens hat, falls er sich vertippt.


*** Lösung
Es gibt 2 Möglichkeiten...


ON ERROR GOTO xxx muss in das Hauptprogramm geschrieben werden. Am besten gleich in die allererste Zeile. Die Sprungmarke zu der er dann springen soll MUSS sich ebenfalls im Hauptprogramm befinden und darf leider nicht in einer SUB/FUNCTION stehen. Das ist übrigens ein Riesen-Nachteil von QBasic und eine große Einschränkung bei komlexen Softwareprojekten!! Das Programm das dann ab der Sprungmarke xxx hingeschrieben ist, MUSS mit einem RESUME enden.


Möglichkeiten hierfür sind RESUME yyy (macht bei einer bestimmten Zeile weiter) oder einfach nur Resume (macht in der nächsten Zeile nach dem Fehler weiter) . Nachteil von ON ERROR ist, das es bei JEDEM Fehler zur Sprungmarke geht. Um was für einen Fehler es sich genau handelt, kann man glaub ich mit ERR herausfinden.


Eine andere Möglichkeit zur Erkennung, ob eine Datei existiert oder nicht, ist diese:

OPEN "test.123" FOR BINARY AS #1
IF LOF(1) = 0 THEN PRINT "Fehler": CLOSE #1: KILL "test.123"


Wenn die Datei schon existiert hat sie auch eine Größe > 0, da ja schon was drinsteht. Wenn sie noch nicht existiert, wird sie neu erstellt und hat die Größe Null. Also heißt das jede Datei die die Größe 0 hat kann vorher nicht existiert haben. Mit BINARY wird der Dateimodus "binär" aktiviert. Das hat den Vorteil, dass eine bereits vorhandene Datei beim Öffnen nicht gelöscht wird.



Answer 13
~~~~~~~~~~~~~~
[ from The Official FidoNet Quick Basic Echo's FAQ, Edited by Greg Easthom ( greg_easthom*bandmaster.bc.ca ), Dec 15, 1999 ]


HOW CAN I CHECK FOR THE EXISTENCE OF A CERTAIN FILE?


There are many ways to do this; this FAQ will cover two of them. One method is to use the error-trapping features of QB (code by David Aukerman):


INPUT "Enter the file to open: ", File$
FileThere% = 1 'assume the file is there
ON ERROR GOTO FileNotFound
OPEN File$ FOR INPUT AS #1
ON ERROR GOTO 0
IF FileThere% = 1 THEN 'if we haven't been proven wrong,
PRINT "The file exists."
ELSE
PRINT "The file does not exist."
END IF
END

FileNotFound:
SELECT CASE ERR
CASE 53: FileThere% = 0 'File not found!!
END SELECT


Another method is to use INTERRUPTs. If you use this one, be sure to load QB with the /L switch. Code by Joe Negron.


DEFINT A-Z
DECLARE FUNCTION Exist% (FileName$)
'***************************************************************
'* FUNCTION Exist% *
'* *
'* PURPOSE *
'* Uses DOS ISR 21H, Function 4EH (Find First Matching *
'* Directory Entry) to determine the existence of FileName$.*
'***************************************************************
FUNCTION Exist% (FileName$) STATIC
DIM IRegsX AS RegTypeX, ORegsX AS RegTypeX
IRegsX.ax = &H4E00
IRegsX.cx = &H3F 'search for all files
FileName$ = FileName$ + CHR$(0) 'must end with null byte
'
IRegsX.ds = VARSEG(FileName$) 'load DS:DX with
IRegsX.dx = SADD(FileName$) 'address of FileName$
'
InterruptX &H21, IRegsX, ORegsX
Exist% = ORegsX.ax = 0 'if ax contains a value,
'remove the null byte
FileName$ = LEFT$(FileName$, LEN(FileName$) - 1)
END FUNCTION


Ist aber lang ....
_________________
Mein Server: http://gianluca.dyndns.org
(Ist meistens nur Tagsüber an)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.07.2006, 21:25    Titel: Antworten mit Zitat

Ach ne. peinlich


_________________

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
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 10.07.2006, 21:56    Titel: Antworten mit Zitat

Kopf schütteln

War ja klar, das du das zitieren musstest mit den Augen rollen

Es wurde schonmal von MisterD gesagt, das Sebastian nur ein Link hätte posten können, da musst du nicht nochmal extra sagen, dass das ein langer text war.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



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

BeitragVerfasst am: 11.07.2006, 12:11    Titel: Antworten mit Zitat

@A.K.: Hab' mir jetzt den MFAQ-Artikel nicht komplett durchgelesen, aber: wenn du das so auf einem schreibgeschützten Datenträger machst, gibt's 'nen Fehler. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 11.07.2006, 12:21    Titel: Antworten mit Zitat

Kann man nicht einfach shell "dir ordner/ >temp.txt" machen?
Ich bin mir nicht sicher, aber der befehl sollte dann DIe Ausgabe von DIR in ne datei umleiten, das könnte man dann ja einlesen und überprüfen, ob die Datei vorhanden ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



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

BeitragVerfasst am: 11.07.2006, 12:25    Titel: Antworten mit Zitat

Umständlich... grinsen
Funktioniert aber bei Datenträgern, die schreibgeschützt oder voll sind oder ein riesigen Ordner haben, in denen das Programm ausgeführt wird, auch nicht (falls man mir folgen kann lachen).
Gibt doch auch 'nen DOS-Int für, oder?
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BombE



Anmeldungsdatum: 18.01.2006
Beiträge: 31

BeitragVerfasst am: 11.07.2006, 13:45    Titel: Antworten mit Zitat

ich bekomms nicht hinn kann mir villeicht netterweise mal einen code zeigen der einfach nur guckt ob test.txt existirt wenn ja goto ja wenn nein goto nein ? weil ich habb mir diesen langen post mahl durchgelesen und ausprobiert aber immer wieder komemn irgentwelche fehler
traurig
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 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