Maximus

Пользователи
  • Публикации

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

  • Посещение

О Maximus

  • Звание
    Продвинутый пользователь

Контакты

  • Сайт
    http://www.са-мп.рф

Информация

  • Пол
    Мужчина
  • Город
    Воронеж

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

325 просмотров профиля
  1. Во-первых ни в коем случае нельзя обращаться к визуальным компонентам напрямую без синхронизации, да и вообще к любым разделяемым ресурсам. Во-вторых deadlock в FMX ничем не отличается от deadlock на VCL или на WinAPI, почитать можно здесь http://forum.vingrad.ru/topic-60076.html Конкретно в приведённом примере достаточно обернуть изменение метки в Synchronize TThread.Synchronize(nil, procedure begin Form4.Label1.Text:=i.ToString; end); и после запуска потока вызывать MyThread.WaitFor; - получите deadlock.
  2. windows

    На FMX этот компонент не завезли, студия же на VCL написана. В FMX можно попробовать заменить на TMenuBar.
  3. windows

    Меню RAD Studio сделано на TActionMainMenuBar.
  4. А что это вообще за метод TThread.ForceQueue? Где вы его взяли, его же нет в TThread.
  5. Баг исправлен в Tokyo.
  6. Вы же знаете длину и ширину своего "потомка", учитывайте её при проверке и всё.
  7. Кажется баг исправлен в Tokyo.
  8. Там теперь отображается не дата последнего поста, а дата создания темы. Зачем так сделали - непонятно.
  9. Лучше сразу забыть про FMX в библиотеке dll. Корректно он не будет там работать.
  10. Теперь в последних сообщениях вместо даты и времени последнего поста отображается дата создания поста, вообще не здорово.
  11. Ну да, конкретно с калькулятором такой финт не прокатит, он явно запоминает свою позицию перед закрытием, а затем при запуске её восстановление происходит уже после применения заданных в CreateProcess параметров позиции. А вообще работает, например, если запустить своё же приложение, разумеется если в нём нет установки координат после запуска. Можно и MoveWindow или SetWindowPos использовать после запуска, только тогда придётся получить хендл окна.
  12. CreateProcess предпоследний параметр lpStartupInfo, структура STARTUPINFO, в ней поля dwX и dwY. Ну и судя по описанию, для флага dwFlags нужно задать значение STARTF_USEPOSITION.
  13. Правда после прерывания загрузки WinHttpReceiveResponse возвращает False и GetLastError возвращает код тайм аута, после чего выбрасывается соответствующее исключение, но возможно так оно и должно быть, сервер же не получил полный набор обещанных в WinHttpSendRequest байт.
  14. Да, работает. Мне легче было просто файл поправленный к проекту подложить. Кстати, исходник со второго апдейта берлина, а то мало ли.
  15. В общем, я бы исправил так: добавил локальную переменную Abort: Boolean; в TWinHTTPClient.DoExecuteRequest, до цикла передачи данных вызвал бы коллбек с объёмом файла, так же как происходит при загрузке файла на ПК - первый коллбек вызывается с нулевым объёмом переданных данных. LRequest.DoReceiveDataProgress(0, DataLength, 0, Abort); В цикл добавил бы проверку на прекращение загрузки while (LRequest.FSourceStream.Position < LRequest.FSourceStream.Size) and (not Abort) do В конце цикла вызывал бы коллбек с объёмом файла и количеством переданных байт. Первый параметр коллбека - StatusCode получить на данном этапе скорее всего нельзя, или я не понял как, поэтому передаю ноль. LRequest.DoReceiveDataProgress(0, DataLength, LRequest.FSourceStream.Position, Abort); Полный текст исправленной функции.