Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CD / DVD Schublade (https://www.delphipraxis.net/148147-cd-dvd-schublade.html)

ATS3788 23. Feb 2010 16:36


CD / DVD Schublade
 
Gib es eine Möglichkeit zu bestimmen ob eine
CD / DVD Tray - Schublade ohne CD geschlossen ist.

himitsu 23. Feb 2010 16:45

Re: CD / DVD Schublade
 
Wozu ist es denn wichtig zu wissen, ob das Schubfach nun auf oder zu ist?

Wichtiger ist doch wohl "ist eine CD/DVD drin oder nicht".

auf-/zumachen
http://www.delphipraxis.net/internal...ct.php?t=85760

schauen ob Datenträger eingelegt/geladen ist
http://www.delphipraxis.net/internal...ct.php?t=17471

Garfield 24. Feb 2010 17:21

Re: CD / DVD Schublade
 
Zitat:

Zitat von himitsu
Wozu ist es denn wichtig zu wissen, ob das Schubfach nun auf oder zu ist?

Warum braucht ein Auto eine Anzeige für offene Türen? Wenn man sie geschlossen hat, dann sind sie doch zu!?

Zitat:

Zitat von ATS3788
Gib es eine Möglichkeit zu bestimmen ob eine
CD / DVD Tray - Schublade ohne CD geschlossen ist.

Sicher. Wenn man die Forensuche nach "Schublade offen" suchen lässt, erhält man vier Ergebnisse. Zwei haben vielversprechende Überschriften aber nur eines lohnt sich: CD-Laufwerkslade offen?.

ATS3788 24. Feb 2010 18:10

Re: CD / DVD Schublade
 
Wie löse ich es dann mit einem Button eine Schublade zu öffen,
wenn sie zu ist und das Programm denkt die
ist auf, weil keine CD drin ist.

Desdewegen wäre es schon gut zu wissen ob auf oder zu !

Aber trotzdem Danke für die Infos.

Habe wegen dem Problem 1,5 Jahre nicht mehr programiert,
der Frust sass tief

himitsu 24. Feb 2010 18:38

Re: CD / DVD Schublade
 
Du sagst einfach "Schublade öffne dich"

nun gibt es zwei Fälle:
- sie ist zu, dann geht sie auf
- sie ist schon offen und nix passiert

Hier ist es nicht so wie mit dem Taster drausen am Laufwerk, welcher "umschaltet", wofür man wirklich wissen muß, was jetzt ist, um ein bestimmtes Endergebnis zu bekommen.

Wir haben 2 Funktionen zur Auswahl:
- Schublade öffne dich
- Schublade schließe dich
und nach beiden Funktionen ist das Endergebnis klar (es sei denn es passiert ein Fehler)



Wie gesagt:
Von Seiten eines normalen Pogrammes ist es doch eigentlich nur wichtig zu wissen, ob ein passender Datenträger eingelegt ist oder nicht.

Garfield 24. Feb 2010 18:42

Re: CD / DVD Schublade
 
Zitat:

Zitat von ATS3788
Habe wegen dem Problem 1,5 Jahre nicht mehr programiert,
der Frust sass tief

Verstehe ich nicht! Nach Deinem Beitrag zu urteilen, hältst Du es nicht für notwendig, Dich mit meiner Antwort zu beschäftigen!?

Dann vielleicht etwas ausführlicher:

1. Öffne diesen Link:
Zitat:

Zitat von Garfield
... aber nur eines lohnt sich: CD-Laufwerkslade offen?.

2. Optional: Lesen der Beiträge.

3. Gehe zu Beitrag #5 vom 23. Dezember 2006.

4. Lade den ersten Anhang "CDRomDoor_Mech.rar" herunter.

5. Öffne das Archiv und Du findest ein Projekt mit dem man CD/DVD-Laufwerke auflistet, die Schubladen öffen und schließen sowie feststellen kann, ob eine Schublade geöffnet ist.

Entschuldige, wenn ich etwas gefrustet klinge, aber nach Deiner Antwort ...

Garfield 24. Feb 2010 18:45

Re: CD / DVD Schublade
 
Zitat:

Zitat von himitsu
Wir haben 2 Funktionen zur Auswahl:
- Schublade öffne dich
- Schublade schließe dich
und nach beiden Funktionen ist das Endergebnis klar (es sei denn es passiert ein Fehler)

Richtig: Nach

Und was ist davor?

p80286 24. Feb 2010 18:52

Re: CD / DVD Schublade
 
Hallo ATS3788,

vergiss es. Es gibt einige CD/DVD-Laufwerke, die Dir erzählen, daß die Laufwerksschublade offen ist und einige quittieren einfach mit "Device not ready". Du wirst die Information die Du haben möchtest nicht bei jedem Laufwerk erhalten. Bleibt die Frage warum Du es wissen willst. Wenn z.b. ein Medium nicht lesbar ist, dann halt Dich an Himitsus Vorschlag
Öffnen , schließen Status überprüfen.
Wenn ich mich richtig erinnere dann gibt es einen Unterschied zwischen Lesbar,unlesbar und nicht vorhanden. Und bei nicht vorhanden, gibt's dann eine Meldung an den Benutzer.

Gruß
K-H

Edit: @Garfield Wenn das *****Teil Dir nicht sagen will was Sache ist, was dann??

fatalerror 24. Feb 2010 20:18

Re: CD / DVD Schublade
 
Zitat:

Zitat von Garfield
Richtig: Nach

Und was ist davor?

@ Garfield: In einem Multitasking Betriebssystem können wir _nie_ wissen wie ein externer Zustand ist, bevor wir die gewünschte Funktion durchgeführt haben. himitsu Vorschlag ist deshalb das normale Vorgehen.

Man tut das gewünschte und reagiert auf die Rückmeldung von Windows.
  • man führt z.Bsp. den Befehl zum Öffnen des CD-Roms aus und reagiert auf die Rückmeldung von Windows.
  • ich überprüfe nicht ob ich eine Datei speichern kann, sondern werte die Reaktion von Windows aus ob die Datei gespeichert worden ist
  • ich rufe eine Internetseite auf ohne zu überprüfen ob eine I-Net Verbindung besteht und werte die Antwort von Windows aus
  • ...

Garfield 25. Feb 2010 04:18

Re: CD / DVD Schublade
 
Zitat:

Zitat von p80286
Edit: @Garfield Wenn das *****Teil Dir nicht sagen will was Sache ist, was dann??

Ich weiß, dass es Geräte ohne Schublade gibt und es bei denen nicht funktioniert. Eventuell gibt es da noch ein paar Sachen die man auswerten kann. An sonsten muss man sich überlegen, wie man reagieren will. Wichtig ist der Einsatzzweck. Da ich mein Programm zum Beispiel nur auf meinem Rechner einsetze, weiß ich das es funktioniert.

Zitat:

Zitat von fatalerror
Man tut das gewünschte und reagiert auf die Rückmeldung von Windows.

Achso, deshalb gibt es die Funktion nur unter Linux ohne Umwege!? :wink:

hoika 25. Feb 2010 07:13

Re: CD / DVD Schublade
 
Hallo,

schaut man sich mal die MSDN-Hilfe zu IOCTL_STORAGE_EJECT_MEDIA, an,
findet man auch IOCTL_STORAGE_CHECK_VERIFY.

1

Es gibt auvch noch ein paar mehr Flags.
Ich würde mal ein bisschen stöbern.

Laut MS prüft das Flag, ob ein Medium eingelegt und lesbar ist.
Aber wie schon gesagt wurde, hängt es auch vom jeweiligen Treiber ab.


Heiko

himitsu 25. Feb 2010 07:37

Re: CD / DVD Schublade
 
Zitat:

* ich überprüfe nicht ob ich eine Datei speichern kann, sondern werte die Reaktion von Windows aus ob die Datei gespeichert worden ist
Man fragt jeden Scheiß ab (freier Speicherplatz, alle möglichen Quote, tausende Sicherheitsregeln) ... alles ist OK und am Ende sagt der Virenscanner nö und es knallt.

Zitat:

* ich rufe eine Internetseite auf ohne zu überprüfen ob eine I-Net Verbindung besteht und werte die Antwort von Windows aus
Ja, darüber gibt es schon seit vielen Jahren heftige Diskusionen ... Fazit, man kann es nicht abfragen (nichtmal unter Linux) ... hat man z.B. eine automatische Einwahl, dann ist eine Prüfung ala "könnte ich diese Datei runterladen" einfach nicht möglich.

Zitat:

Laut MS prüft das Flag, ob ein Medium eingelegt und lesbar ist.
ja, auf Medium prüfen.

Wie gesagt:
> prüfen ob nötiges Medium vorhanden ist, ist schon ok

> prüfen ob CD-Laufwerk offen/zu ist, ist irgendwie unichtig
- Laufwerk auf, keine CD vorhanden
- Laufwerk auf, CD liegt auf'm Schlitten
- Laufwerk zu und keine CD drin
- Laufwerk zu, CD drin, aber nicht lesbar oder sie wird noch "hochgefahren"
- Laufwerk zu, CD drin, aber sie hat ein Format, welches das Programm nicht kennt
- Laufwerk zu und CD vorhanden, aber durch anderes Programm gesperrt
- Laufwerk zu und CD vorhanden und lesbar

Die ersten 6 von den 7 (wobei noch viel mehr möglich wären) von kommen programmseitig alle auf's selbe Ergebnis = man kann nicht auf die CD zugreifen

Dagegen ist das doch viel einfacher:
"Ist eine CD drin, mit welcher ich arbeiten kann?" > ja oder nein

Garfield 25. Feb 2010 08:10

Re: CD / DVD Schublade
 
Zitat:

Zitat von hoika
... findet man auch IOCTL_STORAGE_CHECK_VERIFY.

Ist leider nicht das richtige.
Zitat:

Zitat von Garfield
Nachtrag: In der MSDN ist angegeben, dass IOCTL_STORAGE_CHECK_VERIFY keine Daten zurückliefert. Dem ist jedoch nicht so. Wenn man den lpOutBuffer verwendet, hat man einen Zähler, wie oft das Laufwerk geöffnet und geschlossen wurde. Der Zähler beginnt mit dem ersten Aufruf.



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz