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

Камышев Александр

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

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

  • Посещение

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

    9

Камышев Александр стал победителем дня 2 августа 2018

Камышев Александр имел наиболее популярный контент!

Информация о Камышев Александр

  • День рождения 02.12.1978

Информация

  • Пол
    Мужчина
  • Город
    Москва, Троицк

Посетители профиля

5 354 просмотра профиля

Достижения Камышев Александр

  1. Задача поднять старый (теплый ламповый) проект CBuilder 6 под Виндовс в RAD Studio. Просто открыл файл проекта, практически все подтянулось с небольшими изменениями в путях include. Кроме TClientSocket, нет такого визуального компонента. Компонента нет, но библиотеки в RAD Studio оставили. Подключил #include <ScktComp.hpp>, создал динамически TClientSocket, определил события - проект поднялся малой кровью. #include <ScktComp.hpp> TClientSocket *сlient = new TClientSocket(NULL); сlient->OnConnect = ClientConnect; сlient->OnDisconnect = ClientDisconnect; сlient->OnError = ClientError; сlient->OnRead = ClientRead; Аналогично можно пользоваться TServerSocket. Может кому пригодится.
  2. В дельфи не силен, нечего и начинать. Под никсы, по взрослому, нужен GCC, QT Creator и https://github.com/eclipse/paho.mqtt.embedded-c или https://github.com/eclipse/paho.mqtt.cpp. Если сильно хочется VCL, можно под CBuilder собрать.
  3. Сдаюсь, кто их знает чего там в исходниках. На винде хэндл закрыть, на unix pthread_cancel выводит из операции ввода-вывода или sleep в pthread. TIdHTTP или TNetHTTPclient? IdHTTP1->Socket->Close() - не поможет?
  4. Это описание Модель-Вид-Контроллер, куда уже передовее... LiveBinding может быть неплох для студентов, но лучше уже сразу по взрослому.
  5. Если поток висит на методе Read - разорвать TCP сессию, Read вернет ошибку и поток можно завершить корректно.
  6. Хотел обновить приложение, Google Play Console выдала, что по новым правилам, раз уж я пользуюсь сервисом dialer, то, следовательно, имею доступ к личным данным. В этой связи нужно уведомить пользователя о моих намерениях, т.е. изложить их в Политике конфиденциальности, выложить документ в общий доступ и дать ссылку на него в Google Play и в меню приложения. Вопрос, как по клику вызвать браузер и дать ему ссылку, аналог ShellExecute в виндовс?
  7. Как все запущено... deploy означает разместить на мобильном устройстве, изменения будут в файле на телефоне или планшете. Посмотреть изменения можно или из программы, запросить 'select * from Tab_Parol', либо любой прогой из googleplay которая работает с sqlite. Хотя нет, internal сторонними программами не посмотришь, надо из своей контролить.
  8. Визуальные компоненты портят начинающих программеров... Query_Parol - это что? DBTable? Тексты запросов в студию. и транслитерация - плохой тон, почему бы не tbPassword?
  9. Как подключить #include "boost/unordered_map.hpp"? В примерах Samples\CPP\RTL\BoostArchiveDemo\ есть #include "boost/archive/text_iarchive.hpp". Однако: "[bccaarm Fatal Error] Unit1.cpp(40): 'boost/archive/text_iarchive.hpp' file not found" под андроид; "[bcc32 Error] Unit1.cpp(40): E2209 Unable to open include file 'boost/archive/text_iarchive.hpp'" под виндовс. Ну и вдогонку, какой стандарт С++ поддерживают компиляторы RAD Studio Seattle, Berlin.
  10. это и есть одна из реализаций пула потоков, смысл не создавать и уничтожать под каждую задачу поток, сразу создать несколько и использовать их многократно.
  11. имхо, с firemonkey неплохо работает такая схема: 1. создать две потокозащищенные очереди (структуры), на си для этого подходит std::deque, в fmx можно TList. Защита стандартно TCriticalSection; 2. создать несколько потоков, с помощью TEvent указать им ссылки на очереди и критические секции; 3. в потоках: 3.1 TCriticalSection::Enter лочим очередь задач, 3.2 забираем крайнюю задачу 3.3 TCriticalSection::Leave отпускаем очередь задач 3.4 вычисления 3.5 по аналогии с очередью задач лочим очередь результатов, выкладываем результаты, отпускаем 3.6 повтор с пункта 3.1 4. в основном потоке в очереди (тоже lock unlock) выкладывать задачи и при наличии результатов отрисовывать имеющимися средствами. в 4 пункте нужен будет нужен будет какой-нибудь mmtimer.
  12. while(1) Sleep(INT_MAX) - это грубо, но можно еще брутальней: while(1){} если так принципиально, для успокоения, можно создать еще поток, передать ему ссылку на event, добавить код event->SetEvent() и не запуская на выполнение уйти в WaitFor, тогда все в порядке: два потока, оба ждут.
  13. мдя согласен, счетчик только увеличивается тогда еще проще: TSimpleEvent *event = new TSimpleEvent(NULL); event->WaitFor( INFINITE ); замри
  14. по разному... как обезьяна с гранатой, куда швырнет, варианты от ничего и вплоть до краша
×
×
  • Создать...