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 12 Gäste