ورود

View Full Version : وجود Cd در CDROM و پیغام Try Again



Graphical
شنبه 21 دی 1387, 14:04 عصر
با سلام خدمت دوستان محترم
من تابع GetDriveType رو برای شناسایی سی دی رام به کار برده ام

var
ch: Char;
s: string;
begin
for ch := 'D' to 'Z' do
begin
s := ch + ':\';
if GetDriveType(PChar(s)) = DRIVE_CDROM then
ShowMessage('CDROM is ' + s[1])
end;
end;
برای شناسایی یک فولدر درون سی دی از DirectoryExists استفاده کرده ام.
چطور میتونم زمانی که هیچ سی دی در سی دی رام(ها) قرار ندارد پیغامی مبنی بر اینکه سی دی را در درون درایو قرار دهید ظاهر شود.
و چطور میشه که بجای پنجره (در تصویر) خودم پنجره ای رو جایگزین کنم
http://i42.tinypic.com/2gw5qw9.jpg

Felony
دوشنبه 23 دی 1387, 06:27 صبح
من یه راهی پیدا کردم تنها مشکلش اینکه اگه CD خام بزاری تشخیص نمیدش و میگه CD گزاشته نشده .

راه حل :
وقتی به وسیله ی کد خودت تمامی درایوهای CD_Rom رو به دست آوردی به ترتیب بگرد داخلشون دنبال همه ی فایلها با هر خاصیتی و همه ی پوشه ها با هر خاصیتی و اگه فایل یا پوشه ای پیدا کردی یه متغیر رو True کن و در آخر هم چک کن اگه متغیرت False بود CD گزاشته نشده و در غیر این صورت گزاشته شده .

برای پنجره ی پیغامت هم خودت یه فرم شبیهش بساز !

Graphical
دوشنبه 23 دی 1387, 09:57 صبح
باسلام و تشکر
بنده با DirectoryExists و false اینکار رو انجام دادم اما زمانی که سی دی داخل سی دی رام نباشه هیچ پیغامی ظاهر نمیشه، حتی اگر هم سی دی باشه هیچ پیغامی ظاهر نمیشه(منظور از پیغام همون فرمی که برای پیغام منظور شده)

if DirectoryExists('test1')= false then
Form1.Show;

Felony
دوشنبه 23 دی 1387, 10:06 صبح
شرط شما ایراد داره ، تو کدوم درایو و مسیر قراره دنبال این پوشه بگرده ؟



if not DirectoryExists('M:\Test') then
ShowMessage('Error');

Graphical
دوشنبه 23 دی 1387, 12:15 عصر
شرط رو اینجوری می نویسم

var
ch: Char;
s: string;
begin
for ch := 'D' to 'Z' do
begin
s := ch + ':\';
if not DirectoryExists(s+'chattools') then
form1.show;
end;
end;
توی این حالت اگه وجود نداشته باشه هیچ پیغامی نمیده

Felony
دوشنبه 23 دی 1387, 16:48 عصر
شرط رو اینجوری می نویسم
کد:
var ch: Char; s: string; begin for ch := 'D' to 'Z' do begin s := ch + ':\'; if not DirectoryExists(s+'chattools') then form1.show; end; end;
توی این حالت اگه وجود نداشته باشه هیچ پیغامی نمیده


والا شرط درسته ، من هرچی دقت میکنم هیچ کدی نمیبینم که مبنی بر نمایش پیغام خطا در صورت موجود نبودن CD بکنه !!!

اینم کد کامل تر و صحیح تر :


var
ch: Char;
s: string;
Exist:boolean;
begin
for ch := 'D' to 'Z' do begin
s := ch + ':\';
if not DirectoryExists(s+'chattools') then
Exist:=False;
end;
if Exist=True then
ShowMessage('There is')
else ShowMessage('Not Exist');
end;