|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 02.04.2005, 11:16 Titel: Liste der verfügbaren Laufwerke ermitteln |
|
|
Hi FB-Community!
Ich möchte einen Speichern/Laden-Dialog erstellen, und muss dazu natürlich auch die Möglichkeit, das Laufwerk zu wechseln bieten können. Und um zu wechseln, muss erst mal bekannt sein, welche Laufwerke verfügbar sind *g*
Unter QB ging das relativ einfach:
Code: |
ON LOCAL ERROR GOTO Haendler
FOR Lw = ASC("C") TO ASC("Z")
Fail% = 0
CHDIR CHR$(Lw) + ":"
IF Fail% = 0 THEN Liste$ = Liste$ + CHR$(Lw)
NEXT
EXIT SUB
Haendler:
Fail = ERR
RESUME
|
blöderweise erzeugt FB keinen Fehler, wenn CHDIR auf ein nichtexistierendes Verzeichnis/Laufwerk zeigt....
SHELL gibt immerhin eine Fehlermeldung auf dem Prompt aus, die man mittels temporärer Datei ausnutzen kann...:
Code: |
...
SHELL CHR$(Lw) + ": >" + TempFile$
...
|
Allerdings gefällt mir diese Alternative nicht....
Kennt jemand eine Gute Alternative, evtl via API, irgendwelche Routinen in der SHELL.BI, USER32.BI, o.ä.?
Danke für eure Mühen *g*
Viel Spaß noch am Coden! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 02.04.2005, 11:32 Titel: |
|
|
Dusky_Joe, das
Code: |
ON LOCAL ERROR [...]
|
geht nicht.
LOCAL kenn' ich auch gar nicht als QB-Schlüsselwort...
jb |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2514 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 02.04.2005, 11:38 Titel: |
|
|
Falls FreeBasic auch wirklich mit 32-Bit umgehen kann (=Umweg über ein temopräres .VBS-Script entfällt hoffentlich!), dürfte der von mir einst in
http://beilagen.dreael.ch/QB/LW_LISTE.BAS
vorgestellte Ansatz möglich sein, wie ihn eigentlich jeder heutige Entwickler in einer aktuellen Microsoft-Entwicklungsumgebung einsetzt: DriveEnumeration-Objekt. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 02.04.2005, 11:46 Titel: |
|
|
Danke für die Hilfe!
Habe inzwischen in der Kernel32.bi folgende Zeile gefunden:
Code: | DECLARE FUNCTION GetDriveType Alias "GetDriveTypeA" (ByVal nDrive As STRING) As INTEGER |
nDrive ist dabe einfach der Name des Laufwerks, "C:" z.B. (Dreael, ich glaube, deine Routine funktioniert ganz ähnlich, oder?)
Als ergebnis kommt 1, wenn das Laufwerk nicht existiert, und andere Zahlen für verschiedene Typen.
A: gibt z.B. 2 Zurück, C:, D:, und E: (alles lokale Festplatten) ergeben 3 und F: (CD-Rom) gibt 5 aus.
@ jb:
LOCAL gibts erst ab QB PDS 7.1 bzw VB
Damit kannst du bestimmen, dass diese Fehlerbehandlungsroutine nur aufgerufen wird, wenn der Fehler in dieser Sub auftritt.
Danke nochmal! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 02.04.2005, 11:57 Titel: |
|
|
Ah. Ist eine sehr sinnvolle Sache.
Unter QuickBASIC 4.5 habe ich das Problem immer so gelöst, dass ich
einer Vatiablen immer andere Werte zugewiesen habe, wenn man momentan in einer
SUB war.
Wenn dann auf einen Fehlerhandler gesprungen wurde, wurde anhand
der Variable entschieden, was gemacht werden sollte...
Danke für die Erklärung!
jb |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 03.04.2005, 09:41 Titel: |
|
|
Nochmal ne Nachfrage:
Sebastian:
Das letzte mal, dass ich was von nem CommonDialog gehört hab, das war.... als ich mir die CDB.BAS von qbasic.de runtergeladen hab - noch zu QB-Zeiten *g*
Mit diesem Vorwissen.... is es einfach ein Windows-vorprogrammierter Speichern/Laden-Dialog?
Wenn ja, wie benutze ich ihn?
in der CommonDlg32.bi sind u.a. diese beiden Zeilen:
Code: |
Declare Function GetOpenFileName Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Integer
Declare Function GetSaveFileName Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Integer
|
was so weit recht vielversprechend klingt... aber wie damit umgehen?
Mit dem Typ OPENFILENAME komm ich ned so ganz zurecht, heißt, ich weiß ned, was die einzelnen Elemente bedeuten....
Code: |
Type OPENFILENAME Field = 1
lStructSize As Integer
hwndOwner As Integer
hInstance As Integer
lpstrFilter As byte ptr
lpstrCustomFilter As byte ptr
nMaxCustFilter As Integer
nFilterIndex As Integer
lpstrFile As byte ptr
nMaxFile As Integer
lpstrFileTitle As byte ptr
nMaxFileTitle As Integer
lpstrInitialDir As byte ptr
lpstrTitle As byte ptr
flags As Integer
nFileOffset As short
nFileExtension As short
lpstrDefExt As byte ptr
lCustData As Integer
lpfnHook As Integer
lpTemplateName As byte ptr
End Type
|
Wäre nett, wenn du mir da ein bisschen Nachhilfe geben könntest *g*
Mit API-Programmierung hab ich noch die größten Probleme
Ich bekomm noch nicht mal ne ganz einfache Menüleiste hin... _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
|
|
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.
|
|