PDA

View Full Version : فرمت کردن فلاپی از داخل برنامه



M@hdi
چهارشنبه 26 فروردین 1383, 15:38 عصر
سلام
یک برنامه دارم که توی اون میخوام فلاپی را فرمت کنم بعدش هم یک فایل روی اون کپی کنم .
برای این کار از دستور Shell استفاده کردم ولی متاسفانه به محض اجرای دستور فرمت دستو بعد اجرا میه و همه چیز را به میریزه . دوستان راه حلی به نظرشون نمیرسه ؟؟

Gilbert
جمعه 28 فروردین 1383, 16:02 عصر
زبان برنامه نویسیت چیه ؟

rezaTavak
جمعه 28 فروردین 1383, 16:16 عصر
سلام

چون این دستور برنامه دیگری را اجرا میکند در واقع به برنامه شما ربطی ندارد و هر دو موازی اجرا میشوند. شما بعد از صادر کردن دستور فرمت باید یه وقفه چند ثانیه ای به در خط بعد داشته باشید و با یک فایل با ایجاد یک فایل موقت در دیسکت چک کنید آیا دیسکت آماده شده است یا نه.

rezaTavak
جمعه 28 فروردین 1383, 19:50 عصر
سلام

این روال هم به زبان دلفی است بگو به هر زبان خواستی برات تبدیلش کنم.

const SHFMT_DRV_A = 0;
const SHFMT_DRV_B = 1;

const SHFMT_ID_DEFAULT = $FFFF;

const SHFMT_OPT_QUICKFORMAT = 0;
const SHFMT_OPT_FULLFORMAT = 1;
const SHFMT_OPT_SYSONLY = 2;

const SHFMT_ERROR = -1;
const SHFMT_CANCEL = -2;
const SHFMT_NOFORMAT = -3;

function SHFormatDrive(hWnd : HWND;
Drive : Word;
fmtID : Word;
Options : Word) : Longint
stdcall; external 'Shell32.dll' name 'SHFormatDrive';

procedure TForm1.Button1Click(Sender: TObject);
var
FmtRes : longint;
begin
try
FmtRes:= ShFormatDrive(Handle,
SHFMT_DRV_A,
SHFMT_ID_DEFAULT,
SHFMT_OPT_QUICKFORMAT);
case FmtRes of
SHFMT_ERROR : ShowMessage('Error formatting the drive');
SHFMT_CANCEL :
ShowMessage('User canceled formatting the drive');
SHFMT_NOFORMAT : ShowMessage('No Format')
else
ShowMessage('Disk has been formatted');
end;
except
end;

end;

M@hdi
شنبه 29 فروردین 1383, 10:29 صبح
ممنونم
رضا جان وقتی در قسمت اکسس سوال مطرح کردم حتما اکسس بوده دیگه عزیز

rezaTavak
دوشنبه 31 فروردین 1383, 17:41 عصر
سلام

منم میدونستم باید به زبون بیسیک باشه ولی نفر قبل که جواب داده بود ومن هم روال دلفی رو داشتم اینطوری جواب دادم. این هم با بیسیک.





Option Compare Database



Declare Function SHFormatDrive Lib "Shell32.dll" (ByVal nHwnd As Integer, _
ByVal nDrive As Integer, _
ByVal nFmtId As Integer, _
ByVal nOption As Integer) As Integer

Declare Function GetFocus Lib "User32.dll" () As Integer

Const SHFMT_DRV_A = 0
Const SHFMT_DRV_B = 1

Const SHFMT_ID_DEFAULT = -1

Const SHFMT_OPT_QUICKFORMAT = 0
Const SHFMT_OPT_FULLFORMAT = 1
Const SHFMT_OPT_SYSONLY = 2

Const SHFMT_ERROR = -1
Const SHFMT_CANCEL = -2
Const SHFMT_NOFORMAT = -3

Function FormatDrive()
Select Case SHFormatDrive(GetFocus(), SHFMT_DRV_A, SHFMT_ID_DEFAULT, SHFMT_OPT_QUICKFORMAT)
Case SHFMT_ERROR
MsgBox ("ÎØÇ")
Case SHFMT_CANCEL
MsgBox ("Cancel")
Case SHFMT_NOFORMAT
MsgBox ("Not format")
Case Else
MsgBox ("Format complete")
End Select
End Function

rasoolhna
پنج شنبه 17 فروردین 1385, 10:10 صبح
میتوانی از بیلدر هم استفاده کنی

persian
جمعه 26 مهر 1387, 18:21 عصر
سلام
اگه امكانش باشه من اين برنامه رو با اسمبلي مي خوام