On-line: alex_II, Andrey, i3t4j6, Pasha, Haz, гостей 1. Всего: 6 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 13.06.06 22:30. Заголовок: Странные ошибки !


Не стого ни с сего возникают непредсказуемые ошибки при компиляции кода . Траблы заключаются в том что компилятор выкидывает на совершенно нормальных строках ошибки вроде неправильного синтаксиса и т д . Странно - но куски кода уже не менялись там несколько лет . Собственно что-то в модуле правлю - но не там где ошибка .... Выгружаю из памяти NG.EXE - и всё становится нормально . Код ЕХЕшника уже под 1 мег . Блинкер 7 CLIPPER 5.3 .... Что скажут ГУРУ ?

Следующая ошибка - уже видно где-то я недосмотрел или не дочитал :
Есть индекс CDX и вот иногда (пока не выяснил) выскакивает что-то вроде - "повреждены данные" .... это когда пытаюсь изненить какое-то поле - например логическое значение ...



Спасибо: 0 
Цитата Ответить
Ответов - 51 , стр: 1 2 3 All [только новые]


администратор




Пост N: 278
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.06.06 07:47. Заголовок: Re:


Основной памяти не хватает для компиляции при загруженном NG скорее всего.
Юзай weg - Expert Guide. Norton Guide Reader For Windows
http://www.davep.org/norton-guides/
http://www.davep.org/norton-guides/WEGSetup.exe

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 39
Зарегистрирован: 30.05.05
ссылка на сообщение  Отправлено: 14.06.06 10:49. Заголовок: Re:


Это ерунда!
Вот когда начнет писать memory overbloker, тогда придеться помучиться: дробить PRG, уменьшать количество definoв, задавать rmakeу дополнительные параметры /XS /XW....

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 23
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 14.06.06 11:42. Заголовок: Re:


... или отправиться к xHarbour, как Patric

Виталий,
"повреждены данные":
подробнее: система, сеть, среда...

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.06.06 14:55. Заголовок: Re:


saulius Могу скинуть на мыло кусочек кода с описанием - может поможешь ?
А ошибка - _DBFCDX/8006 - Обнаружено разрушение данных .
Вкратце :
&& Так я организую индексный файл
USE "JROPT" ALIAS "LANJROPT" && Открыли журнал ОПТОВЫХ ПРОДАЖ
INDEX ON CODE TAG CODE TO ("LANJROPT") FOR !DELETED() && код товара
INDEX ON DATEP TAG DATEP TO ("LANJROPT") FOR !DELETED() && дата продажи
INDEX ON OPTCODE TAG OPTCODE TO ("LANJROPT") FOR !DELETED() && код оптовика
INDEX ON DATEP TAG DATEPU TO ("LANJROPT") FOR !DELETED() UNIQUE && все даты продаж (для быстрого меню ДАТЫ)
INDEX ON OPL TAG OPL TO ("LANJROPT") FOR !DELETED() && Олачено/нет
INDEX ON STR(OPTCODE,5,0)+DTOC(DATEP) TAG DPROD TO ("LANJROPT") FOR !DELETED() UNIQUE && все уникальные даты для каждого клиента - для меню КЛИЕНТ->ДАТА
INDEX ON X_KASSE TAG XKASSE TO ("LANJROPT") FOR !DELETED() && номера кассовых чеков
INDEX ON OPTCODE TAG OPTNEOPL TO ("LANJROPT") FOR (!DELETED() .AND. !OPL ) && по кодам клиентов только НЕОПЛАЧЕННОГО ТОВАРА
SET INDEX TO ("LANJROPT")
**********************************
&& Убиваю стандартный обработчик ошибок
bErrorHandler:={|oError| MyError(oError) }
bLastHandler:=ERRORBLOCK(bErrorHandler)


SELECT TABLE && Тут у нас список товара на оплату
&& CODE:N:6 - код товара
&& DAT:D:8 - дата продажи
GO TOP
DO WHILE !EOF() && пробегаем по списку на оплату
S_C:=CODE && Код товара
S_D:=DAT && Дата

