Главная страница
    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.005 c
2-1320822681
Fr
2011-11-09 11:11
2012.02.19
FlashWindow


6-1250621874
cerber
2009-08-18 22:57
2012.02.19
Отправить Ctrl+A, Ctrl+V в окно webbrowser


15-1320092990
Юрий
2011-10-31 23:29
2012.02.19
С днем рождения ! 1 ноября 2011 вторник


15-1317315646
Юрий Зотов
2011-09-29 21:00
2012.02.19
Слетел винт...


6-1251739894
bodun
2009-08-31 21:31
2012.02.19
WinSock - UDP протокол: подскажите статейку или пример!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский