Clarion 11-12

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
✯ Ветеран ✯
Сообщения: 1590
Зарегистрирован: 25 Март 2009, 21:55

Clarion 11-12

Сообщение gopstop2007 »

talgat55 писал(а): 12 Сентябрь 2021, 17:43 а как запускать в указанном случае ?
viewtopic.php?p=30219#p30219 смотрим пункт - Процедура проверки перед входом в программу.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
talgat55
Старожил
Сообщения: 204
Зарегистрирован: 11 Сентябрь 2008, 11:53

Clarion 11-12

Сообщение talgat55 »

ok
kreator
✯ Ветеран ✯
Сообщения: 4318
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion 11-12

Сообщение kreator »

Разве start создаёт новый процесс? Ненаучно.
We are hard at work… for you. :)
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1622
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Clarion 11-12

Сообщение Губин Игорь »

kreator писал(а): 13 Сентябрь 2021, 11:23 Разве start создаёт новый процесс? Ненаучно.
Вопрос в том, когда его использовать и как на это отреагирует эта коллаборация фич и глюков именуемая Clarion + Windows...

Я, в своё время, долго боролся при переходе.

Краткие итоги и правила
1. Если переменная используется в головной процедуре/потоке, то он НЕ должна иметь атрибут THREAD. И дело не в том, что эта операция лишена смысла, последствия могут быть самые разные, вплоть до вылета программы.
2. Использование CriticalSection в виде матрёшки, а тем более одной и той же, может привести к клинчу.
3. start лучше всего выполнять после открытия фрейма, если нет цели получить несколько независимых не знаю что. И ещё лучше не выполнять несколько start одновременно, если важен порядок выполнения. Что запустится раньше, а что позже, знает только генератор случайных чисел. Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
5. Глобальные Queue это, конечно, хорошо, но муторно. Разумнее использовать IMDD
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5578
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion 11-12

Сообщение Игорь Столяров »

Губин Игорь писал(а): 13 Сентябрь 2021, 11:47 Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
Губин Игорь писал(а): 13 Сентябрь 2021, 11:47 4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
А разве должно ?
Атрибут Thread для файла говорит о том, что в каждом потоке у него будет отдельная копия буфера обмена (RECORD).
«V» значит Вендетта !
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1622
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Clarion 11-12

Сообщение Губин Игорь »

Игорь Столяров писал(а): 13 Сентябрь 2021, 13:29 Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
Я пробовал такой вариант, но возникали странные задержки. Потому-то и сделал шаблон в котором поток запускает следующий по своей готовности. Так никаких вариантов на то, что сработает не так.

У меня требуется при старте приложения запуск потоков в строго определённом порядке.
Игорь Столяров писал(а): 13 Сентябрь 2021, 13:29 А разве должно ?
Ну так было же. Да и почему-то файл то считается открытым, то - нет.

Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5578
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion 11-12

Сообщение Игорь Столяров »

Губин Игорь писал(а): 13 Сентябрь 2021, 14:19 Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.
Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.
Т.е. речь о доступности файла во всех потоках, но не его открытости ...
«V» значит Вендетта !
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1622
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Clarion 11-12

Сообщение Губин Игорь »

Игорь Столяров писал(а): 13 Сентябрь 2021, 14:27 Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.
Проверял на варианте, когда в каждом потоке своё содержимое, т.е. формально, независимые файлы.

Да не важно сейчас всё это...
Это я только кажусь дураком! На самом деле я полный идиот!
talgat55
Старожил
Сообщения: 204
Зарегистрирован: 11 Сентябрь 2008, 11:53

Clarion 11-12

Сообщение talgat55 »

У меня проект multi dll ( с63- с11 ) - успешно заработал все ОК ! всем спасибо !
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 2905
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion 11-12

Сообщение finsoftrz »

Кто-нибудь замечал, что подсветка синтаксиса в редакторе с11 не всегда корректно работает?
Например, contents() и context() выделяются одинаково, хотя второй инструкции вроде как в кларионе нет.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 2905
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion 11-12

Сообщение finsoftrz »

Кстати, файлы с расширениями clw, inc, tpl, tpw и т.д. можно ассоциировать с clarion.exe и открывать прямо из проводника или из своего внутреннего софта для разработки. Открываются сразу в редакторе, а если среда уже запущена, то на новой закладке в редакторе. Если так пытаемся открыть уже открытый файл, то переключается на соответствующую закладку. Вроде все правильно происходит.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5578
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion 11-12

Сообщение Игорь Столяров »

Новый треш в C11.1.0.13758 который коснётся всех. :(
Покажу на штатном примере PEOPLE (исходник test.zip можно взять в TMP папке FTP форума)

1. Открываем MDI окно (я для наглядности немного увеличил). Потом ещё одно. Всё штатно.
1.jpg

2. Закрываем второе окно.
Первое сворачиваем и разворачиваем.
Ещё раз открываем второе окно - оно теперь открывается за первым. :(
2.jpg

3. И теперь так будет всегда.
Самое интересное, что карточки редактирования списка (FORM) тоже будут открываться на заднем фоне.

Можете проверить в своих программах.
Есть идеи, что это ?
«V» значит Вендетта !
kreator
✯ Ветеран ✯
Сообщения: 4318
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Clarion 11-12

Сообщение kreator »

Да уж! Неприятная жесть. Самое интересное, что даже с одним окном такое поведение. Минимизация окна ломает счётчик тредов? Надо писать SV.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5578
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

Clarion 11-12

Сообщение Игорь Столяров »

kreator писал(а): 29 Сентябрь 2021, 14:52 Минимизация окна ломает счётчик тредов
Моя версия: окну присваивается атрибут TOOLBOX что бы вытянуть его наверх при развороте в AnyScreen :(
«V» значит Вендетта !
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 2905
Зарегистрирован: 06 Ноябрь 2014, 12:48

Clarion 11-12

Сообщение finsoftrz »

В англоязычных группах обсуждалось, известный баг.
C6/C11, ШВС, tps/btrieve.
Ответить