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

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

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

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

  • Посещение

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

    9

Весь контент Камышев Александр

  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. по разному... как обезьяна с гранатой, куда швырнет, варианты от ничего и вплоть до краша
  15. deadlock? - легко: TCriticalSection *cs = new TCriticalSection(); cs->Enter(); cs->Enter();
  16. Unix то да, только до сих пор это были java приложения для виртуальной машины, теперь можно создавать исполняемые ELF файлы консольных приложений и библиотеки под unix. выше было видео, создание Apache dynamic link module, вот здесь c 45 минуты:
  17. The RAD Studio IDE now includes its first LLVM based Linux compiler for Enterprise development, enabling Delphi developers to target 64-bit Intel Linux servers and devices. The Linux compiler is certified for Ubuntu Server (LTS 16.04) and RedHat Enterprise (V7) and is built on top of the LLVM engine Они что, правда сделали компилятор под unix исходников на паскале? Или еще один переход си <-> паскаль? Насколько мне известно, модули для apache до сих пор собирали и устанавливали с помощью apxs / apxs2, apxs в свою очередь работает с исходниками на Си, объектными файлами *.o и статическими библиотеками *.a. И как все это хозяйство привязали к паскалю? Что-то, воля ваша, недоброе таится© в написании кода на си, который использует компоненты написанные на паскале, которые собираются компилятором(написанным видимо на си) в объектники и библиотеки, которые затем будут собраны в модули для демона написанного на си..., доколе? При этом, нет поддержки линукс-сервер для borland си... все, абзац.
  18. Полная ерунда - весомый довод... Сохранить то utf-8 можно, компилер среды BCCAARM.EXE, the C++ Compiler for Android все равно будет с ними работать как с asci, и также не поймет кириллицу, если ему, как писали выше, если не указать принудительно. А вот BCC32, the C++ Command-Line Compiler все считает корректно.
  19. Это все делает TLang стандартный, зачем переписывать доступные стандартные компоненты?
  20. Если строки в языковых файлах - зачем RTTI, что к чему безопасно runtime приводить? Почему бы Embarcadero не работать сразу с unicode, стандартно UTF-8(16)? RAD Studio работает с исходниками на Ansi, а компилятор не распознает кириллицу в этих исходных файлах, приведение: case 0: return (AnsiString)"Ожидание"; сделано как попытка объяснить компилятору, что это кириллица. Правильный подход (имхо опять же) - среде нужно сразу работать с unicode, и не извращаться потом с приведением типов.
  21. На Seattle это работает, не знаю уж как там преобразование в Android API, в Berlin уже нет. Приложение под Андроид оставил в Seattle и больше не заморачивался пока. Сейчас пишу демон TCP сервера на с++ под CentOs в среде NetBeans, там строки языка Ansi С и стандартные строки std::string из C++. Отображение строк только в логах либо в браузере и проблем с кириллицей нет.
  22. Некорректно выразился, на андроид не работает связка FireDac + MySQL, т.к. используется libmysql.dll, с sqLite все вроде ок.
  23. мдя, чудес не бывает, в базе и близко нет 3к записей в секунду, из-за ошибки с флагом наложение данных и до записи доходит процентов 10-20, потому и ресурсов мало потребляет.
  24. статистика: запросов задач в сек. 3000 подтверждений в сек. 0 параметры файлов в сек. 0 запросов данных в сек. 0 запросов клиента в сек. 0 время запроса, мсек. 156 активных соединений с бд 10 из 10 запросов в бд в сек. 3000 размер очереди в бд 1365 из 5000 время запроса к бд, мсек. 31 устройства 2490 профили 139 задачи 51 файлов доступно 11 db_client 0 запросов в сек. 300 db_client 1 запросов в сек. 302 db_client 2 запросов в сек. 300 db_client 3 запросов в сек. 300 db_client 4 запросов в сек. 301 db_client 5 запросов в сек. 300 db_client 6 запросов в сек. 300 db_client 7 запросов в сек. 298 db_client 8 запросов в сек. 299 db_client 9 запросов в сек. 300
×
×
  • Создать...