Форум: "Начинающим";
Текущий архив: 2012.02.19;
Скачать: [xml.tar.bz2];
ВнизФайл уже открыт 107 Найти похожие ветки
← →
bam © (2011-11-08 13:35) [0]Добрый день.
Я - студент.
Выполняю лабу по ООП. Никак не могу получить ошибку 107.
Задание звучит так:
try
. . .
except
on E:EInOutError do
case E.ErrorCode of
2:MessageDlg(‘Файл не найден!’, mtWarning, [mbOk], 0);
3:MessageDlg(‘Путь не найден!’, mtWarning, [mbOk], 0);
32:MessageDlg(‘Ошибка совместного доступа!’, mtWarning,
[mbOk], 0);
107:MessageDlg(‘Файл уже открыт!’, mtWarning, [mbOk], 0);
end;
end;
Смоделируйте данные виды ошибок ввода/вывода.
Ошибку 2 получить проще лёхкого, нужно всего лишь при открытии файла на чтение ошибиться в названии файла.
Ошибку 3 также получить лехко - нужно ошибиться в пути при открытии файла на чтение.
Ошибку 32 также несложно получить - нужно открыть файл на чтение и на запись.
А вот как получить ошибку 107, какие манипуляции нужно проделать с текстовым или другим файлом, чтобы 107 все-таки появилась на свет??
p.s. Ошибки после 100-й я получал(103 и 104). Проект на VCL.
Заранее премного благодарен откликнувшимся добрым русским людям.
--
C уважением, Андрей.
← →
MBo © (2011-11-08 13:42) [1]Справка по EInOutError Class всё объясняет
← →
MBo © (2011-11-08 13:46) [2]>p.s. Ошибки после 100-й я получал(103 и 104). Проект на VCL.
странно, учитывая
Error codes in the range 100 to 149 represent error conditions raised by CLX.
Ошибки 100-106 можно получить через IOResult при использовании соотв. директивы {$I-} , но 107 для данного случая нет в списке
← →
Inovet © (2011-11-08 14:03) [3]> [2] MBo © (08.11.11 13:46)
> но 107 для данного случая нет в списке
Да и название ошибки странное - "файл уже открыт", это же то же самое "Ошибка совместного доступа" должно быть.
← →
bammy (2011-11-08 14:09) [4]Выполнял в Delphi2009. Создавал new VCL Form Project.
Откуда в нем может быть CLX?
103 и 104 ошибки генерились...
А как получить 107. 107 - File already open.
Вот вопросец....
← →
sniknik © (2011-11-08 14:50) [5]нужно перестать пользоваться функциями дельфи... и писать на winAPI
{ Create I/O exception }
function CreateInOutError: EInOutError;
type
TErrorRec = record
Code: Integer;
Ident: string;
end;
const
ErrorMap: array[0..6] of TErrorRec = (
(Code: 2; Ident: SFileNotFound),
(Code: 3; Ident: SInvalidFilename),
(Code: 4; Ident: STooManyOpenFiles),
(Code: 5; Ident: SAccessDenied),
(Code: 100; Ident: SEndOfFile),
(Code: 101; Ident: SDiskFull),
(Code: 106; Ident: SInvalidInput));
var
I: Integer;
InOutRes: Integer;
begin
I := Low(ErrorMap);
InOutRes := IOResult; // resets IOResult to zero
while (I <= High(ErrorMap)) and (ErrorMap[I].Code <> InOutRes) do Inc(I);
if I <= High(ErrorMap) then
Result := EInOutError.Create(ErrorMap[I].Ident) else
Result := EInOutError.CreateResFmt(@SInOutError, [InOutRes]);
Result.ErrorCode := InOutRes;
end;
дельфи часть обрабатывает не допуская до этих ошибок
← →
bammy (2011-11-08 15:46) [6]Сегодня попробую - thank"s!
← →
han_malign (2011-11-09 08:52) [7]System.pas:
procedure SetLineBreakStyle(var T: Text; Style: TTextLineBreakStyle);
begin
if TTextRec(T).Mode = fmClosed then
TTextRec(T).Flags := (TTextRec(T).Flags and not tfCRLF) or (tfCRLF * Byte(Style))
else
SetInOutRes(107); // can"t change mode of open file
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.02.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c