Seite 2 von 4

Verfasst: 12.09.2006 11:57
von Shardik
Was ist mit Leer-CD gemeint? Ein unbeschriebener CD-Rohling jedenfalls wird bei mir unter WinNT 4 SP6 und unter WinXP SP2 nicht als "LEER-CD-ROM eingelegt" angezeigt, sondern als "Keine CD-ROM eingelegt".

GetVolumeInformation_() gibt sowohl bei eingelegtem Rohling als auch bei leerem CD-Laufwerk den Wert 0 zurück, GetLastError_() liefert als Erklärung den Fehlercode 21, was mit FormatMessage_() aufbereitet die Fehlermeldung "Das Gerät ist nicht bereit" ergibt.

Verfasst: 12.09.2006 13:50
von Proton
>>>DarkDragon: Hab mir mal erlaubt den Code etwas zu verschönern
>>>und erweitern:

Warum erlaubst du dir das? Ist Andreas unfähig schönen Code zu schreiben?
Schönheit ist subjektiv. Vielleicht gefällt es Andreas gar nicht, wie du seinen
Code "versaust" ?

Und wieso erweitern ? Eine Procedure Namens "CheckCDIn" wird wohl kaum
dazu benutzt werden, eine Festplatte auf ein CD-ROM Laufwerk zu überprüfen.

Ist nicht böse gemeint. Wollte es nur gesagt haben.

Verfasst: 12.09.2006 13:57
von Kaeru Gaman
@Proton

Contra.

natürlich gebührt Andreas Ehre dafür, die API-Funktion GetVolumeInformation_(
in dieser Form zu benutzen, und die erste wirklich brauchbare Lösung in diesem thread zu präsentieren.

allerdings ist der mehrfache aufruf von Trim(), der doppelte check von "CDBLANK",
das auslassen des Rückgabewertes "-1" für die auch bei Andreas vorhandene If-Sicherung,
und das unvollständige Einrücken etwas, was man verbessern kann.

und DD hat keine sprüche gemacht und hat sogar die Rem "; Autor: Andreas " ergänzt,
also wo ist das problem?

Verfasst: 12.09.2006 14:27
von Proton
@Falko: (@all)

Was ist das für ein Wert den FILESIZE("*.*") bei eingelegter CD zurückgibt ?


@Karoe Gaman:

Re

Verfasst: 12.09.2006 16:32
von Andreas
Shardik hat geschrieben:Was ist mit Leer-CD gemeint? Ein unbeschriebener CD-Rohling jedenfalls wird bei mir unter WinNT 4 SP6 und unter WinXP SP2 nicht als "LEER-CD-ROM eingelegt" angezeigt, sondern als "Keine CD-ROM eingelegt".
War ja zu erwarten, dass es auf NT-Systemen anders läuft.

Hier noch ein Code ( für NT-Systeme ) der testet ob eine CD in Laufwerk liegt, egal ob beschrieben oder nicht.

Code: Alles auswählen

#IOCTL_STORAGE_CHECK_VERIFY = $2D4800

Procedure VerifyMedia(LW.s)
    ;Check for Media
    Protected hLwStatus.l
    hLwStatus = CreateFile_("\\."+LW,#GENERIC_READ|#GENERIC_WRITE, 0, 0, #OPEN_EXISTING, 0, 0)
    If hLwStatus
        Retval.l = DeviceIoControl_(hLwStatus, #IOCTL_STORAGE_CHECK_VERIFY,0,0,0,0,@RetBuffer,0)
        CloseHandle_(hLwStatus)
    EndIf
    ProcedureReturn Retval
EndProcedure

Select = VerifyMedia("P:");Pfad anpassen
  Case 1
    Debug "CD im Laufwerk"
  Case 0
    Debug "Keine CD im Laufwerk"
EndSelect

Verfasst: 12.09.2006 22:37
von Falko
Proton hat geschrieben:@Falko: (@all)

Was ist das für ein Wert den FILESIZE("*.*") bei eingelegter CD zurückgibt ?


@Karoe Gaman:

Re
ein Auszug aus der PB-Hilfe zeigt hier den Rückgabewert:
PB-Hilfe hat geschrieben:FileSize()

Syntax

Ergebnis = FileSize(DateiName$)
Beschreibung

Gibt die Größe der angegebenen Datei zurück.

Besondere 'Ergebnis' Werte:
-1: Datei wurde nicht gefunden.
-2: Datei ist ein Verzeichnis.

Unterstützte OS

Alle
Funktioniert ähnlich wie bei Andreas <)

Grüße ...Falko

Verfasst: 13.09.2006 08:08
von Proton
:)

Da wäre ich jetzt im Leben nie drauf gekommen, dass mir FILESIZE() die
Grösse einer Datei zurückgibt. Danke !

Die Betonung meiner Frage lag aber weniger auf FILESIZE(), sondern auf "*.*"

Bei unterschiedlichen CD/DVD's bekomme ich unterschiedliche Werte.
Gleiche Datenträger haben gleiche Werte. Kann aber auf die schnelle keine
Ableitung zu diesen Werten herstellen.

Also: Was bedeutet dieser Wert? Weiss das jemand ?

Verfasst: 13.09.2006 10:25
von Falko
Achso, das meintest du. Kommt schon von DOS-Zeiten, wobei das "*.*"
einfach als Platzhalter für den unbekannten Dateinamen.Extender ist,
wie zum Beispiel Command.com oder andere Dateien. Wird nur bei der Suche von Dateien benötigt.
Gibst du einen Dateinamen anstelle *.* an, wird natürlich direkt nach dieser Datei gesucht.

Ich hoffe es ist so ausreichend erklärt.

Grüße ...Falko

Verfasst: 13.09.2006 10:30
von Proton
:| *seufz*

Versteht jemand meine Frage überhaupt ?


Nicht so wichtig :freak: :D

Verfasst: 13.09.2006 10:51
von Falko
Proton hat geschrieben:@Falko: (@all)

Was ist das für ein Wert den FILESIZE("*.*") bei eingelegter CD zurückgibt ?


@Karoe Gaman:

Re
Das war die Frage und die Antwort ist nicht auf FileSize() bezogen, sondern auf den Rückgabewert "-1" und "-2" und dieses wurde ebenfalls beantwortet.


Die Frage ist wohl wirklich nicht zu verstehen, bzw. Gedanken kann ich nicht
lesen. :lol:

[Edit] Das einzigste ist, wenn man eine unbeschriebene CD ins Leselaufwerk einlegt, kommt nichts zurück, da das Laufwerk einen
Fehler mit Blinken sichtbar macht.
Dafür kommt aber bei einem CD-Brenner als auch DVD-Brenner korrekt
der Wert -1 zurück.

Kannst ja testen "Debug FileSize("y:\*.*")" ; y für CD-ROM bzw. Brenner