if DiskSize(Ord('a') - $40) <> -1 then
  Show('有软盘')

解决方案 »

  1.   


    一共找到两个例子
    1:
    procedure xxx
    var
    driver:pchar;
    sec1, byt1, cl1, cl2:longword;
    begin
    driver:='a:\';//要显示的驱动器名
    try
    GetDiskFreeSpace(driver, sec1, byt1, cl1, cl2);
    cl1 := cl1 * sec1 * byt1; 该驱动器总共容量
    cl2 := cl2 * sec1 * byt1; 该驱动器可用容量
    if cl1>0 then showmessage('have a disk!');
    finally
      showmessage('no drive or no disk);
    end;
    ////////////////////////////////////////////
    2:
    function DiskInDrive(Drive: Char): Boolean;
    var
       ErrorMode: word;
    begin
    if Drive in ['a'..'z'] then
       Dec(Drive, $20);
    if not (Drive in ['A'..'Z']) then
       raise EConvertError.Create(Format('%S 不是有效的驱动器符号',[Drive]) );
    ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
    try
        if DiskSize(Ord(Drive) - $40) = -1 then
          Result := False
        else
          Result := True;
    finally
          SetErrorMode(ErrorMode);
    end;
    end;例子
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if not DiskInDrive('A') then
          showmessage('no disk in a');
    end;