SELECT LANJROPT
SET ORDER TO
SET ORDER TO TAG OPTCODE && На индекс КЛИЕНТЫ
SET SCOPE TO (KLIENT) && Видим только нужного
GO TOP
DO WHILE !EOF() && Пробегаем по данным нашему клиенту
&& МЕТКА-1
IF DATEP=S_D .AND. CODE=S_C .AND. !OPL .AND. OPTCODE=KLIENT && товар соответствует ??
RLOCK()
NEOPL:=(KOL*CENA)-SUMOPL && Неоплаченная сумма для этой детали
XX:=OST_DEN-NEOPL
IF XX<0 && Денег на оплату меньше, чем нужно
REPLACE LANJROPT->OPL WITH .F. && признак что не до конца оплачен
REPLACE DOPL WITH DATE() && дата оплаты
REPLACE SUMOPL WITH SUMOPL+OST_DEN && прибавляем денюжки к тому что уже могло быть
New_OPL:=New_OPL+OST_DEN && Сумма уже разнесенная
OST_DEN:=0 && Нет больше денег
DBUNLOCK()
ELSE && Денег на оплату этой позиции хватает
&& Проверяем нужно-ли оплачивать полностью или нет
REPLACE DOPL WITH DATE() && Дата оплаты
DOB:=(KOL*CENA)-SUMOPL && Добавленная сумма
REPLACE SUMOPL WITH SUMOPL+DOB
OST_DEN:=OST_DEN-DOB && Уменьшим остаток денег на сумму добавленных денег
New_OPL:=NEW_OPL+DOB && Добавили сумму на сумму добавленных денег
&& МЕТКА-2
REPLACE LANJROPT->OPL WITH .T. && Признак что эта позиция оплачена полностью
ENDIF
EXIT && раз этот товар проплатили
&& значит нефиг искать дальше
ENDIF
SELECT LANJROPT && Ищем дальше
SKIP
ENDDO
SELECT TABLE && Следующая деталька на оплату
SKIP
ENDDO
*************************

вот тут если в алиасе LANJROPT сделать какие-либо

движения (SKIP,GO TOP , DBCLOSEAREA()...) - возникает ошибка :
_DBFCDX/8006 Обнаружено разрушение данных:OPL
Я предполагаю что когда вошли в оплату (МЕТКА-1) по условию : !OPL - тоесть
признак что товар не оплачен - а затем в теле делаем изменение этого флага (МЕТКА-2)
и вываливается .






Спасибо: 0 
Цитата Ответить
администратор




Пост N: 279
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.06.06 15:54. Заголовок: Re:


Pager пишет:

 цитата:
Это ерунда!



тогда как это объяснить ?

Виталий пишет:

 цитата:
Выгружаю из памяти NG.EXE - и всё становится нормально



Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.06.06 17:07. Заголовок: Re:


Видать что-то там в памяти мешает - может переменные какие "накладываются" ? Но это ошибки скорее системные . Меня интересует тема - как убрать [ОШИБКА _DBFCDX/8006 ]?

Спасибо: 0 
Цитата Ответить





Пост N: 60
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 14.06.06 17:29. Заголовок: как убрать


1. после создания CDX ОБЯЗАТЕЛЬНО закрыть DBF - это относится ко всем CDX-драйверам
2. CDX в 5.3 кривые. лучше пользовать 5.2e + Six (или xHarbour)

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.06.06 21:02. Заголовок: Re:


Попробую - но вроде я так и делаю ! Дело в том что создание индекса - рано утром при первом пуске .... да и другие станции в сети НИЧЕГО не создают - а все равно вылетает . И именно при изменении ЛОГИЧЕСКОГО поля ....

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.06.06 21:04. Заголовок: Re:


А дрова у меня не DBFCDX а именно COMIX : _DBFCDX

Спасибо: 0 
Цитата Ответить



Пост N: 24
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 14.06.06 23:37. Заголовок: Re:


Виталий,
в ветке ELSE (где МЕТКА-2) невижу DBUNLOCK()

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.06.06 09:49. Заголовок: Re:


Я просто порезал текст - там действительно небыло DBUNLOCK() . Я поставил - всё равно "ошибается" !
Блин - надоело мне заглушки выставлять на ERROR ! Стек жрёт !

