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

GASCHE

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

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

  • Посещение

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

    12

Активность репутации

  1. Like
    GASCHE отреагировална Slym в Скорость анимации сцены с большим количеством деталей   
    о... да мы меряемся?
    на 1000: 250-333fps 
    как тебе такое Sulion 10000...

    fps3.zip
  2. Haha
    GASCHE получил реакцию от Firemonkey в Google Play and Delphi   
    Как все 😊
  3. Like
    GASCHE отреагировална Tumaso в Съезжают размеры и положение контролов в Андроиде, в винде всё нормально.   
    Используй константу sLineBreak вместо #10#13 / #10 и всё будет правильно работать и виндах, и на андроиде
  4. Sad
    GASCHE получил реакцию от Hevard в Книга. Обучение мобильной разработке не Delphi   
    Основной задачей второго издания данной книги является актуализация представленных примеров относительно текущей версии Embarcadero RAD Studio/Delphi 10.3.2 Rio по сравнению с той, которая использовалась при подготовки первого варианта. Материал книги дополнился новыми возможностями и полезными советами, а также рекомендациями, полученными от читателей первой версии.

  5. Like
    GASCHE отреагировална krapotkin в Почему при вырезании части изображения выходное изображение получается искаженным?   
    я предлагаю простую игру
    вместо всех этих (XXX+YYY*Z/12.4) поставить константы
    и тогда вся отладка будет простой и красивой
    50,50 - 100,120 - вырезать
    0,0 - 50,70 - вклеить
    и посмотреть, соответствует ли вашим ожиданиям картинка
    на 99% ваша ошибка в расчетах координат. что ваши переменные обозначают и чему равны, кроме вас, никто не ведает
    писать программу, чтобы отладить ваш код, ну какбы совсем лень
    а свой проект вы не приложили.
    вот собсно никто и не отвечает 
  6. Like
    GASCHE получил реакцию от Эльвинтель в FD + BD accsses (Delphi Alexandrin)   
    А так не пробовали
    function TForm4.FDnnection(SQLwe:string): string; begin    FDConnection1.Params.DriverID:='MSAcc';    FDConnection1.Params.Database:=Form2.PathBaseEdit.Text;    FDConnection1.Connected:=true;    FDQuery1.SQL.Add(SQLwe);    FDQuery1.Active:=true; end;  
  7. Like
    GASCHE получил реакцию от Евгений Корепов в Создать класс с параметром и без   
    А так не пробовали?
    constructor TMyClass.Create(pos: String = '');  
  8. Like
    GASCHE отреагировална Martifan в Запрет ввода определенных символов в TEdit   
    если правильно понял вам нужна это:   в FireMonkey и в Android свойстве TEdit добавлена FilterChar и выглядит это так: procedure TForm1.FormCreate(Sender: TObject); begin   Edit1.FilterChar:= '0123456789'; end;
  9. Like
    GASCHE отреагировална Andrey Efimov в [Статья][Android] Автоматическая смена названия приложения в зависимости от языка системы   
    Ссылка: http://delphifmandroid.blogspot.ru/2016/04/blog-post.html
    Автор: Андрей Ефимов
    Описание: Автоматическая смена названия приложения в зависимости от языка системы
  10. Thanks
    GASCHE получил реакцию от Олег Киреев в Сократить путь   
    Ищите в интернете Copy и LastDelimiter.
  11. Like
    GASCHE получил реакцию от Barbanel в Книга. Обучение мобильной разработке не Delphi   
    Основной задачей второго издания данной книги является актуализация представленных примеров относительно текущей версии Embarcadero RAD Studio/Delphi 10.3.2 Rio по сравнению с той, которая использовалась при подготовки первого варианта. Материал книги дополнился новыми возможностями и полезными советами, а также рекомендациями, полученными от читателей первой версии.

  12. Thanks
    GASCHE получил реакцию от Олег Киреев в Книга. Обучение мобильной разработке не Delphi   
    Основной задачей второго издания данной книги является актуализация представленных примеров относительно текущей версии Embarcadero RAD Studio/Delphi 10.3.2 Rio по сравнению с той, которая использовалась при подготовки первого варианта. Материал книги дополнился новыми возможностями и полезными советами, а также рекомендациями, полученными от читателей первой версии.

  13. Like
    GASCHE получил реакцию от Ingalime в Книга. Обучение мобильной разработке не Delphi   
    Основной задачей второго издания данной книги является актуализация представленных примеров относительно текущей версии Embarcadero RAD Studio/Delphi 10.3.2 Rio по сравнению с той, которая использовалась при подготовки первого варианта. Материал книги дополнился новыми возможностями и полезными советами, а также рекомендациями, полученными от читателей первой версии.

  14. Like
    GASCHE отреагировална Евгений Корепов в как ускорить обработку данных   
    Как верно подметил Дмитрий - знание SQL наше все.
    Вот к примеру я создал тестовую таблицу и наполнил ее тестовыми данными:
    CREATE TABLE `test001` ( `id` int(11) NOT NULL AUTO_INCREMENT, `TimeFrom` datetime DEFAULT NULL, `InA` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8; INSERT INTO `test001` VALUES ('1', '2020-05-17 16:14:36', '1'); INSERT INTO `test001` VALUES ('2', '2020-05-17 16:12:56', '2'); INSERT INTO `test001` VALUES ('3', '2020-05-17 16:12:56', '3'); INSERT INTO `test001` VALUES ('4', '2020-05-17 17:12:56', '4'); INSERT INTO `test001` VALUES ('5', '2020-05-17 17:12:56', '5'); INSERT INTO `test001` VALUES ('6', '2020-05-17 17:12:56', '6'); INSERT INTO `test001` VALUES ('7', '2020-05-17 18:12:56', '7'); INSERT INTO `test001` VALUES ('8', '2020-05-17 18:12:56', '8'); INSERT INTO `test001` VALUES ('9', '2020-05-17 18:12:56', '9'); INSERT INTO `test001` VALUES ('10', '2020-05-17 19:12:56', '10'); INSERT INTO `test001` VALUES ('11', '2020-05-17 19:12:56', '11'); INSERT INTO `test001` VALUES ('12', '2020-05-17 19:12:56', '12'); INSERT INTO `test001` VALUES ('13', '2020-05-17 20:12:56', '13'); INSERT INTO `test001` VALUES ('14', '2020-05-17 20:12:56', '14'); INSERT INTO `test001` VALUES ('15', '2020-05-17 20:12:56', '15'); INSERT INTO `test001` VALUES ('16', '2020-05-17 21:12:56', '16'); INSERT INTO `test001` VALUES ('17', '2020-05-17 21:12:56', '17'); INSERT INTO `test001` VALUES ('18', '2020-05-17 21:12:56', '18'); Для получения почасовых сумм по полю InA мне достаточно очень простого запроса:
    SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(test001.TimeFrom) / 3600) * 3600), SUM(test001.InA) as SumInA FROM test001 GROUP BY FLOOR(UNIX_TIMESTAMP(test001.TimeFrom) / 3600) * 3600 Результат запроса будет выглядеть вот так:
    2020-05-17 16:00:00 6 2020-05-17 17:00:00 15 2020-05-17 18:00:00 24 2020-05-17 19:00:00 33 2020-05-17 20:00:00 42 2020-05-17 21:00:00 51 Скорость выдачи результата будет большой - при миллионах записей в исходной таблице дело нескольких секунд или десятков секунд (зависит от железа сервера). 
    Но это все равно медленно, потому что на каждую запись таблицы будет производится вычисление "FLOOR(UNIX_TIMESTAMP(test001.TimeFrom) / 3600) * 3600" - деление, округление и умножение.
    Если это разовая выборка - проблем нет. Но если вам нужно регулярно дергать из таблицы данные, то лучше добавить в таблицу поле TimeFromHour, в которое сразу записывать значение  FLOOR(UNIX_TIMESTAMP(test001.TimeFrom) / 3600) * 3600. Это можно сделать руками или триггером при вставке. Добавить Индекс по полю TimeFromHour и в запросе тоже группировать (GROUP BY) по этому полю:
    ALTER TABLE `test001` ADD INDEX `Index-TimeFromHour` (`TimeFromHour`) USING BTREE ; Тогда вы получите максимально возможное быстродействие.
    Если нужно результат вставить в другую таблицу, то используйте запрос вроде такого:
    INSERT INTO test_sum (TimeFrom, SumInA) ( SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(test001.TimeFrom) / 3600) * 3600), SUM(test001.InA) as SumInA FROM test001 GROUP BY FLOOR(UNIX_TIMESTAMP(test001.TimeFrom) / 3600) * 3600 )  
  15. Like
    GASCHE отреагировална Barbanel в Динамическое изменение массива записей   
    Большое количество - это сколько?
    100, 100 000, 100 000 000?
    Каждый раз увеличивая размер на один элемент, менеджер памяти ищет непрерывный незанятый кусок памяти такой длины, чтобы уместить все элементы. Хорошо если место под уже выделенный массив позволяет увеличить размер, не упираясь в участики памяти занятые другими данными.
    Иногда после очередного увеличения массива, уже выделенного участка памяти более не хватает. В таком случае менеджеру приходится искать новый, и копировать старые данные в новый участок памяти, а старый участок помечать как свободный.
    Разумеется это занимает время. Именно это и приводит к "не так быстро, как хотелось бы".
    Чтобы избежать этого:
    1 Способ курильщика, простой: Увеличиваем размер массива не на 1 элемент, а сразу на 16/32/128/1024 элемента (вам виднее, в зависимости от того сколько у вас может быть элементов в массиве). Также заводим счетчик - номер последнего занятого элемента в массиве, и после каждого добавления - увеличиваем этот счетчик на единицу. Этот способ не избавит от проблемы, но будет приводить к менее частому перераспределению памяти.
    2 Способ здорового человека, чуть сложнее: используйте указатели. Заведите массив указателей (либо TList), выделяйте место под каждую новую запись (ваш record) вручную, и помещайте указатель на него в ваш массив указателей (или в TList). Не забывайте освобождать выделенную память, когда ваши обьекты больше не нужны. Этот спобоб более правильный, так как в этом случае перераспределение происходит очень редко.
    Кстати, реализация TList использует внутри себя первый способ.
  16. Like
    GASCHE получил реакцию от #WAMACO в Парни помогите распарсить   
    Так всё для вас уже сделано, даже голову ломать не надо не надо ?
     
  17. Like
    GASCHE получил реакцию от Ingalime в Парни помогите распарсить   
    Так всё для вас уже сделано, даже голову ломать не надо не надо ?
     
  18. Like
    GASCHE отреагировална ENERGY в Что невозможно сделать на Delphi для Android?   
    Delphi хоронят уже лет 15, это все слова. Нет идеальных инструментов. У всех какие то косяки, втч и у нативных средств, ведь все это придумывают люди, люди не роботы.
    На деле Delphi отличное средство для мультиплатформенной разработки вполне сложных программ. Мне как фрилансеру вполне хватает. Производительность гораздо лучше чем у Angular\Ionic, которые по факту WebView - веб в браузере - очень тормозное решение и подходит только для формочки "логин\пароль".  Также по производительности и глюкам Delphi имхо лучше чем ReactJS, и Xamarin aka Mono. 
    Во фрилансе огромная конкуренция, в основном индусы, в этом плане с Delphi можно быстрее разработать ПО чем предлагают сроки остальные.
    Проблема Делфай в том что оно дорогое, и  не так распространено - (это взаимосвязанный фактор) - таким образом сложно найти команду и мало проектов на нем разрабатывается, меньше сообщество и меньше документации и библиотек с готовыми решения Поэтому для одиночек это больше подходит.
     
    Но конечно нужно смотреть на развитие - вот Токио получилась очень сырым продуктом, я до сих пор на Берлине пишу под 4 платформы, если следующая версия выйдет такой же ультраглючной, то следует задуматься.
    А вообще хороший программист - это тот кто знает несколько языков, не бойтесь учить новое - опыт ускорит разработку с любым инструментом.
  19. Like
    GASCHE отреагировална #WAMACO в Не могу изменить размеры и формы компонентов   
    Delphi может ВСЕ!
  20. Like
    GASCHE получил реакцию от Dmitry Stolyarov в Отображение картинок в ListView   
    Грузятся если заменить  if (FListViewUpdating) or (AAsyncResult.IsCancelled) then на  if (FListViewUpdating) or (AsyncResult.IsCancelled) then.
    AAsyncResult у меня NIL
  21. Like
    GASCHE получил реакцию от Ingalime в Библиоека аналог USBDevice   
    Дальше не дошли ?
  22. Like
    GASCHE отреагировална OnePeople в помогие код сделать рабочим в firemonkey   
    Вы уверены что Вам это надо? Может сначала литературу какую нибудь по delphi почитать, а уж потом что то делать!?
    2.rar
  23. Like
    GASCHE отреагировална OnePeople в рисование на Image1   
    По быстрому)
    Paint.rar
  24. Like
    GASCHE получил реакцию от Ingalime в [Android] Измерение пульса   
    Теорию можно посмотреть здесь. Там же есть ссылка на пример, правда на Python.
  25. Like
    GASCHE отреагировална Евгений Корепов в Получение времени от серверов времени   
    Протокол SNTP
      Помимо NTP, существует упрощенная версия этого протокола - SNTP (Simple Network Time Protocol). Он реализован для синхронизации времени конечным клиентом, поскольку все преимущества протокола NTP проявляются именно в сети серверов, а для получения показаний конечным пользователем NTP излишне сложен. Поэтому для синхронизации времени конечными компьютерами и серверами был предложен протокол SNTP (SNTPv3: 1992 г., RFC1361 и 1995 г., RFC1769; SNTPv4 включён как подпротокол в NTPv4).
    На самом деле SNTP - это не новый протокол, а способ использования NTP-пакетов и NTP-серверов в приложениях, где не требуется высокоточное время, либо оно недостижимо. В этом случае клиент использует только часть информации UDP-пакета NTP-сервера. SNTP-клиент может работать с любыми версиями NTP-серверов, и кроме них - с особыми SNTP-серверами, которые в откликах заполняют только необходимые данные UDP-пакета.
    Таким образом, "облегченный" SNTP образует не сеть синхронизирующихся серверов, а пары "клиент-сервер". Любой NTP-сервер является одновременно SNTP-сервером. Клиент, который не передаёт полученное время дальше, может работать как NTP- или SNTP-клиент, в зависимости от условий. Для SNTP, как и для NTP, зарезервирован 123-й UDP-порт.
     
    Uses IdSNTP, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient; .... procedure TForm1.Button2Click(Sender: TObject); Var IdSNTP: TIdSNTP; begin IdSNTP:=TIdSNTP.Create(Self); IdSNTP.Host := 'ntp1.stratum2.ru'; ShowMessage(DateTimeToStr(IdSNTP.DateTime)); IdSNTP.Free; end;  
×
×
  • Создать...