![]() |
USB Stick formatiern
Kann ich das mit Delphi machen? Das auf knopfdruck ohne weiteres nachfragen der Stick (laufwerk wird zuvor abgefragt) formatiert wird?
|
Re: USB Stick formatiern
Formatieren könne schwierig werden, wenn du einfach alles löschen willst, benutze z.B.
![]() |
Re: USB Stick formatiern
Ich hatte es aber auch schon das sich dateien nicht löschen ließen...u.a. wenn der stick vorschnell abgezogen wurde. Da half dan ein formatieren über den Arbeitsplatz...kann ich diese funktion von Windows nich in delphi einbauen?
|
Re: USB Stick formatiern
Ich hab
![]() Aber Achtung: MP3-USB-Sticks (MP3-Player) sollten meist nicht von Windows aus formatiert werden, sonder nur mit der mitgelieferten SOftware, da sonst teilweise die Firmware gelöscht werden kann und sich der MP3-Player dann keine MP3 mehr wiedergeben kann. Nur so am Rande, falls es ein MP3-Player ist. ;) |
Re: USB Stick formatiern
nein, sind stinknormale USB sticks die von kunden NUR zu datensicherung verwendet werden SOLLTEN...ich weiß aber schon wieder das die selber zeugs draufmachen, und dann anrufen warum die sicherung nicht geht. also will ich beim sichern: falls voll, entbehrliche alte sicherungen löschen (mach ich sowieso)..wenn nachher immer noch kein platz is...warnung ausgeben und dann plattmachen *hrrhrr*
|
Re: USB Stick formatiern
HAb mir jetzt mal den COde zu gemüte geführt...leider versteh ich das mit den konstanten nich...wo kann ich ein laufwerk auswählen? warum gibt es SHFMT_DRV_A = 0; UND SHFMT_DRV_B = 1; ??? Logisch wäre mir EINE variable die den LW Buchstaben übergibt...*verwirtbin*
|
Re: USB Stick formatiern
Zitat:
Ich glaube es ist so (ohne Gewähr, mach ein Backup. :lol: Eventuell so: Laufwerk A: SHFMT_DRV_A = 0 Laufwerk B: SHFMT_DRV_B = 1 Laufwerk C: SHFMT_DRV_B = 2 Laufwerk D: SHFMT_DRV_B = 3 ... |
Re: USB Stick formatiern
Zitat:
|
Re: USB Stick formatiern
Dazu näheres in der
![]() Prüfe einfach, ob das Laufwerk ein DRIVE_REMOVABLE ist, dann werden schonmal alles Wechseldatenträger aufgelistet. Ausschließen kannst du dann schonmal Buchstabe A und B. |
Re: USB Stick formatiern
Geht sicher auch mit dem Disketten Formatierung Kommando :-D
Delphi-Quellcode:
function TMainform.Diskette_formatieren(Laufwerk: String): Integer;
var Befehl : String; Datei : TextFile; TempDateiName : Array [0..255] of Char; TempVerzeichnis : Array [0..255] of Char; StartupInfo : TStartupInfo; ProcessInfo : TProcessInformation; SektorenProCluster : Integer; BytesProSektor : Integer; FreieCluster : Integer; ClusterInsgesamt : Integer; Temp : Integer; begin // Datei zum Beantworten der Abfragen von FORMAT.EXE // im Temp-Verzeichnis anlegen. GetTempPath(255, TempVerzeichnis); GetTempFileName(TempVerzeichnis, 'TMP', 0, TempDateiName); // Antwort-Datei erzeugen AssignFile(Datei, TempDateiName); Rewrite(Datei); // Antwort-Datei erzeugen und öffnen Writeln(Datei, #13#10); // 1. Return ("Diskette einlegen ...") Writeln(Datei, #13#10); // 2. Return (Diskettenbezeichnung) Writeln(Datei, 'n'#13#10); // keine weitere Diskette CloseFile(Datei); // Datei schließen // Befehlszeile zum Aufrufen von FORMAT.COM // command.com /c = automatisch nach Beendigung schließen // format ... /u = unbedingt formatieren // format ... /c = defekte Sektoren prüfen Befehl := 'command.com /c format '+Laufwerk+' /u /c < '+TempDateiName; // StartupInfo initialisieren. FillChar(StartupInfo, SizeOf(TStartupInfo), 0); StartupInfo.cb := SizeOf(TStartupInfo); // DOS-Fenster soll nicht angezeigt werden. StartupInfo.dwFlags := StartF_UseShowWindow; StartupInfo.wShowWindow := SW_Hide; // Formatieren if CreateProcess(nil, PChar(Befehl), nil, nil, False, 0, nil, 'c:\', StartupInfo, ProcessInfo) then begin // Warten bis Format beendet ist. WaitForSingleObject(ProcessInfo.hProcess, Infinite); CloseHandle(ProcessInfo.hProcess); end; // Antwort-Datei wieder löschen DeleteFile(TempDateiName); // War das Formatieren erfolgreich? if GetDiskFreeSpace(PChar(Laufwerk), SektorenProCluster, BytesProSektor, FreieCluster, ClusterInsgesamt) then begin // Anzahl defekter Sektoren berechnen Temp := FreieCluster * SektorenProCluster * BytesProSektor; Result := (1457664 - Temp) div BytesProSektor; end else // Diskette nicht eingelegt oder unformatiert Result := - 1; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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-2025 by Thomas Breitkreuz