View Full Version : وجود Cd در CDROM و پیغام Try Again
  
Graphical
شنبه 21 دی 1387, 15: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, 07:27 صبح
من یه راهی پیدا کردم تنها مشکلش اینکه اگه CD خام بزاری تشخیص نمیدش و میگه CD گزاشته نشده .
 
راه حل : 
وقتی به وسیله ی کد خودت تمامی درایوهای CD_Rom رو به دست آوردی به ترتیب بگرد داخلشون دنبال همه ی فایلها با هر خاصیتی و همه ی پوشه ها با هر خاصیتی و اگه فایل یا پوشه ای پیدا کردی یه متغیر رو True کن و در آخر هم چک کن اگه متغیرت False بود CD گزاشته نشده و در غیر این صورت گزاشته شده .
 
برای پنجره ی پیغامت هم خودت یه فرم شبیهش بساز !
Graphical
دوشنبه 23 دی 1387, 10:57 صبح
باسلام و تشکر
بنده با DirectoryExists و  false اینکار رو انجام دادم اما زمانی که سی دی داخل سی دی رام نباشه هیچ پیغامی ظاهر نمیشه، حتی اگر هم سی دی باشه هیچ پیغامی ظاهر نمیشه(منظور از پیغام همون فرمی که برای پیغام منظور شده)
    if DirectoryExists('test1')= false then
    Form1.Show;
Felony
دوشنبه 23 دی 1387, 11:06 صبح
شرط شما ایراد داره ، تو کدوم درایو و مسیر قراره دنبال این پوشه بگرده ؟
 
 
if not DirectoryExists('M:\Test') then
ShowMessage('Error');
Graphical
دوشنبه 23 دی 1387, 13: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, 17: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;
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.