Frage deutsch
~~~~~~~~~~~~~~
Wie ermittle ich den Pfadnamen des gerade aktuellen Verzeichnisses?
 

Question English
~~~~~~~~~~~~~~
How to configure out the name of the actual path?
 

Antwort 1
~~~~~~~~~
[ von Lukas Widmer und Andreas Meile im QB-Forum 2.2.02 ]
.
Der folgende Befehl trägt den aktuellen Pfadnamen in die Datei temp.txt ein:
SHELL "cd > temp.txt"
 
Die komplette FUNCTION könnte etwa so aussehen:
 
FUNCTION pwd$()
SHELL "cd >%TEMP%\~pwd.txt"
OPEN ENVIRON$("TEMP") + "\~pwd.txt" FOR INPUT AS 1
LINE INPUT#1, p$
CLOSE 1
KILL ENVIRON$("TEMP") + "\~pwd.txt"
pwd$ = p$
END FUNCTION
 

Antwort 2
~~~~~~~~~~
[ von MATzEN (
mcbrendel*gmx.de ) im QB-Forum, 2.2.02 ]
 
DEFINT A-Z
FUNCTION GetCurrentPath$
DIM DTA AS STRING * 80
'
RegsX.Ax = &H1900
CALL INTERRUPT(&H21, RegsX, RegsX)
Drive = RegsX.Ax AND 255
'
RegsX.Ax = &H4700
RegsX.Dx = Drive + 1
RegsX.Si = VARPTR(DTA)
RegsX.Ds = VARSEG(DTA)
CALL INTERRUPT(&H21, RegsX, RegsX)
'
path$ = UCASE$(RTRIM$(LTRIM$(StrBefore(DTA, CHR$(0)))))
path$ = CHR$(Drive + 65) + ":\" + path$ '+ CHR$(-(path$ <> "") * 92)
IF RIGHT$(path$, 1) <> "\" THEN path$ = path$ + "\"
GetCurrentPath$ = path$
END FUNCTION
'
FUNCTION StrBefore$ (Main$, Search$)
StrBefore$ = Main$
s = INSTR(Main$, Search$)
IF s > 0 THEN StrBefore$ = LEFT$(Main$, s - 1)
END FUNCTION
 
Antwort 3
~~~~~~~~~
[ von BufferUnderrun und Thomas Antoni, 11.1999 - 16.5.2002 ]
.
SHELL "cd > tmpxxx.txt" 'speichert den aktuellen Pfad in der Textdatei tmpxxx.txt. Ein Programmbeispiel hierfür ist PATH.BAS, das unten aufgelistet ist.
 
Mit SHELL "cd" und anschließender Verwendung der SCREEN-Funktion könnte
man bei Bedarf den Pfadnamen auch direkt vom Bildschirm einlesen..
 
Wenn man sich nicht ausschließen kann, daß der gerade aktuelle Pfad in einem schreibgeschützten Verzeichnis liegt, sollte man die Datei tmpxxx.txt im tempörären Verzeichnis ablegen. Dessen Pfadname ist eine Umgebungsvariable die sich über den ENVIRON$-Befehl ermitteln läßt: Dies kannst Du über folgenden Befehl bewerkstelligen:
tmp$ = ENVIRON("TEMP")
 
(zur Sicherheit sollten auch "TMP", "tmp", "Tmp", "Temp" und "temp" zur Prüfung Verfügung stehen - in mehreren DATA-Anweisungen z.B. - falls "TEMP" leer ist)
 
Der SHELL-Befehl lautet dann also:
SHELL "CD >" + tmp$ + "\tmpxxx.txt"
 
mit
OPEN "I", #1, tmp$ + "\tmpxxx.txt"
INPUT #1, localdir$
CLOSE #1
KILL tmp$ + "\tmpxxx.txt"
 
bekommt man schließlich das gewünschte Verzeichnis in die Variable localdir$ eingelesen.
 
 
*** Beispielprogramm PATH.BAS
 
'****************************************************************************
' PATH.BAS = QBasic-Programm zum Ermitteln des aktuellen Pfadnamens
' ========================================================================
' Der aktuelle Pfadname wird ermittelt und in die Variable pfad$ eingetragen.
'
' Mit Hilfe des DOS-Befehls "CD" ('Change Directory' ohne Uebergabeparameter)
' wird der aktuelle Pfad ermittelt. Die Ausgabeumleitung "> x.txt" bewirkt,
' daá der Pfadname in die Datei "x.txt" statt auf den Bildschirm ausgegeben
' wird. Der Pfadname wird mit INPUT aus der Datei ausgelesen und in die
' Variable Pfad eingetragen.
' Anschlieáend kann die Datei x.txt mit KILL wieder geloescht werden.
'
'
' \ (c) Thomas Antoni, 29.10.99
' \ /\ Mailto:thomas*antonis.de
' ( ) http://www.antonis.de
' .( o ).
' ----==== Hottest QBasic Stuff on Earth !!! ====----
'
'****************************************************************************
CLS
SHELL "cd > x.txt" 'aktuellen Pfad mit DOS-Befehl CD erfragen u.
'per Ausgabeumleitung in Datei x.txt eintragen
OPEN "x.txt" FOR INPUT AS #1 'sequentielle Datei x.txt zum Lesen oeffnen
INPUT #1, pfad$ 'Inhalt von x.,txt in pfad$ eintragen
CLOSE #1
KILL "x.txt" 'x.txt wieder loeschen
PRINT "aktueller Pfad: "; pfad$
SLEEP
END
 
Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online unter www.antonis.de/faq/progs/path.bas .
 
Antwort 4
~~~~~~~~~~~~~
[ von Mecki (
ArMark*t-online.de ) im QB-Forum, 6.4.03 ]


Eine Möglichkeit besteht darin, die Arbeit an DOS zu übergeben: Du rufst mit Hilfe des SHELL-Befehls das DOS-Kommando "CD" (Change Directory) auf und leitest dessen Bildschirmanzeige mit ">" in eine Datei um, die Du dann naschließend per Programm auswertest. Das sieht dann etwa so aus:
 
 
'Das DOS-Kommando CD ohne Parameter zeigt das aktuelle
'Laufwerk und Verzeichnis an. Ueber ">" wird eine
'Ausgabeumleitung in eine Datei statt auf den Bild-
'schirm aktiviert:
'
SHELL "CD > c:\pfad.tmp"
'jetzt steht das Verzeichnis in der Datei pfad.tmp
OPEN "c:\pfad.tmp" FOR INPUT AS #1
DO UNTIL EOF(1)
LINE INPUT #1, A$
LOOP
CLOSE #1
KIL "c:\pfad.tmp" 'temporaere Datei wieder loeschen
PRINT "Das aktuelle Verzeichnis ist "; A$
 

[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]