глюки с открытием файлов

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

глюки с открытием файлов

Сообщение Tolusha »

Фигня какая-то.
Имеет два файла и следующий код:

ELE_ACCNT FILE,DRIVER('dBase4'),OEM,NAME(GFN:ELE_ACCNT),PRE(ELE_ACCNT),BINDABLE,THREAD
KACCNT KEY(ELE_ACCNT:LS_ID),NOCASE
Record RECORD,PRE()
LS_ID STRING(9)
NAME_1 STRING(15)
NAME_2 STRING(10)
NAME_3 STRING(12)
TOWN_ID STRING(2)
STREET_ID STRING(3)
NUM_D REAL,NAME('NUM_D=N(4.0)')
NUM_CORP STRING(8)
NUMBER_K STRING(4)
END
END


ELE_STREET FILE,DRIVER('dBase4'),OEM,NAME(GFN:ELE_STREET),PRE(ELE_STREET),BINDABLE,THREAD
KSTREET KEY(ELE_STREET:STREET_ID),NOCASE
Record RECORD,PRE()
STREET_ID STRING(3)
NAME STRING(20)
END
END


relate:ele_street.open
relate:ele_street.close

relate:ele_accnt.open
relate:ele_street.open
message(records(ele_accnt)) ! показывает к-во записей ele_street и вообще ele_accnt становиться как-будто ссылкой на ele_street
relate:ele_street.close
relate:ele_street.close

Если же после первого relate:ele_street.close поставить close(ele_street), то все ok. Где глюк?
Анатолий.
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Сообщение Олег »

Это - известная ошибка DBF-драйверов. И лечится как раз явным вызовом оператора close(file). По крайней мере в C6x. В младших версиях приходится малость поизвращаться - использовать явные вызовы функций RTL Клариона.
Более подробно - см. письма по соответствующей теме в рассылке ClaList. Архив рассылки, кстати, можно взять на этом-же сайте.
Удачи!
Ответить