我用Delphi编写了一个读取USB里数据的软件。
程序自动扫描计算机所有USB设备,很简单,代码如下:procedure GetUsbDrives(List: TStringList);
var
  DriveBits: set of 0..25;
  I: Integer;
  Drive: AnsiChar;
begin
  List.BeginUpdate;
  try
    Cardinal(DriveBits) := GetLogicalDrives;    for I := 0 to 25 do
      if I in DriveBits then
      begin
        Drive := Chr(Ord('a') + I);
        if GetBusType(Drive) = BusTypeUsb then
        begin
          List.Add(Drive);
        end;
      end;
  finally
    List.EndUpdate;
  end;
end;客户使用Win7, 使用时弹出错误 :
这个错误不是我在代码中定义的,是windows产生的。Google了一下,
发现回答感觉都牛头不对马嘴。大家有人碰到这问题吗?如何解决?谢谢

解决方案 »

  1.   

    Drive := Chr(Ord('a') + I);
    改为
    Drive := Chr(Ord('A') + I);
    大小写数值不一样的
      

  2.   


    谢谢,但是什么原因导致客户弹出那个错误界面的呢?BTW: 那软件我们已经使用了大半年了,在XP, Vista, Win7 32, 64位机器上都测试过,都没有发现问题。那个问题应该是Windows引起的,但如何在我们软件里屏蔽这样的错误呢?谢谢
      

  3.   

    USB读卡器插入电脑,盘符就会出来,不管你是否在读卡器中插入了SD卡(等),而当你访问这个盘符的时候,就会出错,当卡插入读卡器中时,就没问题,http://www.61ic.com/vip/tx/USB/200705/7249.html研究一下这个里面的API,由于没需求又不会C,所以剩下的工作你自己搞定了.
      

  4.   

    用你推荐的软件测试了下 客户的电脑,返回的log里显示用户 一台电脑上有5个 USB storage devices.
    我的程序写数据时写到人家“只读”的storage设备上了,出现错误。谢谢各位