Перейти к содержанию
Fire Monkey от А до Я

kami

Пользователи
  • Постов

    643
  • Зарегистрирован

  • Посещение

  • Победитель дней

    41

Весь контент kami

  1. Перевесило Главнокомандующий сказал, что 3 и 4 никак, посему - рассчитываем на 10.06.
  2. Так, если гора не идет к Магомету, то мы пойдем к горе. Взываю к @Brovin Yaroslav @RoschinSpb @Error Скажите свое веское слово, особенно - Ярослав, за которым еще и выбор места встречи
  3. Коллеги! Во флудильне в Телеграме Ярославом была озвучена великолепнейшая мысль - устроить сборище в начале июня в Питере. Возможные даты встречи (формат даты - dd.mm, всё - 2017 год): 03.06, 04.06, 10.06, 11.06. Предпочтительные даты выделены жирным. Прошу откликнуться, кто хочет и кто может присоединиться к встрече, уточнить предпочтительные для вас дату и время сбора. Место сбора по традиции выбирает Ярослав!
  4. Ну, создание - это еще пол беды. Основная беда - это запуск потока, переключение на него менеджером потоков. Кстати, судя по коду System.Threading - там как раз используется пул потоков. Они висят в ожидании "когда же нас озадачат" и после озадачивания - с радостным повизгиванием выполняют. Это к вопросу о
  5. А точно нужно дожидаться, пока все потоки отработают? Это не асинхронные задачи? В качестве еще одного варианта - воспользуйтесь interlocked-функциями. Главный поток определяет, сколько вторичных потоков он запустит. И выставляет нужное значение в integer-переменной. Каждый поток, завершив виток просчета вызывает InterlockedDecrement(ThreadCounter); При достижении нуля - из последнего вторичного потока вызывается TThread.Queue для сообщения главному потоку "все просчеты завершены". Ну и - потоки входят в спячку, например - на ожидании TEvent. А получив очередную порцию данных для просчета - выходят из ожидания события. Даже лучше не так: каждый поток при запуске делает InterlockedIncrement(ThreadCounter), не стоит главному потоку выставлять начальное значение, хватит с него и запуска вторичных потоков. А вот всё остальное - да, остается в силе.
  6. kami

    К знатокам SQL

    лень было писать полностью, первая часть там копи-паст приведенного мной
  7. kami

    К знатокам SQL

    AND ((FieldDate<=D2) OR (D2 IS NULL))
  8. определена. Начало потока + 6 байт + количество байт, ушедших в строку. Правильнее будет сделать mm.CopyFrom(InStream, InStream.Size - InStream.Position); , но не суть. А вот с путаницей байты-символы это да, это печалька.
  9. один из комментов, остальное мусор: I also experienced this exception. I had to delete two glowanimations and then it did not except anymore (which is not really a solution).
  10. В первую очередь - ошибка в месте вызова Log.d Где производится запись в лог? Правильно, в конструкторе компонента. А где выставляются позиция и габариты? Да, после завершения работы конструктора. Когда Log.D уже отработал.
  11. userSelectedRowIndex:=grid.Selected; Или использовать OnSelectCell, там Row и Col выбранной ячейки доступны напрямую. Всё, строка (возможно - и колонка) получены, дальше дело за вашим кодом.
  12. Этот глюк идет в делфи с незапамятных времен. Я выхожу из ситуации так: если что-то нужно подправить визуально: 1 меняю предка на TFrame. 2 сохраняю модуль, заново его открываю (теперь дизайнер будет работать нормально, но естественно - не скомпилируется). 3 кидаю все что нужно на фрейм, настраиваю свойства и события 4 сохраняю 5 меняю предка опять на нужного и работаю с кодом (теперь компилироваться будет, но дизайнер опять недоступен). Иногда получается после п.2 выполнить 5 и дизайнер продолжает быть доступным. До закрытия вкладки с модулем.
  13. Вы слишком категоричны. 90% глюков, на которые разработчик отвечает "ну у меня же работает" все-таки связаны с недочетами в коде. Да, в этом недочете принимает участие конфигурация оборудования, установленного ПО, объема ОЗУ и т.д. и т.п. Но именно Вам придется "обходить" эту ситуацию, а не пользователю - менять конфигурацию. И стартом в этом направлении могут послужить рекомендации ENRGY.
  14. Нормативная документация (устав, цели, программа) Актуальные вопросы на предстоящую повестку дня на какой-нибудь сессии Обращения от граждан (хотя они гораздо чаще идут на конкретного представителя) "Внутреннее" голосование по какому-нибудь разрабатываемому документу / согласование уполномоченными должностными лицами А вообще - лучше всего уточнить у заказчика. Не "какой функционал должен быть у приложения" , "дайте ТЗ", а "давайте вместе подумаем / пофантазируем - вот у нас есть мобильное приложение. И мы будем его использовать для / чтобы ...". Причем это лучше делать не в письменной форме, а при личной встрече (при наличии такой возможности).
  15. Видимо, они были не универсальны, а расширяемы. То есть - заточены под текущую задачу с большим заделом "на будущее". Справедливости ради надо сказать, что у меня тоже http-обмен всегда затачивался под конкретную задачу, без использования чего-то универсализированного. В отличие от некоторых других областей.
  16. Комбобокс отсылает сообщение о создании своего окна выпадающего списка.
  17. А оно и будет хорошо до тех пор, пока хендл формы не пересоздастся.
  18. просто закомментировать пересоздание нативного браузера - не самая хорошая идея. Иногда оно действительно необходимо.
  19. LibraryPath для выбранной платформы в норме?
  20. а это не дедлок. Это, грубо говоря, while true do sleep(maxint); т.е просто засыпаем текущий поток, не влияя при этом на остальные. Дедлок - это когда один поток ждет реакции от другого потока, который ждет реакции от первого потока. Возможно - даже через третьи, четвертые... руки. Получается кольцо ожидания. В приведенном примере никакой зависимости от другого потока, у которого зависимость от этого потока - нет.
  21. не-а. В пределах одного потока можно хоть MaxInt раз входить в критическую секцию, ничего от этого не замерзнет. А вот CS.Enter; myThread.Start; // и внутри execute тоже CS.Enter myThread.WaitFor; Главный поток вошел в критическую секцию, запустил доп.поток и ожидает, пока тот завершится (надуманный пример, не надо делать поток ради делания потока). Доп.поток тоже вошел в критическую секцию и оказался заблокирован, потому что главный поток уже занял ее "под себя". Итого - главный поток висит, ожидая пока завершится доп., а доп.висит, ожидая пока освободится секция.
×
×
  • Создать...