请问怎样分辨光驱里的光盘是普通光盘还是空白的CD-RW ( 积分: 100 )

  • 主题发起人 主题发起人 rovedream
  • 开始时间 开始时间
R

rovedream

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎样分辨光驱里的光盘是普通光盘还是空白的CD-RW
我用DirectoryListBox1控件计数,普通光盘可以正确得出文件数目
但是放入空白CD-RW出错
有什么更好的办法没有呀
谢谢
 
请问怎样分辨光驱里的光盘是普通光盘还是空白的CD-RW
我用DirectoryListBox1控件计数,普通光盘可以正确得出文件数目
但是放入空白CD-RW出错
有什么更好的办法没有呀
谢谢
 
没有人知道吗?
 

if FindFirst('e:/*.*', faAnyfile, SearchRec) = 0 then
有光盘
else
没有光盘。
 
VAR
sr: TSearchRec;
begin

if FindFirst('G:/*.*', faAnyfile, SR) = 0 then
showmessage('有数据光盘')
else

showmessage('没有数据光盘');
 
如果觉得不够要求参考一下这个:
procedure TForm1.Button1Click(Sender: TObject);
var
systeminfo: SYSTEM_INFO;
sector,byte,cluster,free: DWORD;
CDtype: UINT;
name: CHAR;
drvname: string;
volname,filesysname: PCHAR;
sno,maxl,fileflag: DWORD;
begin

//检测CD-ROM,是否有光盘
GetMem(volname, 255);
GetMem(filesysname, 100);
for name :='C' to 'Z' do
//循环检测A~Z
begin

drvname := name + ':';
CDtype := GetDriveType(PCHAR(@drvname[1]));
//获得磁盘类型
if (CDtype = DRIVE_CDROM) then

begin

Memo1.Lines.Add('您的光驱盘符为[' + drvname + ']');
volname^ := Chr(0);
filesysname^ := Chr(0);
if ( not (GetVolumeInformation(PCHAR(@drvname[1]), volname, 250, LPDWORD(@sno), LPDWORD(@maxl)^, LPDWORD(@fileflag)^, filesysname,100))) then

Memo1.Lines.Add(drvname + '驱中没有发现光盘') //如果返回值为假
else
//如果返回值为真
begin

Memo1.Lines.Add (drvname + '驱中光盘卷标为: [' + String(volname) + ']');
Memo1.Lines.Add (drvname + '驱中光盘序号为: [' + inttostr(sno) + ']');
end;

end;

end;

FreeMem(volname);
FreeMem(filesysname)
end;



 
谢谢strongburn的回答,但是我原来就是这样实现的,通过卷标判断。放入普通光盘和不放光盘运行正常,但是放入空白刻录光盘就出错,我的开发环境是:delphi7,winxp。
 
你运行
VAR
sr: TSearchRec;
begin

if FindFirst('G:/*.*', faAnyfile, SR) = 0 then
showmessage('有数据光盘')
else

showmessage('没有数据光盘');

end;

的结果是什么?我这现在找不到空盘,你试一下。如果是“没有数据光盘”就OK了。如果是“有数据光盘”,??呵呵,我们再看看怎么办,看它为什么有?
 
这个问题我已经解决,不过是通过判断总容量确定的
可以替我看一下另一个问题吗?实际上也是;一个问题,不过系统化了
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3012316
怎样对光盘刻录进行监控(急求!!!)


 
后退
顶部