Страница 72 из 157

Clarion 11-12

Добавлено: 12 Сентябрь 2021, 16:35
kreator
Дед Пахом писал(а): 12 Сентябрь 2021, 15:20
talgat55 писал(а): 12 Сентябрь 2021, 5:33 Exception code C0000005: Access Violation
Эта ошибка обычно говорит о том, что не та dll вызывается.
Прикольно. Вроде хотел без dll собрать, с одним exe-шником.

Clarion 11-12

Добавлено: 12 Сентябрь 2021, 17:08
talgat55
про вызовы w1 w2 ( см.выше ) Запускаю main в w2 через start ( main,2400 ) - тишина. Вызываю просто main - запускается, но в диспетчере как будто 2 раза запущенный exe ( приложение.exe(2) ) ??

Clarion 11-12

Добавлено: 12 Сентябрь 2021, 17:40
kreator
2400 наверно маловато. Нужно 25000 или 35000. Да и вообще непонятно зачем запускать через start. Start для запуска внутри фрейма.

Clarion 11-12

Добавлено: 12 Сентябрь 2021, 17:43
talgat55
а как запускать в указанном случае ?

Clarion 11-12

Добавлено: 12 Сентябрь 2021, 17:55
kreator
talgat55 писал(а): 12 Сентябрь 2021, 17:43 а как запускать в указанном случае ?
Мне непонятно как у Вас организована программа. Вызывать фрейм надо без start'а. У меня программа может быть устроена похоже как у Вас. Сначала в source процедуре считываются настройки коннекта к серверу, коннектится к нему, вызывается диалоговое окно с приглашением пользователя и выбором модуля ("Бухгалтерия", "Торговля", ...). И вызывается конкретный фрейм, без start'а. Вот так, банально:

Код: Выделить всё

   case GLO:ProgramName
     of 'Торговля'
                           MainTrade
     of 'Бухгалтерия'
                           MainAcc
     of 'Производство'
                           MainProd
     of 'Зарплата и Кадры'
                           MainStaff
     ...                      

Clarion 11-12

Добавлено: 12 Сентябрь 2021, 17:55
Игорь Столяров
A не проще будет запустить Main (AppFrame) и в нём сделать вызов процедур для получения настроек ?
Например до OpenFiles. Без всяких Start() - здесь не нужны потоки.

Clarion 11-12

Добавлено: 12 Сентябрь 2021, 18:42
kreator
Да, есть вот такой вариант. Во фрейме, до "Open Files":

Код: Выделить всё

if PAROL(2)
  return Level:Cancel
end 

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 6:18
talgat55
я расписарил выше - w1 вызывает w2 вызывает main - все это прекрасно работает в с63 (abc mssql) уже с десяток лет
в с11 эта схема не будет работать получается ?
И еще в main у меня уже объявлены в схеме таблиц несколько MSSQL таблиц. Где эта embed перед open files - чтоб я мог впихнуть пути к этим таблицам ?

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 6:54
Игорь Столяров
talgat55 писал(а): 13 Сентябрь 2021, 6:18 эта схема не будет работать получается
Абсолютно точно могу Вам сказать, что C11 - это не C63.
Нет смысла жаловаться, что там работало, а тут не работает.
Тем более, что Вы пропустили развитие и изменения в С7-С10.

Ну и в любой схеме работы должен быть некий здравый смысл, наверное ... ;)

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 7:08
talgat55
А чего "нездравого" в схеме - w1 - connect для sql server - вызывает w2 со списком пользователей (mssql tabl ) - затем запускается main с sql tabl у которого перед openwindow hide- ятся те или иные пункты меню в menubar и buton-ы в toolbar-е в зависимости от прав каждого пользователя
?

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 7:24
Игорь Столяров
talgat55 писал(а): 13 Сентябрь 2021, 7:08 А чего "нездравого" в схеме
Всё предельно круто. 8) Но зачем в этих запусках используется запуск потока Start() ?
Если позволите, я процитирую кусочек описания из справки:
Выполнение кода в последовательности запуска немедленно продлевается следующим за START выражением и длится, пока выражение ACCEPT не будет выполнено.
Т.е. грубо говоря: Вы даёте команду на запуск потока и сразу завершаете работу приложения.
Здесь начинается игра "кто быстрей". В C63 быстрей запускался поток и блокировал завершение приложения.
Видимо в C11 поток инициализируется дольше и на момент его запуска приложение уже успело завершиться. :(

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 8:50
talgat55
убрал я start в w1 и w2 запускаю просто w2 и main . Проблемы остаются

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 8:56
Игорь Столяров
talgat55 писал(а): 13 Сентябрь 2021, 8:50 запускаю просто w2 и main
Поставьте какой-нибудь Message('Сейчас запустим MAIN !') перед запуском MAIN.
И Message('Запустили MAIN !') внутри MAIN, что бы понять где именно у Вас происходит несчастье.

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 9:13
kreator
talgat55 писал(а): 13 Сентябрь 2021, 6:18 Где эта embed перед open files - чтоб я мог впихнуть пути к этим таблицам ?
Если что, то это метод Init WindowManager'а. На самом деле проблема может быть в другом. Может приведёте код, который не работает? Я, например, не понимаю как всё организовано.

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 9:24
talgat55
Приложение запускается без проблем. Но в процессах как будто дублируется - загружено Имя.exe(3) Окна w1 w2 не закрываются - не срабатывает команда close(window) - из-за них похоже exe(3) В открывшемся приложении при закрытии некоторых окон - зависает все