Hallo nochmal!
wie kann ich denn mit PB abfragen ob eine Diskette leer ist und diese dann mit PB formatieren. Hat jemand einen Code dafür?
Vielen Dank für die Hilfe!!!!!!!!!!
Diskette Formatieren
Code: Alles auswählen
SetErrorMode_(#SEM_FAILCRITICALERRORS | #SEM_NOGPFAULTERRORBOX | #SEM_NOOPENFILEERRORBOX)
If = ExamineDirectory(200, "a:", "*.*")
; weiter mit der Auswertung
Else
errorcode.l = GetLastError_()
ftext$ = Space(200)
FormatMessage_($1000, 0, errorcode, 0, @ftext$, 200, 0)
MessageRequester("Errorcode = " + Str(errorcode), ftext$)
EndIf- ob eine Diskette (CD, Stick etc.) eingelegt ist
- oder nicht formatiert ist
- oder die Spur 0 defekt ist
- oder die Diskette formatiert, aber leer ist
(Meldung: ... Das System kann die angegebene Datei nicht finden...
Errorcode = 2 ..... Da wir aber in ExamineDirectory() nach *.*
suchen, also nach allen, muß die Diskette (CD, Stick....) leer
sein wenn alles nichts ist
Die erste Zeile dient dazu, die lästigen Messageboxes wegzubekommen,
die auftreten wenn man z.B. keine Diskette einlegt. Windows schreibt
dann selbst eine Fehlermeldung ..... ist unnötig wenn man selbst alle
Fehler programmtechnisch abfangen möchte.
Alledings kommen dann auch bei anderen kritischen Fehlern keine
Meldungen, deshalb bei umgebungskritischen Operationen (z.B.
Fileoperationen) immer auf Erfolg prüfen. (z.B mit If Readfile(...) )
GetLastError_() kann immer nach solchen Aufrufen abgefragt werden.
Übrigens ganz bekommt man die lästigen Windows-Messageboxen
mit der ersten Zeile nicht weg. Entnimmt man eine Diskette während
geschrieben wird, dann gibts dennoch eine Messagebox ....
Der Code gilt nur für W2K und XP. Mit W98, ME kannst Du
fehlercode auch mit GetLastError_() abfragen, die Klartextauswertung
geht aber nicht. Ebenso ist die erste Zeile auszukommentieren.
W98 reagiert ohnedies immer mit Bluescreen wenn Probleme bei
austauschbaren Datenträgern auftauchen.
Das Formatieren selbst wird schwieriger. Es gibt für W2K und XP zwar
einen nicht offiziellen API-Befehl, aber mit dem bin ich nicht ganz
zufrieden gewesen. Versuche es besser mit RunProgramm
CMD format A: zu starten. (bei W98 ohne CMD). Ist zwar nicht
elegant, aber tut seinen Zweck.
Mit einigem Aufwand gelingt es auch, das format komplett im
Hintergrund laufen zu lassen und den Fortschritt in einem Progressbar
anzuzeigen, aber das würde wohl den Umfang für das Anfängerforum
sprengen ....
Viel Erfolg ...
Team100
Kompliziert kann es jeder lösen, aber das wirklich Geniale ist einfach.....
- mueckerich
- Beiträge: 220
- Registriert: 13.09.2004 11:33
- Wohnort: Am schönsten Flecken der Erde, zwischen PC und Motorrad
Wegen Formatieren von Datenträgern:
http://forums.purebasic.com/german/view ... highlight=
http://forums.purebasic.com/german/view ... highlight=
"Wenn Sie glauben, mich verstanden zu haben, dann habe ich mich falsch ausgedrückt" ( Alan Greenspan)