お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"フロッピーのフォーマット"

この発言に対し以下のコメントが寄せられています
#01019 かぼちゃの馬車 さん Re:フロッピーのフォーマット

みなさん、こんにちは。 NT351ではWindows95やNT4.0で使うことのできる「SH〜」が使えないのでフロッ ピーのフォーマットが簡単には出来ないません。 そこでいくつかのプログラミング書籍を参考にDelphiへ移植しました。 皆さんの添削をお待ちしております(^^) //指定ドライブをフォーマットする function FormatCom(ADrive:string;//ドライブを指定する AShow:Boolean //プロンプトを表示するかしないか ):Boolean; //成功or失敗 const //キー入力データファイルの定義 FBuf = #13+#13+'N'+#13; //新しいディスクをドライブに...→Enter(実行) //ボリュームラベルを...→Enter(空白で作成) //別のディスクを...→'N'+Enter(フォーマットしない) var FTempF:TFileStream;//キー入力ファイル fSuccess:Boolean; //CreateProccessが成功したかどうか FLen:Integer; //キー入力ファイルに書きこむデータのLength si:TSTARTUPINFO; pi:TPROCESSINFORMATION; oi:TOSVERSIONINFO; szCommandPath:string; szSystemPath,szPath,szBuff:array [0..255] of Char; function IsDriveRemovable(ADrive:string):Boolean; var FDrive:string; begin Result := False; if not (UpperCase(Copy(ADrive,1,1))[1] in ['A'..'Z']) then Exit; FDrive := UpperCase(Copy(ADrive,1,1))+':\'; if GetDriveType(PChar(FDrive)) = DRIVE_REMOVABLE then begin Result := True; end; end; begin Result := False; if not IsDriveRemovable(ADrive) then Exit; if not IsDriveReady(ADrive) then Exit;//FAQにいくつかあるサンプルを使用 //TSTARTUPINFOの初期化 FillChar(si,SizeOf(si),0); si.cb := SizeOf(TSTARTUPINFO); si.dwFlags := STARTF_USESHOWWINDOW; if AShow then si.wShowWindow := SW_SHOW else si.wShowWindow := SW_HIDE; //キー入力データファイルの作製 GetTempPath(SizeOf(szBuff),szBuff); GetTempFileName(szBuff,'Fmt',0,szPath); FTempF := TFileStream.Create(szPath,fmCreate); try FTempF.Seek(0,0); FLen := Length(FBuf); FTempF.Write(PChar(FBuf)^,FLen); finally FTempF.Free; end; //OSのバージョン取得 oi.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO); GetVersionEX(oi); if oi.dwPlatformId = VER_PLATFORM_WIN32_NT then begin //NTなら.... GetSystemDirectory(szSystemPath,SizeOf(szSystemPath)); szCommandPath := StrPas(szSystemPath)+'\CMD.EXE'; end else begin //NTでないなら.... GetWindowsDirectory(szSystemPath,SizeOf(szSystemPath)); szCommandPath := StrPas(szSystemPath)+'\COMMAND.COM'; end; //コマンドラインの作成 StrPCopy(szBuff, Format('%s /c format %s: < %s',[szCommandPath,String(ADrive[1]),szPath])); try fSuccess := CreateProcess(nil,szBuff,nil,nil,True,0,nil,nil,si,pi); if not fSuccess then Exit; //失敗したらExit while WaitForSingleObject(pi.hProcess,0) = WAIT_TIMEOUT do Application.ProcessMessages; //終了するまで待つ finally //作成したTempファイルを削除 DeleteFile(StrPas(szPath)); //コンソールの破棄 if Boolean(pi.hThread) then CloseHandle(pi.hThread); if Boolean(pi.hProcess) then CloseHandle(pi.hProcess); end; Result := True; end; 98/06/08(月) 00:09 十兵衛(BZT01311) Original document by 十兵衛 氏 ID:(BZT01311)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum