Привет Всем!
Вот пример на C6
Кто что может сказать по поводу ошибки при старте процедуры?
Ошибка происходит в классе FileManager, что то типа "не правильно инициализирован ErrorClass"
И кстати в дебаг режиме клара падает на ASSERT чего по моему в принципе не должно быть ...
--
Всего хорошего
Evgeny mailto:mixer@clarionlife.net
Сайт для кларионистов: http://www.clarionlife.net
Clarion FAQ: http://www.clarionlife.net/cgi-bin/bl_faq.pl?comm=tree
(Добавление)
Что-то мне сильно так кажется, что ты забыл сказать Access:SF.Init
... и избави нас от Глюкавого. Аминь!
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)
Errors in Clarion 6
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Народ! Ну может посмотрите пример!?
В принципе я могу решить данную проблему и по другому...
Но все таки у меня подозрение на ошибку в Кларионе.
P.S. Кстати почему в том самом месте в котором падает, если посмотреть в
дизассемблере - стоит два раза одна и та же строка. Что то типа
MOV EBP, [SELF]
нафига два раза одно и то же ?
--
Всего хорошего
Evgeny
(Добавление)
Ну как же... для надежности...
Алексей,
начальник отдела ПТО
ООО "ОРК"
mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://atinet.hypermart.net
http://www.nikasoft.co.uk
http://www.clarionline.h1.ru (FAQ-онлайн)
irc: irc.lucky.net:6669, channel #clarion, Bambino
origin: Да здравстувует пиво душистое, и секса дыханье пушистое
---------------------------------------
C уважением,
Юрий Философов
Написал: ClaList(2)
В принципе я могу решить данную проблему и по другому...
Но все таки у меня подозрение на ошибку в Кларионе.
P.S. Кстати почему в том самом месте в котором падает, если посмотреть в
дизассемблере - стоит два раза одна и та же строка. Что то типа
MOV EBP, [SELF]
нафига два раза одно и то же ?
--
Всего хорошего
Evgeny
(Добавление)
Ну как же... для надежности...
Алексей,
начальник отдела ПТО
ООО "ОРК"
mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://atinet.hypermart.net
http://www.nikasoft.co.uk
http://www.clarionline.h1.ru (FAQ-онлайн)
irc: irc.lucky.net:6669, channel #clarion, Bambino
origin: Да здравстувует пиво душистое, и секса дыханье пушистое
Такая вот оптимизация...нафига два раза одно и то же ?
---------------------------------------
C уважением,
Юрий Философов
Написал: ClaList(2)
Вот что я писал дословно.Так ты же жаловался, что у тебя FileManager ругался на неверную ссылку на ErrorManager.
И кстати в дебаг режиме клара падает на ASSERT чего по моему в принципе не должно быть
Только вот в ответ НИКТО ничего путного не написал!
Я извиняюсь господа, но если не смотрели пример то зачем отвечать и переспрашивать.
Для Олега Руденко: Может глянешь, и хотя бы наколку дашь, куда копать.
--
Всего хорошего
Evgeny
(Добавление)
Какой сорс и строка?
Best regards,
Andrew Listiev
Work mailto:andrewl@inbox.lv
Home mailto:gidravlic@mhm.lv
ICQ UID: 169357390
MS Messenger: werdna_werdna@hotmail.com
Написал: ClaList(2)
Вот пример на C6
Кто что может сказать по поводу ошибки при старте процедуры?
Ошибка происходит в классе FileManager, что то типа "не правильно инициализирован ErrorClass"
И кстати в дебаг режиме клара падает на ASSERT чего по моему в принципе не должно быть ...
--
Всего хорошего
Evgeny
Слушай, Евгений, а на кой ляд ты делаешь Start(SomeProcedure) не имея в этой процедуре оконной структуры? А обработка по Accept?? Тем более что Start можно делать из Fram'a? Или я что-то пропустил или одно из двух
Best regards,
Andrew Listiev
(Добавление)
пример компилится и запускается
при нажатии на кнопку "без ошибки" все ок'
при нажатии на кнопку "с ошибкой" приложение молча вылетает
--
заменив строку
START(SomeProcedure,25000)
на строку
SomeProcedure
все работет без ошибок.
..а START из метода и не должен работать.
Vladimir Degtyarenko <vlad@v-ufal.chel.su> (Home)
(Добавление)
С какого испуга!? Где это написано? А как у меня до сих пор работало в С5.5
Не веришь могу прислать полный пример который на C5.5 работает а на С6 падает.
--
Всего хорошего
Evgeny
(Добавление)
При старт создается новый экземпляр FM (конструктор запускается. видно в отладчике)
Так его же еще надо проинициализировать.
Перенос инициализации в процедуру решает проблему.
--
С уважением,
Дмитрий Осипов mailto:Dima_Osipov@km.ru
Написал: ClaList(2)
Кто что может сказать по поводу ошибки при старте процедуры?
Ошибка происходит в классе FileManager, что то типа "не правильно инициализирован ErrorClass"
И кстати в дебаг режиме клара падает на ASSERT чего по моему в принципе не должно быть ...
--
Всего хорошего
Evgeny
Слушай, Евгений, а на кой ляд ты делаешь Start(SomeProcedure) не имея в этой процедуре оконной структуры? А обработка по Accept?? Тем более что Start можно делать из Fram'a? Или я что-то пропустил или одно из двух
Best regards,
Andrew Listiev
(Добавление)
может сочли что это из разряда "черт попутал"Только вот в ответ НИКТО ничего путного не написал!
пример компилится и запускается
при нажатии на кнопку "без ошибки" все ок'
при нажатии на кнопку "с ошибкой" приложение молча вылетает
--
заменив строку
START(SomeProcedure,25000)
на строку
SomeProcedure
все работет без ошибок.
..а START из метода и не должен работать.
Vladimir Degtyarenko <vlad@v-ufal.chel.su> (Home)
(Добавление)
С какого испуга!? Где это написано? А как у меня до сих пор работало в С5.5
Не веришь могу прислать полный пример который на C5.5 работает а на С6 падает.
--
Всего хорошего
Evgeny
(Добавление)
Зачем же так категорично...а START из метода и не должен работать.
При старт создается новый экземпляр FM (конструктор запускается. видно в отладчике)
Так его же еще надо проинициализировать.
Перенос инициализации в процедуру решает проблему.
Код: Выделить всё
SomeProcedure PROCEDURE
GlobalErrors ErrorClass
CODE
GLO:SomeFileName = '.\test.tps'
Access:SomeFile.Init(GlobalErrors)
Access:SomeFile.Open
Access:SomeFile.UseFile
SF:Number = 1
IF Access:SomeFile.Fetch(SF:KeyNumber) = LEVEL:Benign
Access:SomeFile.DeleteRecord(FALSE)
MESSAGE('Запись удалена!')
ELSE
SF:Number = 1
Access:SomeFile.Insert()
MESSAGE('Запись добавлена!')
END
Access:SomeFile.Close
Access:SomeFile.Kill
С уважением,
Дмитрий Осипов mailto:Dima_Osipov@km.ru
Написал: ClaList(2)
Верю верю, извиняюсь, я просто не так задал поиск в каталоге LIBSRC.Не веришь могу прислать полный пример который на C5.5 работает а на С6 падает.
кстати START ипользуется всего три раза в сырцах библиотек
одно время много говорили про эту новую модель потоков, так что набиваем шишки, ну или вспоминаем что там говорили про глобальные объекты и их юзание в потоках, мне кажется Олег чтото подобное пояснял.
В данном случае имеем поток номер 1 в котором все работает, и поток создающийся по START в котором оно не хочет работать с объектами проинициированными из потока 1 (трабла с адресацией)
----
твой код начнет работать если вставить дубовый кусок в SomeProcedure:
SomeProcedure PROCEDURE
CODE
IF THREAD() <> 1 THEN SC.Init(GlobalErrors).
...
но, в таком случае лучше перейти на THREAD модель то есть, добавить аттрибут THREAD к файлу и к классу Access:SomeFile (процедура работает ведь только с этими объектами) и завершить эту процедуру:
...
IF THREAD() <> 1 THEN Access:SomeFile.Kill.
С уважением, Владимир Дегтяренко
> С какого испуга!? Где это написано? А как у меня до сих пор
> работало в С5.5
Должен, должен. Дело в другом.
Потому и падает, что С6. Почитай про новую тредную модель. Файл глобальный нетредный. Классы глобальные нетредные, а работать с ними хочешь из разных тредов. Как мин. нужна синхронизация доступа.Не веришь могу прислать полный пример который на C5.5 работает а на С6 падает.
И кроме того в FileManager в 6-ке используется _тредный_ служебный класс FilesManager. В результате при инициализации и открытии ты работаешь с экземпляром FilesManager основного треда, а при Insert/Delete с экземпляром FilesManager другого треда, который, как минимум, не инициализирован. В общем так писать в 6-ке нельзя.
Если перейдешь на тредный файл и FileManager, учти, что Init, Open, Close, и Kill нужно делать в каждом треде.
Ну и что? Посмотри как в АВС стартуется процедура из меню. Из метода класса вызывается рутина, и оттуда делается START(). Ни в методе, ни в рутине оконной структуры нет. И для START()-а она вообще нафиг не нужна. Можно стартовать несколько тредов прямо из главного модуля.Слушай, Евгений, а на кой ляд ты делаешь Start(SomeProcedure) не имея в этой процедуре оконной структуры?
Frame нужен чтобы в нем жило MDI окно, которое можно запустить только стартом в отдельном треде. А для самого старта ни фрейм, ни любые другие окна совершенно не нужны.А обработка по Accept?? Тем более что Start можно делать из Fram'a? Или я что-то пропустил или одно из двух
WBR, Nick Tsigouro
Написал: ClaList(2)