Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1272022775
Kobylyansky
2010-04-23 15:39
2012.02.19
Firebird+тип сервера


15-1319710006
Torry
2011-10-27 14:06
2012.02.19
А вы знаете что...?


2-1320884001
Citramon
2011-11-10 04:13
2012.02.19
Присваю занчения Piklist ДбГрида, не сочетаются типы.


2-1320746340
Eugene1501
2011-11-08 12:59
2012.02.19
Атрибут в XML


2-1320310497
Laguna
2011-11-03 11:54
2012.02.19
Предосмотр картинки на форме





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский