Форум » GUI » Неисправимая ошибка 9009 или 9006 » Ответить

Неисправимая ошибка 9009 или 9006

Andrey: Прога на большой базе - 71 тыс.записей вылетает вот с такой ошибкой в error.log: [pre2]Info: Harbour MiniGUI Extended Edition 20.12.0 (32-bit) Неисправимая ошибка 9009: hb_xrealloc ене может перераспределить память Called from DBAPPEND(0) Called from CREATEMEMTMP(1310) in Demo2.prg Called from MAIN(109) in Demo2.prg ------------------------------------------------------------------------[/pre2] Вот выборочный код: [pre2]REQUEST HB_MEMIO ... DBCREATE( cFileTmp, aStru, cVia, .T., cAlsTmp ) // область cAlsTmp k := FieldPos( cFld ) FOR i := 1 TO (cAlias)->( LastRec() ) SELECT(cAlsTmp) APPEND BLANK // строка 1310 FieldPut( k, i ) SELECT(cAlias) DBGOTO(i) IF (cAlias)->( DELETED() ) (cAlsTmp)->( DbDelete() ) ENDIF DO EVENTS NEXT[/pre2] Из одной базы копирую записи в новую базу MEMIO Как с этим бороться / что править ? [img class=smile" src=/gif/smk/sm33.gif] PS. База создаётся объемом 415 Мб ( пробовал писать на диск) два раза, прога ломается на создании второй базы. Просто этот пример - продолжение Tsb_VirtualColumn и в этой проге 2 раза создаётся временная база.

Ответов - 26, стр: 1 2 All

Pasha: Andrey пишет: Делал просто пример под задачу сравнения двух dbf и показ отличий в ТСБ. Думал сделать показ различия строк и колонок цветами, а цвета загнать в массив или во временную базу. У меня в утилите dbedit как раз есть функция сравнения двух dbf, без использования промежуточного массива. Там цикл по первому dbf, сравнение каждой записи со вторым с записью различий в выходной массив. В массив заносятся только различия

SergKis: Pasha пишет Там цикл по первому dbf, сравнение каждой записи со вторым с записью различий в выходной массив. В массив заносятся только различия У Андрея не программа сравнения, а скорее два цветных отчета (таблицы) на одном окне с 6-ю запросами к одной базе, которые результат помещают в новые виртуальные колонки (6 штук можно больше делать), обозначая цветами, в соответствии с данными и алгоритмами, каждой колонки. По виртуальным полям можно фильтровать полученный результат как по одной колонке, так и по всем с получением соответствующих итогов, работая на 2-х таблицах.

Andrey: SergKis пишет: У Андрея не программа сравнения, а скорее два цветных отчета (таблицы) ... Да это точно. Просто нужно юзеру показать различия допустим текущей базы и что было несколько месяцев назад. А то вечно стенания, то данные пропали, то никто данные не трогал, а они другие и т.д. Да и самому понятней становиться когда перед глазами изменения, как в WinMerge.


PSP: Andrey пишет: Ну это сложно сделать без массивов. Тем более memio вроде классная штука, только пользоваться её надо научиться. Каждый инструмент имеет ограниченный круг применения. Даже самой дорогой золотой ложкой траншею трудно выкопать. Сломается))

SergKis: Andrey пишет Просто нужно юзеру показать различия допустим текущей базы и что было несколько месяцев назад Это частный случай, более общий, на мой взгляд, получение данных за периоды по 6 показателям (можно больше) для сравнения, например прошлый месяц (1 таблица тсб) и текущий (2 таблица тсб), прошлый год и тек. год, кварталы, и т.д. для анализа и сравнения

Pasha: В конце концов, есть же диспетчер задач. Достаточно оценить, сколько программа берет памяти в спокойном состоянии, пусть это будет 10-20М, и в возбужденном. Если память будет зашкаливать, это значит, что "что-то я делаю не так"



полная версия страницы