-
Постов
235 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Сообщения, опубликованные Камышев Александр
-
-
В дельфи не силен, нечего и начинать.
Под никсы, по взрослому, нужен GCC, QT Creator и https://github.com/eclipse/paho.mqtt.embedded-c или https://github.com/eclipse/paho.mqtt.cpp.
Если сильно хочется VCL, можно под CBuilder собрать.
-
1 час назад, kami сказал:
А как? Ну, на винде в теории можно из другого потока закрыть хендл соединения (если используемый для сетевого обмена компонент дает возможность получить хендл).
А вот кроссплатформенный штатный HTTPClient -???
Сдаюсь, кто их знает чего там в исходниках.
На винде хэндл закрыть, на unix pthread_cancel выводит из операции ввода-вывода или sleep в pthread.
TIdHTTP или TNetHTTPclient?
IdHTTP1->Socket->Close() - не поможет?
-
16 часов назад, krapotkin сказал:
Мне при разработке всегда было приятнее иметь железобетонные технологии, даже если они не самые передовые.
Так что модель данных это гораздо лучше прямой работы с датасетом
Это описание Модель-Вид-Контроллер, куда уже передовее... LiveBinding может быть неплох для студентов, но лучше уже сразу по взрослому.
-
Если поток висит на методе Read - разорвать TCP сессию, Read вернет ошибку и поток можно завершить корректно.
-
-
Хотел обновить приложение, Google Play Console выдала, что по новым правилам, раз уж я пользуюсь сервисом dialer, то, следовательно, имею доступ к личным данным. В этой связи нужно уведомить пользователя о моих намерениях, т.е. изложить их в Политике конфиденциальности, выложить документ в общий доступ и дать ссылку на него в Google Play и в меню приложения.
Вопрос, как по клику вызвать браузер и дать ему ссылку, аналог ShellExecute в виндовс?
-
Как все запущено... deploy означает разместить на мобильном устройстве, изменения будут в файле на телефоне или планшете.
Посмотреть изменения можно или из программы, запросить 'select * from Tab_Parol', либо любой прогой из googleplay которая работает с sqlite.
Хотя нет, internal сторонними программами не посмотришь, надо из своей контролить.
-
Визуальные компоненты портят начинающих программеров...
Query_Parol - это что? DBTable? Тексты запросов в студию.
и транслитерация - плохой тон, почему бы не tbPassword?
-
Как подключить #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.
-
13 часа назад, Alex7wrt сказал:
Спасибо. А где можно почитать, как его использовать?
это и есть одна из реализаций пула потоков, смысл не создавать и уничтожать под каждую задачу поток, сразу создать несколько и использовать их многократно.
-
имхо, с 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.
-
18 часов назад, kami сказал:
а это не дедлок. Это, грубо говоря,
while true do sleep(maxint);
т.е просто засыпаем текущий поток, не влияя при этом на остальные.
Дедлок - это когда один поток ждет реакции от другого потока, который ждет реакции от первого потока. Возможно - даже через третьи, четвертые... руки. Получается кольцо ожидания. В приведенном примере никакой зависимости от другого потока, у которого зависимость от этого потока - нет.
while(1) Sleep(INT_MAX)
- это грубо, но можно еще брутальней:
while(1){}
если так принципиально, для успокоения, можно создать еще поток, передать ему ссылку на event, добавить код
event->SetEvent()
и не запуская на выполнение уйти в WaitFor, тогда все в порядке: два потока, оба ждут.
-
19 часов назад, kami сказал:
В пределах одного потока можно хоть MaxInt раз входить в критическую секцию, ничего от этого не замерзнет.
мдя согласен, счетчик только увеличивается
тогда еще проще:
TSimpleEvent *event = new TSimpleEvent(NULL); event->WaitFor( INFINITE );
замри
-
2 часа назад, Winexcel сказал:
а к чему может привести такое?
по разному... как обезьяна с гранатой, куда швырнет, варианты от ничего и вплоть до краша
-
-
В 23.03.2017 в 18:37, ENRGY сказал:
MacOS (OSX), Android и iOS - это тоже Unix.
Unix то да, только до сих пор это были java приложения для виртуальной машины, теперь можно создавать исполняемые ELF файлы консольных приложений и библиотеки под unix.
В 23.03.2017 в 18:37, ENRGY сказал:Что-то не пойму причем здесь Apache к Delphi? И зачем его привязывать?
выше было видео, создание Apache dynamic link module, вот здесь c 45 минуты:
В 20.03.2017 в 17:11, Kitty сказал: -
Они что, правда сделали компилятор под unix исходников на паскале? Или еще один переход си <-> паскаль?
Насколько мне известно, модули для apache до сих пор собирали и устанавливали с помощью apxs / apxs2, apxs в свою очередь работает с исходниками на Си, объектными файлами *.o и статическими библиотеками *.a. И как все это хозяйство привязали к паскалю?
Что-то, воля ваша, недоброе таится© в написании кода на си, который использует компоненты написанные на паскале, которые собираются компилятором(написанным видимо на си) в объектники и библиотеки, которые затем будут собраны в модули для демона написанного на си..., доколе?
При этом, нет поддержки линукс-сервер для borland си... все, абзац.
-
1 час назад, ENRGY сказал:
Полная ерунда. Хоть на китайском можно писать. Сохраняйте .pas в utf-8 - правая кнопка мыши по редактору > File Format > Utf-8.
Полная ерунда - весомый довод... Сохранить то utf-8 можно, компилер среды BCCAARM.EXE, the C++ Compiler for Android все равно будет с ними работать как с asci, и также не поймет кириллицу, если ему, как писали выше, если не указать принудительно.
А вот BCC32, the C++ Command-Line Compiler все считает корректно.
-
53 минуты назад, ENRGY сказал:
Причем здесь юникод к RTTI? RTTI это низкоуровневый доступ к полям класса. К любым типам.
Сохраняйте строки в отдельном текстовом файле в Utf-8 и забрасывайте их в компоненты при помощи RTTI. http://delphi.chertenok.ru/text/stat21.shtml
Это все делает TLang стандартный, зачем переписывать доступные стандартные компоненты?
-
1 час назад, ENRGY сказал:
Имхо лучше свой вариант написать на файлах и RTTI. Потом вам захочется iOS и все равно придется делать.
Если строки в языковых файлах - зачем RTTI, что к чему безопасно runtime приводить?
Почему бы Embarcadero не работать сразу с unicode, стандартно UTF-8(16)?
RAD Studio работает с исходниками на Ansi, а компилятор не распознает кириллицу в этих исходных файлах, приведение:
case 0: return (AnsiString)"Ожидание";
сделано как попытка объяснить компилятору, что это кириллица.
Правильный подход (имхо опять же) - среде нужно сразу работать с unicode, и не извращаться потом с приведением типов.
-
18 часов назад, chaplin.u@gmail.com сказал:
попробовал этот пример но столкнулся с проблемой кодировки в Андроид. подставляю в ShowMessage(LangString(0, Lang));
Вариант -
выдаёт на экране строку вопросительных знаков.
Вариант - case 0: return AnsiToUtf8("Ожидание"); выдаёт ромбики.
как я вижу ShowMessage(const System::UnicodeString AMessage); работает с UnicodeString а Андроид хочет Utf8.
попробовал ShowMessage( AnsiToUtf8(LangString(0, Lang)));
не помогает...
На Seattle это работает, не знаю уж как там преобразование в Android API, в Berlin уже нет. Приложение под Андроид оставил в Seattle и больше не заморачивался пока.
Сейчас пишу демон TCP сервера на с++ под CentOs в среде NetBeans, там строки языка Ansi С и стандартные строки std::string из C++. Отображение строк только в логах либо в браузере и проблем с кириллицей нет.
-
22 часа назад, Mazzay сказал:
У меня прекрасно работает. Что я делаю не так?
Некорректно выразился, на андроид не работает связка FireDac + MySQL, т.к. используется libmysql.dll, с sqLite все вроде ок.
-
-
статистика:
запросов задач в сек. 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
Использование TClientSocket (old school )
в Компоненты
Опубликовано
Задача поднять старый (теплый ламповый) проект CBuilder 6 под Виндовс в RAD Studio.
Просто открыл файл проекта, практически все подтянулось с небольшими изменениями в путях include. Кроме TClientSocket, нет такого визуального компонента.
Компонента нет, но библиотеки в RAD Studio оставили. Подключил #include <ScktComp.hpp>, создал динамически TClientSocket, определил события - проект поднялся малой кровью.
Аналогично можно пользоваться TServerSocket. Может кому пригодится.