|
08.06.2006, 16:59 | #1 |
Участник
|
Аксапта выдает AsciiIo объект не инициализирован?
Пакетно каждый час запускается преобразование текстовых файлов, и иногда по непонятным причинам выдает что "AsciiIo объект не инициализирован'. Это здорово мешает, так как процедура не выполнена и плюс все пакетные задания виснут в ожидании. В чем может быть причина и как обойти проблему или разрешить?
|
|
08.06.2006, 17:04 | #2 |
Гость
|
Цитата:
Сообщение от Hidden
Пакетно каждый час запускается преобразование текстовых файлов, и иногда по непонятным причинам выдает что "AsciiIo объект не инициализирован'. Это здорово мешает, так как процедура не выполнена и плюс все пакетные задания виснут в ожидании. В чем может быть причина и как обойти проблему или разрешить?
|
|
08.06.2006, 17:08 | #3 |
Участник
|
Цитата:
Сообщение от Hidden
Пакетно каждый час запускается преобразование текстовых файлов, и иногда по непонятным причинам выдает что "AsciiIo объект не инициализирован'. Это здорово мешает, так как процедура не выполнена и плюс все пакетные задания виснут в ожидании. В чем может быть причина и как обойти проблему или разрешить?
1. Либо некорректный путь передан. - Тогда проверять его на корректность. WinApi ::fileExists() 2. Либо файл уже существует и переписать его поверх невозможно, так как он, например, открыт другим приложением на запись. 3. Может быть есть какие то ограничения в операционке на число открытых файлов. Учтите что файл после отработки кода может быть закрыт не сразу - из-за того что сборщик мусора не сразу убивает объект. Может быть тогда для файла AsciiIo принудительно вызывать Finalize() ? |
|
08.06.2006, 17:18 | #4 |
Участник
|
Цитата:
Сообщение от Logger
Скорее всего в момент инициализации объекта возникает ошибка.
1. Либо некорректный путь передан. - Тогда проверять его на корректность. WinApi ::fileExists() 2. Либо файл уже существует и переписать его поверх невозможно, так как он, например, открыт другим приложением на запись. 3. Может быть есть какие то ограничения в операционке на число открытых файлов. Учтите что файл после отработки кода может быть закрыт не сразу - из-за того что сборщик мусора не сразу убивает объект. Может быть тогда для файла AsciiIo принудительно вызывать Finalize() ? ТОгда пишет Метод объявлен как protected и может вызываться только из методов классов-наследников AsciiIo. |
|
08.06.2006, 17:23 | #5 |
Участник
|
Можно создать класс наследник AsciiIO и использовать его вместо базового. А в нем перекрыть метод finalize() и уровень доступа сделать ему public
|
|
08.06.2006, 18:28 | #6 |
Участник
|
Цитата:
Сообщение от kashperuk
Можно создать класс наследник AsciiIO и использовать его вместо базового. А в нем перекрыть метод finalize() и уровень доступа сделать ему public
Проверка на Protected Private происходит только на этапе компиляции и легко обходится при работе. Хотя это окнечно методологически неверно и правильнее делать через наследование как kashperuk указал. |
|
08.06.2006, 18:21 | #7 |
злыдень
|
Есть ещё "железячная" проблема, когда файлы "зацепляются" операционкой. Типа файл используется, хотя он на самом деле не используется. Это наблюдается у нас когда за день создаются/удаляются по несколько тысяч файлов. NTFS. Лечим периодической чисткой и дефрагментацией.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
09.06.2006, 09:30 | #8 |
Участник
|
WinApi ::fileExists() говорит, что занятые файлы не существуют, более корректная версия аfileExists2
Вместо finalize можно попробовать использовать io=null (хотя неизвестно точно когда его выкинет сборщик мусора, но на практике это прокатывало) |
|
09.06.2006, 12:05 | #9 |
Участник
|
Всем спасибо! Попробую! Самое странное вылетает с такой ошибкой где то 1 раз из 50 запусков, т.е. 1 раз в два три дня.
|
|
10.06.2006, 13:47 | #10 |
Участник
|
Можно еще добавить проверку инициализации объекта файла с выброской исключения, а в catch алгоритм перехода к следующему файлу (продолжения обработки далее).... и тогда пакетник останавливаться не будет, а при следующем запуске снова займется проблемными файлами...
__________________
Alexander |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Каков процент внедрений "стандартной" поставки системы Аксапта? | 17 | |||
Ошибка при инициализации AsciiIO объекта | 3 | |||
Запросы в Аксапта | 5 | |||
Объект dictField не инициализирован | 1 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|