создать новую тему раскрыть все
свернуть/развернуть ветвь Критическая ошибка [Роман 04/05/2004 18:28] # написать ответ
 
Может уже где-то встречалась...
 
Импортировал данные с Сash 1.4 в ACash 2.0 (билд где-то 186)
3 часа работы с файлом в ACash 2.0 (билд 190): добавление, удаление, изменение операций (по одной и
 
групами), создание и удаление агентов, статтей.
При попытке снова открыть файл:
 
Файл: Array.h
Строка: 282
Возврат: 0x0041c9f9
Версия: 2.0 alpha
Сборка: 190
 
Файл: dbEngine.h
Строка: 569
Возврат: 0x00414279
Версия: 2.0 alpha
Сборка: 190
 
Файл: dbEngine.h
Строка: 569
Возврат: 0x00414282
Версия: 2.0 alpha
Сборка: 190
 
Файл: dbEngine.h
Строка: 569
Возврат: 0x00414279
Версия: 2.0 alpha
Сборка: 190
 
Файл: dbEngine.h
Строка: 569
Возврат: 0x00414282
Версия: 2.0 alpha
Сборка: 190
 
Файл: dbEngine.h
Строка: 569
Возврат: 0x00414279
Версия: 2.0 alpha
Сборка: 190
 
и так около 20 раз...
 
Dervish: Роман, ответ см.ниже.
 
... потом около 150 раз:
 
Файл: dbEngine.h
Строка: 569
Возврат: 0x004146cc
Версия: 2.0 alpha
Сборка: 190
 
... потом 2 раза
 
Файл: dbEngine.cpp
Строка: 1402
Возврат: 0x0041d6d8
Версия: 2.0 alpha
Сборка: 190
 
... и база открылась.
 
Тут мне сразу захотелось выгрузить все данные в Exel, но
 
Файл: Database.cpp
Строка: 692
Возврат: 0x0041fe16
Версия: 2.0 alpha
Сборка: 190
 
Cash "вырубалась", а в Exel данные выгрузились лишь частично:
Balances, Accounts, Rates, Currencies. Закладка Transactions оказалась пустой.
 

Вторая попытка. Делаю "Сохранить как"
 
2 раза
 
Файл: dbEngine.cpp
Строка: 1402
Возврат: 0x0041cfde
Версия: 2.0 alpha
Сборка: 190
 
и новый файл базы готов, открывается с меньшим числом нареканий
 
около 20 раз
 
Файл: Array.h
Строка: 282
Возврат: 0x0041c9f9
Версия: 2.0 alpha
Сборка: 190
 
и 1 раз
 
Файл: dbEngine.cpp
Строка: 1402
Возврат: 0x0041d6d8
Версия: 2.0 alpha
Сборка: 190
 
но выгрузить данные в Exel все-равно не могу.
 
Dervish: Об этой ошибке сообщали мне несколько раз, но я никак не мог её вычислить. А тут, на праздники, я очень внимательно посидел над кодом и мне кажется, что я ухватился за след этой ошибки.
 
Роман, скажите, а во время двухчасовой правки ваших данных, вы пользовались undo/redo? Было такое, чтобы после добавления новых записей вы вначале делали undo а потом сохраняли данные?
 
Ошибка, как мне представляется, была не в алгоритмах добавления, редактирования или удаления данных, а в стыковке этих алгоритмов с сохранениями файла. Действительно, в 190 версии такое громадное количество отладочных утверждений (assert) прописано, что программа из-за них реально начинает подтормаживать! Кроме того, после каждого действия пользователя программа проверяет корректность всех индексов. И ошибок не находит! Однако, после сохранения и во время чтения файла, ошибки вылезают во всей красе! Not so
 
В общем, я сейчас готовлю 191-й билд, он, фактически, написан, но из-за того, что в нём изменился формат базы, я делаю программу-конвертер от старых данных к новым. Я постарался в 191-м билде учесть возможные проблемы с записью/чтением данных, мне кажется, что больше эта ошибка не должна проявляться.
 
А что касательно вашего файла данных, то я готов его исправить ручками, если он представляет для вас ценность.
 
PS. Этот ответ я продублирую на e-mail.