Спасибо: 0 
Цитата Ответить





Пост N: 61
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 15.06.06 12:12. Заголовок: Re:


а строить индекс по DTOC - неправильно. надо пользовать DTOS
_Date_Format_ меняется - и кирдык.
UNIQUE индексы также неприменимы (обсуждалось уж на форуме).


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 25
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 15.06.06 13:11. Заголовок: Re:


Виталий,
Можно сделать кусок программы и локально получить стабильную ошибку ?
Надо выяснить суть проблеммы.

Какие заглушки ?

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.06.06 14:06. Заголовок: Re:


Заглушки - это в смысле перехват ошибок на процедуру польщователя ...
Кстати а что там про UNIQUE ??? Неприменимы в смысле когда ? Если вместе с логическим полем (составной индекс) или как ?
По поводу построения DTOC-DTOS - у меня в программе формат ДАТЫ не меняется .... извините - 10 лет работает


Спасибо: 0 
Цитата Ответить





Пост N: 62
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 15.06.06 14:45. Заголовок: про UNIQUE - это пора в FAQ, однако


PROC main
FIELD qq
dbCreate( "test1", {{'qq','C',10,0}})
use test1
aEval( Array(5),{|_1,_2| _1 := StrZero(_2,10), ;
__dbAppend(), Field->qq := _1, ;
__dbAppend(), Field->qq := _1 })
index on qq to test1 UNIQUE FOR !DELETED()
dbGoTop()
dbDelete() // удаляю запись 1 (qq == '0000000001')
// замечу, что есть запись 2 (qq == '0000000001')
dbEval({|| QOut(Field->qq) }) // где '0000000001' от 2-й записи?
return


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 63
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 15.06.06 15:02. Заголовок: Re:


PROC main
FIELD qq
LOCAL i
SET DELETED OFF
dbCreate( "test1", {{'qq','C',10,0}})
use test1
aEval( Array(5),{|_1,_2| _1 := StrZero(_2,10), ;
__dbAppend(), Field->qq := _1, ;
__dbAppend(), Field->qq := _1 })
index on qq to test1 UNIQUE FOR !DELETED()
index on qq to test2 UNIQUE ADDITIVE
dbGoTop()
dbDelete() // удаляю запись 1 (qq == '0000000001')
// замечу, что есть запись 2 (qq == '0000000001')
For i := 1 to 2
?
OrdSetFocus(i)
dbEval({|| QOut(Field->qq), QQOut(STR(RecNo())+IIF(Deleted(),' Deleted','')) })
Next
return


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.06.06 15:40. Заголовок: Re:


SergeJa И что из твоего кода ?
Когда делаю удаление - привычка SKIP(0) ....


Спасибо: 0 
Цитата Ответить





Пост N: 64
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 15.06.06 17:09. Заголовок: Re:


Про SKIP(0) не понял.
10 лет программе?
Мой тестик запусти. Sapienti sat.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.06.06 18:02. Заголовок: Re:


SKIP(0) - иногда чтоб рефрешик был записей ...
Моя программулинка уже с 1995 года крутится .... начиналось с 5.0 и дошло до 5.3 . Думал уйти в винду ... да появился PageScript ... и пришлось остаться ....
Про тестик расскажи поподробнее - а то не понял что где должно показать ?

Спасибо: 0 
Цитата Ответить





Пост N: 65
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 15.06.06 18:23. Заголовок: Re:


рефреш бессмысленен в данном случае.

для сборки теста сохранить мой примерчик в qqq.prg и ...
clipper qqq.prg /m/n/a/w
rtlink fi qqq
-------
результат

0000000002 3
0000000003 5
0000000004 7
0000000005 9

0000000001 1 Deleted
0000000002 3
0000000003 5
0000000004 7
0000000005 9

----
Диагноз уникальным индескам ставь сам.
В анамнезе: после удаления записи данные индекса не соответствуют желаемым.
Надеюсь, что твоя программа не обслуживает нужды стратегических объектов (живу я на северо-западе РФ :) ).
Успехов!


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 51 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 71
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет