Aktuelle Zeit: 22.11.2019 23:17

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Alle Laufwerke ermitteln — OHNE API!
BeitragVerfasst: 26.10.2006 19:10 
Offline
Benutzeravatar

Registriert: 01.10.2005 13:15
Hallo!

al90 brachte mich auf die Idee, folgenden Code hier zu posten, damit alle was davon haben:
Code:
For n=65 To 90
   Debug FileSize(Chr(n)+":\")
Next
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.

_________________
PB 4.30
Code:
Macro Happy
 ;-)
EndMacro

Happy End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.10.2006 19:27 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
@AND51
Ist schon sehr gut, aber da fehlen die Buchstaben. :D

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.10.2006 19:33 
Offline
Benutzeravatar

Registriert: 19.04.2006 18:24
DAnn eben so:
Code:
For n=65 To 90
   Debug chr(n) +"0" +  FileSize(Chr(n)+":\")
Next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.10.2006 20:58 
Offline

Registriert: 09.09.2006 12:59
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.10.2006 21:19 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Das ganze funktioniert sowieso nur unter Windows, warum also keine API?
Code:
For i = 0 To 25
  Debug "Drive: " + Chr(i + 65)+ ": " + Str(DriveType_(i))
Next

Laufwerksbuchstaben gibts weder auf nem Mac noch unter Linux :wink:

_________________
PureBasic 5.71 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.2 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.10.2006 22:07 
Offline
Benutzeravatar

Registriert: 08.09.2004 23:13
jep, seh ich genauso, aber man sollte GetDriveType_() anstelle von DriveType_() verwenden, da DriveType_() nicht kompatibel zu win9x systemen ist.

Code:
For i = 0 To 25
  Debug "Drive: " + Chr(i + 65)+ ": " + Str(GetDriveType_(Chr(i + 65)+":\"))
Next


DriveType:
http://windowssdk.msdn.microsoft.com/en-us/library/ms647252.aspx

GetDriveType:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getdrivetype.asp

c ya,
nco2k

_________________
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 26.10.2006 22:14 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
nco2k hat geschrieben:
jep, seh ich genauso, aber man sollte GetDriveType_() anstelle von DriveType_() verwenden, da DriveType_() nicht kompatibel zu win9x systemen ist.

:oops: , das kommt davon, wenn man in der MSDN nicht zuende liest.
Verspreche Besserung :wink:

_________________
PureBasic 5.71 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.2 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 27.10.2006 13:32 
Offline
Benutzeravatar

Registriert: 01.10.2005 13:15
Danke für eure Kommentare!

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. :D

_________________
PB 4.30
Code:
Macro Happy
 ;-)
EndMacro

Happy End


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Alle Laufwerke ermitteln &#8212; OHNE API!
BeitragVerfasst: 27.10.2006 14:29 
Offline
Benutzeravatar

Registriert: 09.07.2006 00:41
AND51 hat geschrieben:
Hallo!

al90 brachte mich auf die Idee, folgenden Code hier zu posten, damit alle was davon haben:
Code:
For n=65 To 90
   Debug FileSize(Chr(n)+":")
Next
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.


Ebenso einfach geht das über Droopys Lib (http://www.purearea.net/pb/german/index.htm):

Code:
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.

Gruß,
Ligatur


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 27.10.2006 14:50 
Offline
Benutzeravatar

Registriert: 01.10.2005 13:15
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... :twisted: 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... :freak:

_________________
PB 4.30
Code:
Macro Happy
 ;-)
EndMacro

Happy End


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

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


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye