C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[40709] [질문쟁이]Drive Combo Box에서 에러발생
공윤경 [] 835 읽음    2005-06-23 12:28
많은 분들의 만류(?)에도 불구하고 어쩔수없이 OpenDialog를 만들어야할 팔자에 놓여진공윤경이라고 합니다.
제가 일하는곳은 일본이구요. 당연히 초짜인 저는 시키면 시키는대로...
게다가. 아직 제 의견을 담당자를 설득할정도의 일어 실력이 안되어나서리 ㅠㅠ
일단 담당자는 여러나라에서 쓰는 플그램을 만들려하고 일본어가 안되는 컴터에서는 일단 일본어는 안보이고 영어로 표시되게 하는데....Tnt컴포넌트인가? 그건 쓰지 않는게 좋다고 합니다.

아무튼 그래서 오픈다이알로그를 만들고있는데요
드라이브콤보박스에서 A드라이브라던가 비어있는 드라이브를 선택했더니 에러가 나더라구요
I/O error 21 이라는데
밑에 검색해보니 이런 소스가 있는데요
빌더에선..어찌..해야하나요?

_______________________________________________________________________
델파이 소스입니다.
전 아래와 같은 방법으로 체크했습니다.
다음과 같은 함수를 선언한 후 호출해 보세요.........

procedure TForm1.DriveComboBox1Click(Sender: TObject);
var
  currentdrv: char;
  defaultdrv: integer;
begin
  defaultdrv := DriveComboBox1.Items.IndexOf('C: ['+GetVolumeName('C')+']');
  currentdrv := DriveComboBox1.Text[1];

  case GetDriveType(PChar(currentdrv + ':\')) of
    DRIVE_REMOVABLE :
      begin
        if not DiskInDrive(currentdrv) then begin
          showmessage('디스켓이 없습니다.');
          DriveComboBox1.ItemIndex := defaultdrv;
        end;
      end;
    DRIVE_CDROM :
      begin
        if not DiskInDrive(currentdrv) then begin
          showmessage('CD-Title이 없습니다.');
          DriveComboBox1.ItemIndex := defaultdrv;
        end;
      end;
    DRIVE_REMOTE :
      begin
        if not DiskInDrive(currentdrv) then begin
          showmessage('remote drive를 연결할 수 없습니다.');
          DriveComboBox1.ItemIndex := defaultdrv;
        end;
      end;
  end;
end;

function DiskInDrive(const Drive: char): Boolean;
var
  DrvNum: byte;
  EMode: Word;
begin
  result := false;
  DrvNum := ord(Drive);
  if DrvNum >= ord('a') then dec(DrvNum,$20);
    EMode := SetErrorMode(SEM_FAILCRITICALERRORS);
    try
      if DiskSize(DrvNum-$40) <> -1 then result := true
      else messagebeep(0);
    finally
      SetErrorMode(EMode);
    end;
end;

+ -

관련 글 리스트
40709 [질문쟁이]Drive Combo Box에서 에러발생 공윤경 835 2005/06/23
40710     앗~ 답을 찾았습니다. 근데 삭제가 안되네요 ^^; 공윤경 805 2005/06/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.