Общие положения |
Ряд методов объекта File предназначены для его открытия как файла на диске (OpenFile) или мемо-поля базы данных (OpenMemo). Остальные методы становятся доступными с момента открытия и до закрытия объекта в любом месте VIP программы.
Оператор вызова метода объекта File начинается с имени объекта, которое отделяется от остальной части оператора точкой.
Существует набор процедур, совпадающих по назначению и близких по имени к методам объекта File (процедуры имеют префикс File_). Отличие заключается в том, что эти процедуры в качестве входного параметра получают ссылку на объект File (метод Handle) и благодаря этому объект File может передаваться как переменная в VIP-процедуры.
Если при работе метода (процедуры) произошла ошибка, то возникает исключение:
если объект открыт методом OpenMemo, то возникают исключения из группы ExDateBase (некоторые исключения группы ExDateBase приведены ниже в таблице);
ExDataBase |
Исключения при работе с Мемо-полем |
ExDbRecordInUse |
Запись используется |
ExDbNoPosition |
Ошибочная позиция |
ExDbInvalidField |
Передано не мемо-поле в метод File.OpenMemo |
если объект открыт методом OpenFile, то возникают исключения из группы ExFile (см. таблицу). В обработчике исключений, произошедших в методе OpenFile, программист имеет возможность переоткрыть файл и продолжить выполнение оператором _retry.
ExFile |
Исключения при работе с объектом File |
ExFileNotFound |
Файл не найден |
ExPathNotFound |
Путь не найден |
ExTooManyHandlers |
Слишком много открытых файлов |
ExFileAccessDenied |
Доступ запрещен |
ExBadFileHandler |
Некорректный код файла |
ExDriveNotFound |
Указан несуществующий диск |
ExCannotDeleteCurDir |
Невозможно удалить текущую директорию |
ExDiskIsWriteProtected |
Попытка записи на защищенный от записи диск |
ExDriveNotReady |
Диск не готов |
ExFileWriteError |
Ошибка записи |
ExFileReadError |
Ошибка чтения |
ExFileSharingViolation |
Нарушение разделения файла |
ExFileIsLocked |
Нарушение блокировки файла |
ExFileAlreadyExist |
Файл уже существует |
ExCannotCreateDirectory |
Ошибка создания директории |
ExNetworkError |
Ошибка при работе с сетью |
ExNullFileName |
Пустое имя файла при открытии файла |
ExFileNotOpened |
Файл не открыт |
ExFileUniversalErrors |
Все прочие ошибки работы с файлами |
Пример 1. Обработка исключений при работе с файлом.
_try { aFile.OpenFile ('c:\aFile', stOpen); aFile.Seek (aFile.GetSize); Message ('Файл создан и открыт'); } _except on ExFileNotFound : { aFile.OpenFile ('c:\aFile', stCreate); Message ('Исключение ExFileNotFound'); _retry; }; on ExFile : Message ('Исключение ExFile'); _finally { aFile.Close; DeleteFile ('c:\aFile'); };
Пример 2. Основные режимы работы с файлом.
В результате работы примера будет выведено сообщение:
Прочитано из файла |
целое: -1 |
плавающее: 2.00 |
строка: This is a sample. |
Interface TestFileOpen; show at (7,5,72,13); create view as select * from X$FILES; File gfFile; Screen OneRec; << >> end; HandleEvent cmInit: { var f : longInt; var s : String; var i : integer; var d : double; f := gfFile.Handle; gfFile.OpenFile('test.txt', stCreate); gfFile.Write('<'); gfFile.Write(-1); File_Write(2.0, f); File_WriteLn('>', f); gfFile.WriteLine('This '); gfFile.WriteLn('is a sample.'); gfFile.Close; File_OpenFile('test.txt', stOpenRead, gfFile.Handle); gfFile.Seek(2); File_Read(i, f); File_Read(d, f); File_Seek(15, f); File_ReadLn(s, f); File_Close(f); message('Прочитано из файла ' + File_FileName(f) + chr(13)+'целое: ' + i + chr(13)+'плавающее: ' + d + chr(13)+'строка: ' + s); abort; } end; end.