Судя по исходному коду, при создании новой метки она сразу же добавляется и в кеш после чего метка становится видна на интерфейсе:
// add view to db
CheckID( FClient.Add(VSQLMarkView, True) );
...
// add view to cache
FCache.FMarkViewCache.AddOrUpdate(AMarkRec);
В моем случае добавление в кеш происходит только при перезапуске.
ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
Модератор: Tolik
-
huntingbees
- Новичок
- Сообщения: 5
- Зарегистрирован: 18 авг 2017, 14:50
- DJ VK
- Гуру
- Сообщения: 1468
- Зарегистрирован: 16 апр 2009, 13:57
- Откуда: 8 км. от МКАД
- Благодарил (а): 80 раз
- Поблагодарили: 314 раз
Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
что, в принципе, логично.
Создав метку мы знаем, что база меток поменялась. Ну и на это действие совершаем операцию.
Все что происходит за пределами программы - черный ящик, неизвестность, мусор, от этого практически любая вполне нормальная программа абстрагирована.
Так, например, вспомогательные файлы программы. Любые изменения файла (давайте для образца возьмем файл настроек) вручную программа не воспринимает без особой на то необходимости. Вот как только происходит обращение к этому файлу, вызванное действиями в самой прграмме (чтение или запись) - тогда пожалуйста, и то не факт. Скажем сброс настроек или отмена последней операции не обязательно приведут программу к необходимости чтения подправленного файла.
Иное дело, съемный диск. Как его вынули или всунули - операционка сама рассылает программам сообщение, его можно поймать.
Есть довольно специфическое поведение в некоторых редакторах файлов, когда он чувствителен к изменению файла. И прошу заметить, что он никто не монитрит по таймеру ежесекундно, взбрело ли там кому-то вручную рыться в настройках при запущенной программе, - это абсолютно девиантное поведение с точки зрения запущенной программы (Не изволите ли перезапустить). Так вот в этих редакторах мониторится потеря активации окна приложения и повторная активация (фокус) приложения. Именно в этот момент эти некоторые программы делают проверку, и пишут, что открытый файл поменялся на диске, надо ли переоткрыть?
Резюмируя сказанное. Теоретически можно поддержать то, что вы хотите. Но это весьма специфичное поведение. База должна писать в себя все изменения в реальном времени, а клиент, который не опрашивает её на предмет постоянного наличия изменений - ничего не должен.
Для вашего пожелания создавайте хотелку, просите функцию проверки базы меток, и ждите ее выполнения (от нуля до бесконечности лет)
Пути два.
1) простая кнопка "перечитать метки".
2) проверка обновлений файлов меток при активации основного окна программы.
Создав метку мы знаем, что база меток поменялась. Ну и на это действие совершаем операцию.
Все что происходит за пределами программы - черный ящик, неизвестность, мусор, от этого практически любая вполне нормальная программа абстрагирована.
Так, например, вспомогательные файлы программы. Любые изменения файла (давайте для образца возьмем файл настроек) вручную программа не воспринимает без особой на то необходимости. Вот как только происходит обращение к этому файлу, вызванное действиями в самой прграмме (чтение или запись) - тогда пожалуйста, и то не факт. Скажем сброс настроек или отмена последней операции не обязательно приведут программу к необходимости чтения подправленного файла.
Иное дело, съемный диск. Как его вынули или всунули - операционка сама рассылает программам сообщение, его можно поймать.
Есть довольно специфическое поведение в некоторых редакторах файлов, когда он чувствителен к изменению файла. И прошу заметить, что он никто не монитрит по таймеру ежесекундно, взбрело ли там кому-то вручную рыться в настройках при запущенной программе, - это абсолютно девиантное поведение с точки зрения запущенной программы (Не изволите ли перезапустить). Так вот в этих редакторах мониторится потеря активации окна приложения и повторная активация (фокус) приложения. Именно в этот момент эти некоторые программы делают проверку, и пишут, что открытый файл поменялся на диске, надо ли переоткрыть?
Резюмируя сказанное. Теоретически можно поддержать то, что вы хотите. Но это весьма специфичное поведение. База должна писать в себя все изменения в реальном времени, а клиент, который не опрашивает её на предмет постоянного наличия изменений - ничего не должен.
Для вашего пожелания создавайте хотелку, просите функцию проверки базы меток, и ждите ее выполнения (от нуля до бесконечности лет)
Пути два.
1) простая кнопка "перечитать метки".
2) проверка обновлений файлов меток при активации основного окна программы.
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
Еще один путь - не лезть грязными руками в базу SQLite открытую САС.Планетой в монопольном режиме. Теоретически она вообще не должна была открыться. Лучше пользоваться возможностями самой программы по изменению меток через отправку оконных сообщений.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
-
huntingbees
- Новичок
- Сообщения: 5
- Зарегистрирован: 18 авг 2017, 14:50
Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
Оконные сообщения это громоздно и ненадежно, идеально было бы иметь какой-нибудь публичный API для работы с метками О:-)
Спасибо больше за ответы!
Спасибо больше за ответы!
- DJ VK
- Гуру
- Сообщения: 1468
- Зарегистрирован: 16 апр 2009, 13:57
- Откуда: 8 км. от МКАД
- Благодарил (а): 80 раз
- Поблагодарили: 314 раз
Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
а "с нуля" созвать публичный API для сотен функций не проще вашей каждая - не громоздко?huntingbees писал(а):Оконные сообщения это громоздно и ненадежно, идеально было бы иметь какой-нибудь публичный API для работы с метками О:-)
Редко какая визуальная программа с окнами имеет некие dll функции для вызова параллельно с ее запуском. Командная строка + визуалка - это VLC плеер получится или mkvtoolnix. И такой же неуклюжий код с тысячей ключей(ни то, ни се).
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
Куда уж надежнее? Это и есть АПИ. Посылаете WM_COPYDATA с нужной командой и все. http://www.sasgis.org/mantis/view.php?id=2521huntingbees писал(а):Оконные сообщения это громоздно и ненадежно, идеально было бы иметь какой-нибудь публичный API для работы с метками О:-)
Набор комманд ограничен, но если что присылайте пул-реквест.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
-
huntingbees
- Новичок
- Сообщения: 5
- Зарегистрирован: 18 авг 2017, 14:50
Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
А как самому такой экзешник собрать из сорсов? Или тот, что в аттаче подойдет?vdemidov писал(а):Куда уж надежнее? Это и есть АПИ. Посылаете WM_COPYDATA с нужной командой и все. http://www.sasgis.org/mantis/view.php?id=2521huntingbees писал(а):Оконные сообщения это громоздно и ненадежно, идеально было бы иметь какой-нибудь публичный API для работы с метками О:-)
Набор комманд ограничен, но если что присылайте пул-реквест.
- DJ VK
- Гуру
- Сообщения: 1468
- Зарегистрирован: 16 апр 2009, 13:57
- Откуда: 8 км. от МКАД
- Благодарил (а): 80 раз
- Поблагодарили: 314 раз
Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ
А я думал нет api. Можно узнать, какие команды уже есть в api?vdemidov писал(а):Это и есть АПИ. Посылаете WM_COPYDATA с нужной командой и все. http://www.sasgis.org/mantis/view.php?id=2521
Набор комманд ограничен, но если что присылайте пул-реквест.
huntingbees писал(а): А как самому такой экзешник собрать из сорсов? Или тот, что в аттаче подойдет?
Если реализовано, значит в ночнушке последней уже есть. Скорее всего, и в релизе, раз давно реализовано. Уже прямо в программе есть, не надо её делать заново. Просто пользуйся и все.Состояние отработан
Решение решен
Сетка покрытия планшетами М1:2000, М1:500
Здравствуйте, уважаемые разработчики и продвинутые юзеры.
Сначала - great thanks всем, кто участвовал в разработке этого замечательного проекта, я впечатлен.
По делу:
Скажите, плиз, существует ли возможность наложить на карту сетку границ геодезических планшетов М1:2000 и/или М1:500. Ну, на худой конец хотя бы сетку пятитысячников? Разумеется, с последующей загрузкой/склейкой обычными штатными средствами проекта вместе с этой сеткой?
Если такая возможность есть, то где она и куда "потыкать"? Я сам не нашел.
Я не сомневаюсь, что такой функционал крайне востребован всеми, кто так или иначе занимается "инженеркой", не верю, что я "один такой умный" )))
Заранее благодарю всех неравнодушных к моей смешной проблеме!
Сначала - great thanks всем, кто участвовал в разработке этого замечательного проекта, я впечатлен.
По делу:
Скажите, плиз, существует ли возможность наложить на карту сетку границ геодезических планшетов М1:2000 и/или М1:500. Ну, на худой конец хотя бы сетку пятитысячников? Разумеется, с последующей загрузкой/склейкой обычными штатными средствами проекта вместе с этой сеткой?
Если такая возможность есть, то где она и куда "потыкать"? Я сам не нашел.
Я не сомневаюсь, что такой функционал крайне востребован всеми, кто так или иначе занимается "инженеркой", не верю, что я "один такой умный" )))
Заранее благодарю всех неравнодушных к моей смешной проблеме!
Re: Сетка покрытия планшетами М1:2000, М1:500
Зачем тыкать?Daddy писал(а):Здравствуйте, уважаемые разработчики и продвинутые юзеры.
Сначала - great thanks всем, кто участвовал в разработке этого замечательного проекта, я впечатлен.
По делу:
Скажите, плиз, существует ли возможность наложить на карту сетку границ геодезических планшетов М1:2000 и/или М1:500. Ну, на худой конец хотя бы сетку пятитысячников? Разумеется, с последующей загрузкой/склейкой обычными штатными средствами проекта вместе с этой сеткой?
Если такая возможность есть, то где она и куда "потыкать"? Я сам не нашел.
Я не сомневаюсь, что такой функционал крайне востребован всеми, кто так или иначе занимается "инженеркой", не верю, что я "один такой умный" )))
Заранее благодарю всех неравнодушных к моей смешной проблеме!