수고 많습니다.
지금 데이타 백업하는 작업을 하고 있는데요,
타겟 디렉토리를 정하기 위해서 DirectoryListBox,DriveComboBox 두 놈을
쓰고 있습니다. 그래서 경로를 가져와서 백업을 하려하는데요,
백업은 성공적으로 되는데, DriveComboBox에서 A:드라이브를 선택하고 난후
디스켓이 없으면 아주 누워버립니다.
에러메시지 --> ElnOutError 'I/O error 21'
그래서 시작그리고완성에 있는 A:드라이브를 체크하는 함수를 갔다가
썼습니다.
function TData_Backup.DiskInDrive(Drive : String):Boolean;
var
ErrorMode : word;
Driver : Char;
begin
Driver := UpCase(Drive[1]);
if not (Driver in ['A'..'Z']) then
raise EConvertError.Create('Not a Valid drive id');
ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
try
if DiskSize(Ord(Driver) - $40) = -1 then
DiskInDrive := False
else
DiskInDrive := True;
Finally
SetErrorMode(ErrorMode);
end;
end;
procedure TData_Backup.DriveComboBox1Click(Sender: TObject);
var i : integer;
begin
if DiskInDrive(DriveComboBox1.Text) = False then begin
ShowMessage('fuck'); <-- 딱 요기 까지 실행됨.
Exit;
end;
end;
그리고는 메세지 뿌려주고 확인버튼 누르면 당연하다는 듯이 누워버립니다
이 일을 어찌하면 좋겠습니까, 위대한 여러분들의 조언을 부탁드립니다.
아니면, DriveComboBox에서 아예 ComboBox에서 처럼 item추가 하듯이
A:드라이브를 빼버리는 방법이라도... 헐
데이타가 많아서 디스켓은 택도 없습니다.
> 수고 많습니다.
>
> 지금 데이타 백업하는 작업을 하고 있는데요,
>
> 타겟 디렉토리를 정하기 위해서 DirectoryListBox,DriveComboBox 두 놈을
>
> 쓰고 있습니다. 그래서 경로를 가져와서 백업을 하려하는데요,
>
> 백업은 성공적으로 되는데, DriveComboBox에서 A:드라이브를 선택하고 난후
>
> 디스켓이 없으면 아주 누워버립니다.
>
> 에러메시지 --> ElnOutError 'I/O error 21'
>
> 그래서 시작그리고완성에 있는 A:드라이브를 체크하는 함수를 갔다가
>
> 썼습니다.
>
> function TData_Backup.DiskInDrive(Drive : String):Boolean;
> var
> ErrorMode : word;
> Driver : Char;
> begin
> Driver := UpCase(Drive[1]);
> if not (Driver in ['A'..'Z']) then
> raise EConvertError.Create('Not a Valid drive id');
> ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
> try
> if DiskSize(Ord(Driver) - $40) = -1 then
> DiskInDrive := False
> else
> DiskInDrive := True;
> Finally
> SetErrorMode(ErrorMode);
> end;
> end;
>
> procedure TData_Backup.DriveComboBox1Click(Sender: TObject);
> var i : integer;
> begin
> if DiskInDrive(DriveComboBox1.Text) = False then begin
> ShowMessage('fuck'); <-- 딱 요기 까지 실행됨.
> Exit;
> end;
> end;
>
> 그리고는 메세지 뿌려주고 확인버튼 누르면 당연하다는 듯이 누워버립니다
>
> 이 일을 어찌하면 좋겠습니까, 위대한 여러분들의 조언을 부탁드립니다.
>
> 아니면, DriveComboBox에서 아예 ComboBox에서 처럼 item추가 하듯이
>
> A:드라이브를 빼버리는 방법이라도... 헐
>
> 데이타가 많아서 디스켓은 택도 없습니다.
>
디스켓의 삽입여부만 판단하시기 위함이라면
Try Except..End로 캡쳐하셔도 충분할거 생각됩니다.
에러가 발생해서 Except로 진입하면
장치가 준비되지 않았다는 메세지를 내 보내시면 될것같습니다.
그럼, 즐거운 프로그래밍이 되시길~