for i:=65 to 90 do
    begin
      Letter:=Chr(i);
      sDrive:=Letter+':\';
      DriveType:=GetDriveType(PChar(sDrive));       if DriveType=DRIVE_REMOVABLE then
           begin            //assignfile(f,letter+':\firmware.bin');
             if FileExists(letter+':\firmware.bin') then                  //debug排错好象是在这里出错的,也可能是                  begin
                     assignfile(f,letter+':\firmware.bin');
                     reset(f);                     if (filesize(f)=131072) and (disksize(i-64)=128*1024)   then
                        listbox1.Items.add(letter+':\firmware.bin');
                     CloseFile(F);                  end;           end;    end;现在来说下问题.我这段代码是在一个 U盘升级程序中的.升级固件件时插上U盘有个自动查找firmware.bin 文件的代码.一般情况下没出现错误,但我用了个多功能的usb hub,然后USB接上升级就报错,说"缺少软盘"什么什么.hub在电脑上是以一个软盘的形式表现出来了,就是说 我的电脑  里可以看到一个额外的盘副 h:\盘----->就是这个东东.高手帮忙看看啊!

解决方案 »

  1.   

    建议你测试下usb hub和不同的U盘的DriveType有没有不同
    如果实在不行建议你用CreateFile方法来尝试查找文件firmware.bin是否存在,根据返回值判断。
      

  2.   

    回 lake-cx ,firmware.bin确实只是在指定U盘里才有.我上面指的那个错误地点好象就是因为直接判断 if fileexists(lettle_':\firmeware.bin') 出错.那么能给个修改的建议呢?谢谢!!!另希望更多高手发表看法,适当的情况下我还会加分.拜托了/!
      

  3.   

    用这个试试,不过估计照样会弹出什么“继续”、“重试”这样的窗体,但程序不会报错
    function FileExist(const FileName: string): Boolean;
    var
      hFile: THandle;
    begin
      Result := False;
      hFile := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ,
        nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
      if hFile <> INVALID_HANDLE_VALUE then
      begin
        CloseHandle(hFile);
        Result := True;
      end;
    end;
      

  4.   

    我的就是跳出那样的windows窗口,说缺少软盘,要什么继续啊,重试啊什么的,郁闷~
      

  5.   

    能说下怎么才能避免运行exe程序时不弹出 那个东西呢? 希望赐教!