AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Floppy schreibschutz an oder aus?

Ein Thema von Meflin · begonnen am 12. Mär 2004 · letzter Beitrag vom 6. Okt 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 12:59
WAS für eine Fehlermeldung kommt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#12

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 13:26
Das Übliche, wenn Du schreibend auf die schreibgeschütze Diskette zugreifst:

Delphi-Quellcode:
function ReadOnly:Boolean;
var
  H: DWord;
  k:string;
  begin
  Result := False;
  k:=paramstr(0);
 H := CreateFile(PChar('A:\_XXX.bak'), //Zum Test so zerpflückt
// H := CreateFile(PChar(k[1]+':\_XXX.bak'),
                  GENERIC_WRITE,
                  0,
                  nil,
                  CREATE_ALWAYS,
                  0,
                  0);
  Result := (H = INVALID_HANDLE_VALUE);
  CloseHandle(H);
end;
Miniaturansicht angehängter Grafiken
fehler_632.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 13:35
Versuch mal MSDN-Library durchsuchenSetErrorMode mit SEM_FAILCRITICALERRORS. Aber nicht vergessen wieder zurückzustellen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#14

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 13:45
Zitat von Go2EITS:
Zum obigen Code: Funktioniert nicht!
Falsch. Wie ich derart generalisierende Aussagen hasse... Für Disketten funktioniert er, und nach nichts anderem war gefragt! Daher funktioniert der Code sehr wohl

  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#15

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 13:56
Zitat von Wheelie:
wenn die floppy noch nicht formatiert wurde, dann nützt dieses verfahren recht wenig.
Langt ja schon, wenn die Disk voll ist...
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 13:58
Kleine Anmerkung zum Code: Format() generiert einen String, CreateFile erwartet PAnsiChar, also einen nullterminierten String. Also besser dem Formatstring noch ein Nullbyte mitgeben, damits nicht unerwartete Probleme gibt. Kleine Ursache, grosse Wirkung!
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#17

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 14:06
Die Meldung ist ja nicht so schlimm, ich könnte ja prüfen, ob ich auf einem A Laufwerk bin.
SetErrorMode? Hab es mir angesehen. Wenn ich das Umssetzen könnte, hätte ich bestimmt Arbeit als Programmierer.

Roter Kasten:
Ja ich auch. Aber bei mir geht es nicht.
Du hast einen Bug drin, wie ich sehe, das zum Thema generalisieren, (wie ich erst das hasse: )
Delphi-Quellcode:
 function IDW(Drive: Integer): Boolean;
const
  IOCTL_DISK_IS_WRITABLE = (
    ($00000007 shl 16) or (0 shl 14) or
    ($0009 shl 2) or 0);
var
  Device: String;
  hFile: THandle;
  BytesReturned: Cardinal;
begin
  Result := false;
  //Device := Format('\\.\%s:', [Char(Drive + 65)]); //Original! Da muss wohl die +65 raus
  Device := Format('\\.\%s:', ['A']); //Zum Testen von Laufwerk A. Geht!
  //Geht sogar, wenn ich den Schreibschutz beim Prüfen ändere.
  hFile := CreateFile(@Device[1], GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
                      OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if hFile <> 0 then
  begin
    Result := DeviceIoControl(hFile, IOCTL_DISK_IS_WRITABLE, nil, 0, nil, 0,
                              BytesReturned, nil);
    CloseHandle(hFile);
  end;
end;
Na, dann bleibt nur noch am Schluss diese Threads den richtigen Code zu veröffentlichen, damit niemand so rumstoppselt wie ich. Ich habe den Code mal getestet und hier geschrieben. Das ist doch wohl ok?

Beste Grüße!
Go2EITS
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#18

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 14:15
Zitat von Go2EITS:
Ja ich auch. Aber bei mir geht es nicht.
Das mag ja sein - aber dann zu behaupten der code würde nicht gehen finde ich etwas dreist

Zitat:
Du hast einen Bug drin, wie ich sehe, das zum Thema generalisieren, (wie ich erst das hasse: )
Ich nicht... der code ist ja nicht von mir!
Außerdem wäre ich mit der Bezeichnung "Fehler" vorsichtig - bei mir funktioniert der Code ja wunderbar

Zitat:
Na, dann bleibt nur noch am Schluss diese Threads den richtigen Code zu veröffentlichen, damit niemand so rumstoppselt wie ich. Ich habe den Code mal getestet und hier geschrieben. Das ist doch wohl ok?
Und mit der Bezeichnung "richtig" wäre ich aus obigem Grund auch vorsichtig. Man könnte sich das ganze natürlich irgendwie erleichtern indem man einen char als Parameter übergibt und nicht einen Integer - wieso das so ist leuchtet mir nämlich im Moment nicht ganz ein

Delphi-Quellcode:
function IDW(Drive: TChar): Boolean;
const
  IOCTL_DISK_IS_WRITABLE = ( ($00000007 shl 16) or (0 shl 14) or ($0009 shl 2) or 0);
var
  Device: String;
  hFile: THandle;
  BytesReturned: Cardinal;
begin
  Result := false;
  Device := Format('\\.\%s:', [Drive]);
  hFile := CreateFile(@Device[1], GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
                      OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if hFile <> 0 then
  begin
    Result := DeviceIoControl(hFile, IOCTL_DISK_IS_WRITABLE, nil, 0, nil, 0,
                              BytesReturned, nil);
    CloseHandle(hFile);
  end;
end;

Result := IDW('A');
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 14:21
Wo ist das Problem? Einfach die Funktion mit der entsprechenden Konstante aufrufen und fertig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#20

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 14:23
Zitat von Luckie:
Wo ist das Problem? Einfach die Funktion mit der entsprechenden Konstante aufrufen und fertig.
Äh... meinst du mich? Ich habe kein Problem geäußert sondern eine (imho) Vereinfachung der Funktion gepostet

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz