viewtopic.php?p=30219#p30219 смотрим пункт - Процедура проверки перед входом в программу.
Clarion 11-12
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Clarion 11-12
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
Clarion 11-12
Вопрос в том, когда его использовать и как на это отреагирует эта коллаборация фич и глюков именуемая Clarion + Windows...
Я, в своё время, долго боролся при переходе.
Краткие итоги и правила
1. Если переменная используется в головной процедуре/потоке, то он НЕ должна иметь атрибут THREAD. И дело не в том, что эта операция лишена смысла, последствия могут быть самые разные, вплоть до вылета программы.
2. Использование CriticalSection в виде матрёшки, а тем более одной и той же, может привести к клинчу.
3. start лучше всего выполнять после открытия фрейма, если нет цели получить несколько независимых не знаю что. И ещё лучше не выполнять несколько start одновременно, если важен порядок выполнения. Что запустится раньше, а что позже, знает только генератор случайных чисел. Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
5. Глобальные Queue это, конечно, хорошо, но муторно. Разумнее использовать IMDD
Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Clarion 11-12
Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),Губин Игорь писал(а): ↑13 Сентябрь 2021, 11:47 Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
А разве должно ?Губин Игорь писал(а): ↑13 Сентябрь 2021, 11:47 4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
Атрибут Thread для файла говорит о том, что в каждом потоке у него будет отдельная копия буфера обмена (RECORD).
За теми кто отстал - не возвращаться. (С) Кодекс
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
Clarion 11-12
Я пробовал такой вариант, но возникали странные задержки. Потому-то и сделал шаблон в котором поток запускает следующий по своей готовности. Так никаких вариантов на то, что сработает не так.Игорь Столяров писал(а): ↑13 Сентябрь 2021, 13:29 Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
У меня требуется при старте приложения запуск потоков в строго определённом порядке.
Ну так было же. Да и почему-то файл то считается открытым, то - нет.
Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.
Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Clarion 11-12
Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.Губин Игорь писал(а): ↑13 Сентябрь 2021, 14:19 Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.
Т.е. речь о доступности файла во всех потоках, но не его открытости ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
Clarion 11-12
Проверял на варианте, когда в каждом потоке своё содержимое, т.е. формально, независимые файлы.Игорь Столяров писал(а): ↑13 Сентябрь 2021, 14:27 Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.
Да не важно сейчас всё это...
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Clarion 11-12
Кто-нибудь замечал, что подсветка синтаксиса в редакторе с11 не всегда корректно работает?
Например, contents() и context() выделяются одинаково, хотя второй инструкции вроде как в кларионе нет.
Например, contents() и context() выделяются одинаково, хотя второй инструкции вроде как в кларионе нет.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Clarion 11-12
Кстати, файлы с расширениями clw, inc, tpl, tpw и т.д. можно ассоциировать с clarion.exe и открывать прямо из проводника или из своего внутреннего софта для разработки. Открываются сразу в редакторе, а если среда уже запущена, то на новой закладке в редакторе. Если так пытаемся открыть уже открытый файл, то переключается на соответствующую закладку. Вроде все правильно происходит.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Clarion 11-12
Новый треш в C11.1.0.13758 который коснётся всех.
Покажу на штатном примере PEOPLE (исходник test.zip можно взять в TMP папке FTP форума)
1. Открываем MDI окно (я для наглядности немного увеличил). Потом ещё одно. Всё штатно.
2. Закрываем второе окно.
Первое сворачиваем и разворачиваем.
Ещё раз открываем второе окно - оно теперь открывается за первым.
3. И теперь так будет всегда.
Самое интересное, что карточки редактирования списка (FORM) тоже будут открываться на заднем фоне.
Можете проверить в своих программах.
Есть идеи, что это ?
Покажу на штатном примере PEOPLE (исходник test.zip можно взять в TMP папке FTP форума)
1. Открываем MDI окно (я для наглядности немного увеличил). Потом ещё одно. Всё штатно.
2. Закрываем второе окно.
Первое сворачиваем и разворачиваем.
Ещё раз открываем второе окно - оно теперь открывается за первым.
3. И теперь так будет всегда.
Самое интересное, что карточки редактирования списка (FORM) тоже будут открываться на заднем фоне.
Можете проверить в своих программах.
Есть идеи, что это ?
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Clarion 11-12
Да уж! Неприятная жесть. Самое интересное, что даже с одним окном такое поведение. Минимизация окна ломает счётчик тредов? Надо писать SV.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Clarion 11-12
Моя версия: окну присваивается атрибут TOOLBOX что бы вытянуть его наверх при развороте в AnyScreen
За теми кто отстал - не возвращаться. (С) Кодекс