Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Ihr wisst ja, dass FileSize() den Wert -2 zurückgibt, denn der übergebene Pfad in Wirklichkeit ein Ordner ist. Handelt es sich um eine Datei wird seine Größe in Bytes zurückgegeben.
Hier wird das einfach nur ausgenutzt, um Festzustellen, ob der Pfad ein Ordner (=Laufwerk) ist, oder nicht exisitiert.
Wichtiger Hinweis: TS-Soft meint, man sollte Diskettenlaufwerke nicht testen, das könne gefährlich werden. Meine Meinung: Wer braucht schon Diskettenlaufwerke? Wer sie nicht braucht, testet von 67-90, nicht wie im Code von 65-90. Außerdem kann mit dieser Methode nicht verhindert werden, dass die Meldung "Bitte legen Sie einen Datenträger in Laufwerk X ein", erscheint. Sollte diese Meldung erscheinen, ist es mit FileSize() nicht mögoch, diese Meldung zu unterdrücken.
Glücklicherweise ist bei mir (XP, SP2) diese Meldung noch nie erschienen, bei dieser Methode.
Das is ma was.
Auf einache Ideen kommt man also doch einfach.
Naja bin jetz aber zu faul meine Win Maschiene zu starten um zu gucken obs klappt müsste aber.
Mfg mknjc
Ich nutze PureBasic 4.02 unter Linux und Windows.
Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
For i = 0 To 25
Debug "Drive: " + Chr(i + 65)+ ": " + Str(DriveType_(i))
Next
Laufwerksbuchstaben gibts weder auf nem Mac noch unter Linux
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
nco2k hat geschrieben:jep, seh ich genauso, aber man sollte GetDriveType_() anstelle von DriveType_() verwenden, da DriveType_() nicht kompatibel zu win9x systemen ist.
, das kommt davon, wenn man in der MSDN nicht zuende liest.
Verspreche Besserung
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
In erster Linie wollte ich die Idee einfach mal posten, wozu mir al90 geraten hat. Außerdem ist diese lösung die einfachste Lösung für PureBasic-Anfänger, die ja noch keine API beherrschen oder noch nie davon gehört haben.
Ihr wisst ja, dass FileSize() den Wert -2 zurückgibt, denn der übergebene Pfad in Wirklichkeit ein Ordner ist. Handelt es sich um eine Datei wird seine Größe in Bytes zurückgegeben.
Hier wird das einfach nur ausgenutzt, um Festzustellen, ob der Pfad ein Ordner (=Laufwerk) ist, oder nicht exisitiert.
Wichtiger Hinweis: TS-Soft meint, man sollte Diskettenlaufwerke nicht testen, das könne gefährlich werden. Meine Meinung: Wer braucht schon Diskettenlaufwerke? Wer sie nicht braucht, testet von 67-90, nicht wie im Code von 65-90. Außerdem kann mit dieser Methode nicht verhindert werden, dass die Meldung "Bitte legen Sie einen Datenträger in Laufwerk X ein", erscheint. Sollte diese Meldung erscheinen, ist es mit FileSize() nicht mögoch, diese Meldung zu unterdrücken.
Glücklicherweise ist bei mir (XP, SP2) diese Meldung noch nie erschienen, bei dieser Methode.
MountListInit()
Repeat
mt.s = MountList()
If mt <> ""
vn.s = GetMountVolName(mt)
dt = RealDriveType(vn)
Select dt
Case #DRIVE_CDROM
ty.s = "CD Rom"
Case #DRIVE_FIXED
ty = "Festplatte / Fest eingebautes Laufwerk"
Case #DRIVE_NO_ROOT_DIR
ty = "Kein Stammverzeichnis"
Case #DRIVE_RAMDISK
ty = "Ramdisk"
Case #DRIVE_REMOTE
ty = "Netzwerklaufwerk"
Case #DRIVE_REMOVABLE
ty = "Floppy / Wechseldatenträger"
Case #DRIVE_UNKNOWN
ty = "Unbekanntes Laufwerk"
Default
ty = "Typ nicht ermittelbar"
EndSelect
MessageRequester("Laufwerk", mt + #CRLF$ + vn + #CRLF$ + ty)
EndIf
Until mt = ""
Damit kann man dann auch gefahrlos Diskettenlaufwerke ermitteln.
So wie's aussieht, benutzt Droopy (bzw. einer der Autoren) in der Procedure einfach nur einen API-Aufruf. Ich kenne mich aber sleber schon gut mit API aus, sodass ich direkt darauf zugreifen kann und die Laufwerke auch ohne Hilfe durchzähle.
Droopy's Lib werde ich nicht mehr benutzen... 5 Codestücke habe ich dem Typen im April und im Juni zugesand und welche hat er in die Lib übernommen? Keine. Stattdessen sieht die Lib aus, als wäre sie notdürftig nach PB 4 transferiert worden, sogar die Schreibfehler in der Hilfe sind noch die selben...