Abfrage ob ein Laufwerk vorhanden ist

Das Forum für Programmierer und Systemadmins. Von Shell-, Perl- und PHP-Scripts bis zur objektorientierten Programmierung mit C++.

Abfrage ob ein Laufwerk vorhanden ist

Beitragvon Greg » Mo 23 Aug, 2004 09:04

Hallo

Ich habe ein kleines Problem in C:
Ich schreibe ein Programm, welches automatisch Dateien von einem Wechsellaufwerk (z.B. USB Stick) auf die Festplatte kopiert. Jetzt würde ich gerne abfragen, ob der gewählt Laufwerksbuchstabe überhaupt existiert, also ober z.B. der USB Stick F:\ vorhanden ist.

Könnt ihr mir da helfen?

Grüße Greg
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon TheProdigy » Di 24 Aug, 2004 09:46

Es gibt im Windows-API Funktionen zum Abfragen der Laufwerke - muss mal suchen .... http://www.coding-board.de/board/showthread.php?t=9499 (auf die Schnelle mit Google)

HTH
TheProdigy
Board-Mitglied
Board-Mitglied
 
Beiträge: 101
Registriert: Mi 05 Mai, 2004 10:41

Beitragvon Greg » Di 24 Aug, 2004 10:43

Leider kenne ich mich mit APIs überhaupt nicht aus, gibt es da eine andere Möglichkeit?
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon TheProdigy » Di 24 Aug, 2004 11:45

Meines Wissens ist das die naheliegendste Variante: Windows stellt dir gewisse Funktionen zur Verfügung, die die von dir gewünschte Information liefern - einfacher kann es nicht gehen.

Du schreibst ein Windows-Programm, oder? Dann würde die Abfrage in etwa so aussehen:
Code: Alles auswählen
UINT uiDriveType;

uiDriveType = GetDriveType("F:");
if( uiDriveType == DRIVE_NO_ROOT_DIR || uiDriveType == DRIVE_UNKNOWN)
{
  // Code für den Fall "Laufwerk nicht verfügbar"
}
else
{
  // Code für den Fall "Laufwerk verfügbar"
}


Wie soll es noch einfacher gehen?

Natürlich musst du die entsprechenden Include-Dateien einbinden, aber wenn du ein Windows-Programm erzeugst, dann sollten sie schon drin sein.

HTH

Nachtrag:
eine andere Möglichkeit wäre es z.B. eine Datei auf dem Laufwerk F: zu öffnen, die sicher existiert. Wenn eine Fehlermeldung kommt, dann gehst du einfach davon aus, dass das Laufwerk nicht exisitert (bzw. du prüfst gezielt auf die dazugehörige Fehlernummer). Funktioniert, ist aber nicht elegant und auch aufwendiger als Obiges.
TheProdigy
Board-Mitglied
Board-Mitglied
 
Beiträge: 101
Registriert: Mi 05 Mai, 2004 10:41

Beitragvon Greg » Mi 25 Aug, 2004 10:57

Alles klar, vielen Dank. das Programm ist eine Win32 Konsolenanwendung. Eine Frage habe ich noch: Was muss ich uncludieren?
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon TheProdigy » Mi 25 Aug, 2004 13:52

Ich habe schon ewig nicht mehr Windows-Programme in C programmiert, daher kann ich es dir nicht sagen. Wahrscheinlich reicht es <windows.h> oder wie immer die Datei heisst, in der das ganze Windows-API definiert ist, zu inkludieren.

Aber normalerweise müsste das Include vom Wizard automatisch erzeugt werden.

... such ...

hier steht es: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getdrivetype.asp

#include <windows.h> ist richtig
TheProdigy
Board-Mitglied
Board-Mitglied
 
Beiträge: 101
Registriert: Mi 05 Mai, 2004 10:41

Beitragvon Greg » Do 26 Aug, 2004 20:34

Es funktioniert!!! Vielen Dank!!!
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon Greg » Mo 30 Aug, 2004 18:19

Ich habe noch eine Frage:

Ich habe einigen Funktionen in externe cpp Dateien ausgelagert. Nun will ich in die main.cpp die anderen cpp Dateien mit den Funktionen inkludieren.

Ich habe #include "sichern.cpp" verwendet.

Früher ging das wunderbar, seit neuem bekomme ich folgenden Fehler:
sichern.obj : error LNK2005: "void __cdecl sichern(char)" (?sichern@@YAXD@Z) bereits in main.obj definiert

Ich danke für eure Hilfe ;)
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21


Zurück zu PROGRAMMIER FORUM

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste