Вверх ↑
Этот топик читают: Гость
Ответов: 1173
Рейтинг: 49
#1: 2012-05-26 22:15:05 ЛС | профиль | цитата
Заметил неприятную особенность у компонента DirectoryChanges - если компилировать под FPC, то при закрытии программы вылазит RuntimeError, хотя сам DC прекрасно работает. Костыли в виде таймеров и DoData не помогают. Искал и в Google, и на форуме, но нашёл только про проблемы с кириллицей. Ошибка наблюдается даже в стандартных примерах, но на всякий случай:
code_28002.txt
Может, что-нибудь поможет? Не хочется сменять компилятор из-за такой мелочи.

Завершение процесса программы - не решение, конечно, но всё же:

Add(MainForm,132659,35,105)
{
Point(onClose)
link(onCreate,13792580:doStartWatch,[(156,125)(156,111)])
link(onClose,15164235:doEvent1,[(79,132)(79,139)])
}
Add(DirectoryChanges,13792580,245,105)
{
DirName="C:"
Flags=1
link(onChange,16385553:doMessage,[])
}
Add(Hub,15164235,91,133)
{
link(onEvent1,6585955:doFindName,[(133,139)(133,160)])
link(onEvent2,6585955:doKill,[(133,146)(133,153)])
}
Add(EnumProcess,6585955,161,133)
{
Name="project2.exe"
Point(doFindName)
}
Add(Message,16385553,301,105)
{
}
Частично решено:
nesco писал(а):
Заблокировал остановку поиска в деструкторе под FPC (ту же хрень я уже делал в таймере). Обновление на SVN.

Нужно запускать DC перед закрытием программы, иначе RE.
карма: 0

0
файлы: 1code_28002.txt [170B] [391]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2012-05-26 23:03:44 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-24 08:59:24
карма: 0

0
Ответов: 1821
Рейтинг: 168
#3: 2012-05-26 23:21:42 ЛС | профиль | цитата
г. 333, у меня получилось
карма: 5

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#4: 2012-05-26 23:39:33 ЛС | профиль | цитата
Ex_ писал(а):
Не хочется сменять компилятор из-за такой мелочи

Если делаешь не на продажу, то сменить компилятор -- это самое необходимое, что надо сделать в первую очередь
карма: 22

0
Ответов: 1173
Рейтинг: 49
#5: 2012-05-27 02:04:04 ЛС | профиль | цитата
nesco, просто подумал, что для простой программки и FPC сойдёт.
------------ Дoбавленo в 01.27:
г. 333 писал(а):
не как не могу получить RuntimeError
[flood]фокусник, однако [/flood]
------------ Дoбавленo в 02.04:
[offtop]Странно, сейчас в другой схеме, при наличии DC действует вообще рандомно - то выдаёт ошибку, то нет [/offtop]
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#6: 2012-05-27 02:41:58 ЛС | профиль | цитата
Это проблема работы созданного внутреннего системного потока из-под FPC. Лучше всего перейти на другой компилятор. Избавиться от этой ошибки в FPC просто так не получится
------------ Дoбавленo в 02.41:
Заблокировал остановку поиска в деструкторе под FPC (ту же хрень я уже делал в таймере). Обновление на SVN.
Остановку под FPC надо будет делать по onClose формы самому при выходе (только для FPC, для дельфей необязательно, там остановка работает при уничтожении экземпляра класса)
карма: 22

0
Ответов: 1173
Рейтинг: 49
#7: 2012-05-27 03:18:00 ЛС | профиль | цитата
О! Вроде пропала ошибка
nesco, ты наверное хотел сказать, что запуск
nesco писал(а):
под FPC надо будет делать по onClose формы самому при выходе

Иначе (если мониторинг остановлен) по-прежнему вылазит RE, но это лучше, чем было - спасибо, -1 к количеству костылей в программе
[flood]FPC такой FPC[/flood]
------------ Дoбавленo в 03.18:
nesco, [flood]поставил бы плюсик, но лимит не позволяет [/flood]
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#8: 2012-05-27 03:40:25 ЛС | профиль | цитата
Ex_ писал(а):
ты наверное хотел сказать, что запуск

Нет, именно автоостановка по выходу из программы отключена под FPC в этом компоненте
------------ Дoбавленo в 03.40:
Ex_ писал(а):
Иначе (если мониторинг остановлен) по-прежнему вылазит RE, но это лучше, чем было

Ага, надо глянуть еще
карма: 22

0
Ответов: 1173
Рейтинг: 49
#9: 2012-05-27 03:45:16 ЛС | профиль | цитата
nesco писал(а):
автоостановка по выходу из программы отключена под FPC в этом компоненте

Это я понял, я про то, что при остановке мониторинга и последующем закрытии программы (в т.ч. при присоединении к onClose)
Ex_ писал(а):
по-прежнему вылазит RE

code_28004.txt
Другое дело, что теперь есть возможность повесить на onClose запуск мониторинга и избежать RE:
code_28005.txt
карма: 0

0
файлы: 2code_28004.txt [240B] [389], code_28005.txt [412B] [414]
Разработчик
Ответов: 26151
Рейтинг: 2127
#10: 2012-05-27 04:30:26 ЛС | профиль | цитата
От это траблы ни черта не помогает. Че я только там не юзал
Ex_ писал(а):
Другое дело, что теперь есть возможность повесить на onClose запуск мониторинга и избежать RE

Оригинальный выход из положения
карма: 22

0
Ответов: 1173
Рейтинг: 49
#11: 2012-05-27 04:33:36 ЛС | профиль | цитата
nesco писал(а):
Оригинальный выход из положения
ну, это, по крайней мере, более гуманно, нежели убивать программу doKill'ом
карма: 0

0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)