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:

Liste der verfügbaren Laufwerke ermitteln

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



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 02.04.2005, 11:16    Titel: Liste der verfügbaren Laufwerke ermitteln Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 02.04.2005, 11:32    Titel: Antworten mit Zitat

Dusky_Joe, das
Code:

ON LOCAL ERROR [...]

geht nicht.
LOCAL kenn' ich auch gar nicht als QB-Schlüsselwort...

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 02.04.2005, 11:36    Titel: Antworten mit Zitat

Hallo.

Nimm doch den CommonDialog. lächeln

Ich überlege aber noch, ob mir noch ein paar Lösungen einfallen. lächeln

Viele Grüße!
Sebastian
_________________

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
dreael
Administrator


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

BeitragVerfasst am: 02.04.2005, 11:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 02.04.2005, 11:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 02.04.2005, 11:57    Titel: Antworten mit Zitat

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! lächeln

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 03.04.2005, 09:41    Titel: Antworten mit Zitat

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 peinlich
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
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 FreeBASIC. 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