Maximus
-
Постов
84 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Активность репутации
-
Maximus получил реакцию от Rusland в Как подавить экранный курсор crSQLWait ?
На самом деле это поведение можно достаточно просто отключить
var Connect : TFDConnection; Query : TFDQuery; ... Connect.ResourceOptions.SilentMode := true; Query.ResourceOptions.SilentMode := true; ...
-
Maximus получил реакцию от Евгений Корепов в Как подавить экранный курсор crSQLWait ?
На самом деле это поведение можно достаточно просто отключить
var Connect : TFDConnection; Query : TFDQuery; ... Connect.ResourceOptions.SilentMode := true; Query.ResourceOptions.SilentMode := true; ...
-
Maximus получил реакцию от Равиль Зарипов (ZuBy) в Как подавить экранный курсор crSQLWait ?
На самом деле это поведение можно достаточно просто отключить
var Connect : TFDConnection; Query : TFDQuery; ... Connect.ResourceOptions.SilentMode := true; Query.ResourceOptions.SilentMode := true; ...
-
Maximus отреагировална enatechno в Цифровая подпись
Если нужно просто запустить программу, нажмите на "Подробнее", появится кнопка для запуска.
инфа по цифровой подписи:
Code Signing сертификаты или сертификаты разработчика. Виды, как выбрать
Code signing для Open Source от Certum
Code Signing в Windows, просто и недорого
Где приобрести сертификат : KSoftware, Comodo, Symantec ... (ссылки есть в статьях)
Как подписывать
-
Maximus получил реакцию от Alex7wrt в Параллельные вычисления, System.Threading
Вкратце вот здесь можно почитать http://proghouse.ru/programming/36-delphi-xe7-ppl
Например, если таск организован как бесконечный цикл, то после завершения каждого таска, в главном потоке увеличивать счётчик. Как только он станет равным количеству запущенных, можно будет обновлять информацию на экране и делать повторный запуск. Разумеется доступ к главному потоку должен быть синхронизирован. А если в таске конечная последовательность действий, то можно просто проверять статусы всех тасков.
Логично. WaitForAll приостанавливает поток в котором был вызван до тех пор, пока не будут завершены все таски.
-
Maximus отреагировална Mars M в Стрелковый тир (игра)
Описание того что нужно как то расплывчато, но вот примерно так можно сделать.
Всего один TImage который используется для отрисовки битмапов.
Видео
и проект
Tire.rar
-
Maximus отреагировална dnekrasov в Стрелковый тир (игра)
Если игра под Windows, то самый простой выход (по моему мнению) - работа с регионами. Ведь каждый объект это по сути дела какой-то замкнутый полигон, а функции CreatePolygonRgn и PtInRegion еще никто не отменял. А вообще функций для работы с регионами немало, так что почитайте о них на MSDN.
Если не хотите использовать WinAPI-шные функции - работайте с полигонами. Мне когда-то очень помогла библиотека AlgLib - из нее можно вытянуть много полезных функций, чтобы самому не реализовывать алгоритмы.
-
Maximus отреагировална Сергей Сергеев в XE10.2 Tokyo есть запись вебинара от 28.03.2017?
Поставил Токио для проверки, такого я не ожидал, скажу честно. Проект, который достаточно безболезненно двигался с Сиетла в Берлин, и количество глюков уменьшалось, просто "умер" в Токио. в Андроид 4.4.2 просто не стартует после splash экрана, до точки останова на первой же команде не доходит, segmentation fault. В Андр 5.1 , 6.0 хоть запускается. Опять пропадают картинки с кнопок ( допилили). Форма с анимацией, пока идёт соединение в потоке, не анимирует. Шрифт на этой форме искажен, с зелёной обводкой. Форма не закрывается после установки соединения. Сказать что я разочарован, не сказать ничего.
-
Maximus отреагировална fsdb в Как работать с Arduino по bluetooth?
вопрос закрыт. все получилось. с ардуино получаю и отправляю данные
ничего такого особо интересного - я делаю экструдер
-
Maximus получил реакцию от Winexcel в DealLock или что сделать чтобы его получить
Во-первых ни в коем случае нельзя обращаться к визуальным компонентам напрямую без синхронизации, да и вообще к любым разделяемым ресурсам. Во-вторых 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.
-
Maximus отреагировална Евгений Корепов в передача сообщений по локальной сети
Может вам не писать тогда свой мессенджер а использовать что то готовое? Я в свей конторе использую http://www.commfort.com/ru/
-
Maximus получил реакцию от Winexcel в Запретить выходить за пределы родителя
Вы же знаете длину и ширину своего "потомка", учитывайте её при проверке и всё.
-
Maximus получил реакцию от Rusland в NetHTTPClient передача файла и OnReceiveData
В общем, я бы исправил так: добавил локальную переменную
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);
Полный текст исправленной функции.
-
-
Maximus отреагировална Равиль Зарипов (ZuBy) в [Форум]Последние сообщения - проблемы
У Ярослава нету пока времени вернуть обратно, требуется поработать ручками и править шаблон.
Но он обещал исправить
-
Maximus отреагировална Евгений Корепов в DeviceInfo - модуль для получения информации о девайсе
Рекомендую при первом запуске генерировать GUID (System.SysUtils.CreateGUID), записывать в файл и использовать его. Привязка к железу это хорошо, но требует дополнительных разрешений, не понятных пользователю. И китайцы рано или поздно выпустят что то такое, где ваш код работать не будет.
-
Maximus отреагировална Pavel M в Подбор максимального размера шрифта TLabel
Подскажите более быстрый и менее затратный способ
получить максимально возможный размер шрифта
исходя из статических размеров.TLabel
(с центрованием текста и без переноса строк)
procedure TfrmMain.MaxFontSize(xLabel: TLabel); var xFntSize: Single; xW, xH: Single; begin xW := 0; xH := 0; xFntSize := 1; xLabel.ResultingTextSettings.Font.Size := xFntSize; while (xLabel.Size.Width > xW) and (xLabel.Size.Height > xH) do begin xLabel.ResultingTextSettings.Font.Size := xFntSize; xFntSize := xFntSize + 1; xLabel.Canvas.Font.Size := xFntSize; xW := xLabel.Canvas.TextWidth(xLabel.Text); xH := xLabel.Canvas.TextHeight(xLabel.Text); end; end; -
Maximus получил реакцию от Menkos1 в Запуск стороннего приложения со своими координатами.
Ну да, конкретно с калькулятором такой финт не прокатит, он явно запоминает свою позицию перед закрытием, а затем при запуске её восстановление происходит уже после применения заданных в CreateProcess параметров позиции. А вообще работает, например, если запустить своё же приложение, разумеется если в нём нет установки координат после запуска.
Можно и MoveWindow или SetWindowPos использовать после запуска, только тогда придётся получить хендл окна.
-
Maximus отреагировална Brovin Yaroslav в Описание TfgRatingBar
Доработал компонент. Добавлено:
Поддержка Tint эффекта - TfgRatingBar.TintColor Автоматический размер - TfgRatingBar.AutoSize Режим только отображения - TfgRatingBar.ReadOnly Событие окончательного изменения рейтинга (отжатие пальца от экрана или кнопки мышки) - TfgRatingBar.OnChange Событие в процессе изменения рейтинга - TfgRatingBar.OnChanging
-
Maximus отреагировална Brovin Yaroslav в [Статья] Жизненный цикл объектов в Delphi. Часть 2. Android, iOS. Что же использовать Destroy, Free, FreeAndNil или DisposeOf?
Ссылка: http://yaroslavbrovin.ru/object_life_cycle_in_delphi_part_2_android_ios-ru/ Автор: Ярослав Бровин Продолжаем тему жизненного цикла объектов в мире Delphi, но в этой части рассматриваем эту тему в рамках мобильных платформ Android и iOS.
Delphi вводит новый подход к управлению памятью в мобильных платформах. Появляется автоматический подсчет ссылок, который с одной стороны облегчает код разработчика и должен помочь ему, а с другой стороны раскладывает равномерно грабли на пути освоения новых платформ в мире Delphi.
-
Maximus отреагировална AliZairov в CrossVCL Beta XE3-Berlin
Hi. New tools for Delphi IDE. Using CrossVcl you focus only on your VCL application and CrossVcl makes it cross-platform.
This is beta software only for testing purpose. CrossVcl on early stage of development, what are to test in this release:
* Installation process (CrossVcl creates copy and patches existing on your machine Vcl and Rtl sources, all original sources stay unmodified)
* Upgrading simple or new Vcl project to macOS (Right Click on Project in Project Inspector)
* Compilation and deploying of simple project
Please do not create bug-report if you can't compile or launch big Vcl projects or any third-party controls at this stage.
Bug reports and suggestions welcome at:
https://bitbucket.org/crossvcl/crossvcl/issues
We help you on:
http://stackoverflow.com/questions/tagged/crossvcl
Google+:
https://plus.google.com/109334532832375082802
Facebook:
https://www.facebook.com/crossvcl
Twitter:
https://twitter.com/VclCross
Home
-
Maximus получил реакцию от Евгений Корепов в NetHTTPClient передача файла и OnReceiveData
Да, работает. Мне легче было просто файл поправленный к проекту подложить.
Кстати, исходник со второго апдейта берлина, а то мало ли.
-
Maximus получил реакцию от Евгений Корепов в NetHTTPClient передача файла и OnReceiveData
В общем, я бы исправил так: добавил локальную переменную
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);
Полный текст исправленной функции.
-
Maximus получил реакцию от Евгений Корепов в NetHTTPClient передача файла и OnReceiveData
Да вот смотрю на то что они понаписали и думаю, то ли они вообще не предусмотрели вызов этого коллбека при отдаче файла, то ли забыли...
Вот эта функция вызывается вне зависимости от того куда мы загружаем файл: к себе или на сервер.
Разница начинается на этой сроке
LExecResult := DoExecuteRequest(LRequest, LResponse, AContentStream); При загрузке на ПК эта функция
не входит в блок кода, помеченный // Send data. TWinHTTPClient.DoExecuteRequest выполняется полностью и продолжается выполнение процедуры THTTPClient.ExecuteHTTPInternal, в которой выполнение доходит до строки
if not SameText(LRequest.FMethodString, sHTTPMethodHead) then LResponse.DoReadData(LResponse.FStream); откуда вызывается функция
где и начинается загрузка файла на ПК. Отсюда уже и происходит вызов нашего коллбека в цикле, пока файл не загрузится.
FRequestLink.DoReceiveDataProgress(LStatusCode, LExpected, LReaded, Abort);
С передачей на сервер всё обстоит не так. После того как мы попали в функции TWinHTTPClient.DoExecuteRequest в блок кода, помеченный // Send data, мы там и остаёмся в цикле, пока файл не будет загружен, там разумеется нет никакого вызова коллбека, и только после того как файл будет загружен и мы выйдем из TWinHTTPClient.DoExecuteRequest, то так же попадаем в TWinHTTPResponse.DoReadData и там вызывается FRequestLink.DoReceiveDataProgress(LStatusCode, LExpected, LReaded, Abort); который перед циклом и который вызывается в итоге после окончания загрузки файла на сервер. Дальше мы входим в цикл, но он досрочно завершается вместе с процедурой на строке
if LSize = 0 then Break; Самое забавное, что в цикле при передаче на сервер, даже флага Abort нет, значит прервать никак передачу нельзя, ну разве что объект уничтожать прямо во время работы.
-