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

Maximus

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

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

  • Посещение

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

    9

Сообщения, опубликованные Maximus

  1. 15 минут назад, Sergionn сказал:

    это видимо из той же серии, что и хелперные функции к строкам (и не только) подчеркивает, эх...((

    Это что-то ещё хуже. При первом запуске студия даже скомпилить не дала, ссылаясь на эти ошибки. После перезапуска студии - скомпилилось, но ошибки остались.

  2. Сделайте тестовое приложение, без функционала, только подключение к базе с одной таблицей и выводом данных из неё. Если она у ваших тестеров заработает, значит косяк в вашем приложении. Если не заработает, то скините проект сюда.

  3. 31 минуту назад, Вадим Смоленский сказал:

    куда приложил sqlite3.dll

    А откуда вообще взялась информация о том, что для работы приложения необходимо с ним таскать библиотеку sqlite? Беру чистый образ Win XP, на нём не должно быть этой библиотеки, кидаю туда своё приложение, работающее с sqlite через FireDAC, и всё работает. Что я делаю не так?

     

     

  4. http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TThread.Synchronize

    Судя по документации, если передать первым параметром поток, то в дальнейшем в основном потоке можно будет определить какой из дополнительных потоков вызвал метод. Если это не требуется, то можно ничего не передавать.

  5. 7 часов назад, gonzales сказал:

    Не очень понял, чем это может помочь! В общем процедуру, которая в потоке запрашивает у сервера информацию и обновляет состояние компонента я написал, но теперь есть другая засада. Эта процедура срабатывает по таймеру в 1 сек, соответственно работает в своем потоке. Но иногда проявляется следующий баг, пользователь принудительно меняет состояние объекта (при этом он перерисовывается), и тут же перерисовывается обратно по таймеру (так как информация о смене состояния на сервер еще не попала) и только на следующем такте (обращении по таймеру к серверу) объект перерисуется в правильное состояние. Вопрос, могу ли я каким-то образом в момент нажатия пользователем на объект остановить выполнение задачи в потоке?

    Прям немедленно остановить нельзя, но можно вызвать метод Cancel

    var
    	Task   : ITask;
    ...
    Task := TTask.Run(...);
    ...
    Task.Cancel; //когда нужно остановить

    А внутри таска сделать проверки, что если выполняется

    Task.Status = TTaskStatus.Canceled

    то не нужно обновлять данные, там где вы их обновляете и досрочно закончить работу кода таска.

  6. 1 час назад, gonzales сказал:

    1. Любое обращение к форме нужно проводить с синхронизацией? Я думал это только визуальных компонентов касается, которые должны в главном потоке отрисовываться.

    Смотря к каким данным вы обращаетесь. На самом деле синхронизировать нужно любые обращения к разделяемым ресурсам. Если теми данными, что на форме или где-то ещё, пользуется другой поток, то доступ к ним должен быть синхронизирован. Если вы их только читаете, измениться они не могут и делаете это только в показанном потоке, то можно не синхронизировать

    Но вот это же точно визуальный элемент?

    Form1.ConnectImage.Bitmap := Form1.IconList.Bitmap(Size, localicon);

     

    1 час назад, gonzales сказал:

    3. Объектов до 10 и по каждому запрос, только запрос не HTTP, так как у меня не web-сервер, а это просто пакет байт, на который сервер отвечает таким же пакетом. Я уже думаю над тем, чтобы передавать всю информацию в одном пакете, но для этого придется полностью переколбасить сервер, а сейчас пока на это нет времени. А нельзя TCPClient заставить работать в асинхронном режиме? 

    Тогда это уже менее страшно, я почему-то подумал, что обращение идёт через HTTP. TCPClient не имеет такой возможности, только самостоятельно потоки делать.

  7. На первый взгляд можно заметить следующее:

    1. Обращение к форме из потока без синхронизации

    l := Length(Form1.RoomElements);
    E := Form1.RoomElements[j];

    Так делать нельзя. SendHTTPMessage - тоже самое.

    2. Таймер не останавливается на время работы потока, судя по всему. Если поток не успеет отработать за секунду, как вы написали, может запуститься второй и третий. Возможно так и задумано, но если учесть, что все они обращаются к форме без синхронизации всё это печально кончится.

    3. У вас сколько объектов по которому цикл проходит каждую секунду? И для каждого объекта вызывается Get запрос на веб сервер? Бедный сервер. Данные нужно получать сразу для всех объектов, и уже в клиенте разбирать, что вам нужно, а что нет. А иначе ваши клиенты положат вам ваш же сервер рано или поздно.

    4. Уже несколько версий существует TNetHttpClient и THTTPClient, которые могут асинхронно отправлять запросы на веб сервер, а значит поток вообще создавать не нужно.

  8. 12 часа назад, Menkos1 сказал:

    Это нужно обновиться или как ? Сможете поделится Fmx.Form.pas от Tokyo?

    зашел на оф сайт нефигасе 100.000р за лицензию, это что еще такое :D -

    Да, нужно либо обновиться на Токио, либо применить фикс, который есть в комментариях на первой странице.

    На торрентах бесплатно продают, скачайте и вынимайте оттуда любые модули, которые нужны.

  9. В 28.05.2017 в 14:59, b_vlad25 сказал:

    Скажите две наклонные черты // перед текстом в результатах выполнения скрипта - это по умолчанию или можно убрать?

    Нет, не по умолчанию, это косяк в скрипте. Я так понимаю запрос заработал, в чём же была проблема?

×
×
  • Создать...