Таблица лидеров


Популярный контент

Показан контент с высокой репутацией за 13.11.2018 во всех областях

  1. 6 баллов
    dnekrasov

    Перехват сообщений в Windows

    Делаем как обычно, если надо переопределить какое-то событие окна interface uses {$IFDEF MSWINDOWS} Winapi.Windows, Winapi.Messages, FMX.Platform.Win, {$ENDIF} System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs; type TMainForm = class(TForm) private procedure CreateHandle; override; {$IFDEF MSWINDOWS} procedure WMIMENotify(var Msg: TMessage); message WM_IME_NOTIFY; {$ENDIF} public end; var MainForm: TMainForm; implementation {$R *.fmx} {$IFDEF MSWINDOWS} var OldWndProc: Pointer = nil; function NewWndProc(Wnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; var Mess : TMessage; begin case Msg of WM_IME_NOTIFY: begin Mess.Msg := Msg; Mess.WParam := wParam; Mess.lParam := lParam; Mess.Result := 0; MainForm.Dispatch(Mess); Result := Mess.Result; end; else Result := CallWindowProc(OldWndProc, Wnd, Msg, WParam, LParam); end; end; {$ENDIF} { TMainForm } procedure TMainForm.CreateHandle; begin inherited CreateHandle; {$IFDEF MSWINDOWS} OldWndProc:= Pointer(SetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_WNDPROC, Integer(@NewWndProc))); {$ENDIF} end; {$IFDEF MSWINDOWS} procedure TMainForm.WMIMENotify(var Msg: TMessage); begin {что-то делаем} end; {$ENDIF}
  2. 5 баллов
    В конце концов получилось исправить. Для interlaced гифок проблема была вообще пустяковая. Одна строчка не в том месте. А вот для optimized все оказалось несколько сложней, но в итоге теперь все гифки отображаются правильно. Пользуйтесь на здоровье! FMX.GifUtils.zip
  3. 4 балла
    А можно для тех, кто не смог присутствовать, хотя бы кратко основные тезисы?
  4. 3 балла
    1. для упрощения кода работы с JSON давно можно использовать сложные пути ABase64:=JSON.GetValue<string>('body.nextStep.pdf'); 2. ну нельзя так: AStreamSource.WriteBuffer(Pointer(ABase64)^, Length(ABase64) * 2); так безопасней AStreamSource:=TBytesStream.Create(TEncoding.UTF8.GetBytes(ABase64)); 3. И сохранять лучше сразу в TFileStream - меньше расход памяти 4. не забываем finally Free (их выше нету)... хоть оно и может AUTOREFCOUNT (а может и нет!), но правила хорошего тона никто не отменял
  5. 2 балла
    FREEFAR

    PUSH Notification не работает после публикации

    Всем доброго времени суток. Казалось бы. Во время разработки и перед тем как подписали приложение сертификатом Distribution, пуши приходили норм. Но после того как прошли аудит Apple пуши куда-то пропали. FCM возвращал ошибку InvalidRegistration. Оказалось все достаточно просто. На сервере с которого мы отправляем пуш, В php скрипте, который отправляет пуши надо выставить sandbox = false Ура! Всем удачи)
  6. 2 балла
    Совершенно верно
  7. 2 балла
    #WAMACO

    TMapView завешивает программу

    Сходите на Android Studio! После мытарств там, ждем обратно! 😂 По-делу.... что конкретно не получается?
  8. 2 балла
    Накидал вам функцию (проверил - работает): unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.JSON, System.NetEncoding, System.IOUtils; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } function ExtractPDFContentBase64(const AJSONString : String; out AFileName : String) : boolean; end; var Form1: TForm1; implementation {$R *.fmx} function TForm1.ExtractPDFContentBase64(const AJSONString : String; out AFileName : String) : boolean; Var AJSONObject, AJSONObjectBody, AJSONObjectNextStep : TJSONObject; ACode : Integer; AStreamSource, AStreamDest : TMemoryStream; ADecodeByteCount : Integer; ABase64 : String; begin // Выставляем результат функции в False Result:=False; // Парсим JSON строку в JSON объект AJSONObject:=TJSONObject(TJSONObject.ParseJSONValue(AJSONString)); if Not Assigned(AJSONObject) then exit; // Проверям поле code на предмет содержания http code 200 (это я домыслил, можно удалить) if Not AJSONObject.TryGetValue('code', ACode) then exit; if ACode <> 200 then exit; // Извлекаем body if Not AJSONObject.TryGetValue('body', AJSONObjectBody) then exit; if Not Assigned(AJSONObjectBody) then exit; // Из body извлекаем instanceId - будем использовать как имя файла if Not AJSONObjectBody.TryGetValue('instanceId', AFileName) then exit; // Склеиваем полное имя файла // AFileName:=TPath.Combine(TPath.GetSharedDownloadsPath, AFileName + '.pdf'); AFileName:=TPath.Combine(TPath.GetSharedDownloadsPath, AFileName + '.jpeg'); // Я тестил на картинке // Извлекаем nextStep if Not AJSONObjectBody.TryGetValue('nextStep', AJSONObjectNextStep) then exit; if Not Assigned(AJSONObjectNextStep) then exit; // Содаем поток-источник и помещаем в него base64 AStreamSource:=TMemoryStream.Create; if Not AJSONObjectNextStep.TryGetValue('pdf', ABase64) then exit; AStreamSource.WriteBuffer(Pointer(ABase64)^, Length(ABase64) * 2); // Длину строки умножаем на 2, так как строка юникод AStreamSource.Position:=0; // Создаем поток-назначение AStreamDest:=TMemoryStream.Create; // Декодируем base64 из текста в потоке AStreamSource в бинарные данные в поток AStreamDest ADecodeByteCount:=TNetEncoding.Base64.Decode(AStreamSource, AStreamDest); // Проверяем сколько байт было декодировано if (ADecodeByteCount > 0) then begin AStreamDest.Position:=0; try // Сохраняем поток с бинарными данными в файл с ранее собранным именем AStreamDest.SaveToFile(AFileName); except exit; end; end; // Выставляем результат функции в True Result:=True; end; procedure TForm1.FormCreate(Sender: TObject); Var AJSONString : String; AFileName : String; begin AJSONString:=TFile.ReadAllText('d:\JSON_example.txt'); if ExtractPDFContentBase64(AJSONString, AFileName) then begin // Что то делаем с PDF файлом AFileName end; end; end.
  9. 2 балла
    А в чем загвоздка? Достать поле из JSON - вроде просто, обычная работа с JSON далеко не самой сложной структуры. Раскодировать из Base64 - uses System.NetEncoding; TNetEncoding.Base64.DecodeStringToBytes и сохранить их в файл Потом открыть файл через интент.
  10. 2 балла
    Ярослав, хорошо выступил, молодец! Жаль что в конце расписания, все устали уже к тому времени, но тут организаторов понять можно То что там не получалось по мелочи - это ерунда, суть не в картинках была.
  11. 2 балла
    ENERGY

    В Embarcadero отсутствует Android Service

    Совет. Не пишите под Android на Delphi ниже последней версии Берлина (10.1 upd 2). А если выше, то точно не Токио первых версий, только последние версии Токио, иначе все будет тормозить и глючить.
  12. 2 балла
    Вообще не совсем понятно зачем делать отправку письма из приложения. Я придерживаюсь мнения что захардкоренные места не нужно держать в приложении, при обновлении параметров smtp сервера вы никак не сможете починить быстро самый простой способ это хостинг ну или текущий сайт компании, там реализовать отправку письма как предлагал @ENERGY
  13. 1 балл
    сервер с которым общается приложение либо не использует https либо сертификат настроен не правильно
  14. 1 балл
    Tumaso

    Скриншот без компрессии

    Попробуй вместо своей функции вызвать ACntrl.MakeScreenshot
  15. 1 балл
    Если мне не изменяет склероз - да, что-то про мохаву было на слайдах. Вообще-то я не понял что вы мне вообщетаете. Я знаю что после чего появилось. Я фантазирую о ПЕРЕПИСАННОМ VCL, без легаси, под современные подходы с учётом новых языковых фишек. И причем тут FMX? Вы точно мне возражаете :-) ?
  16. 1 балл
    По пункту 1 : Из за того что код парсинга JSON сотрудники Эмабаркадеро делали "по быстрому" (просто переделали ранее написаный код парсинга XML), то там присутствуют ошибки и конструкция ABase64:=JSON.GetValue<string>('body.nextStep.pdf'); будет работать, но только при убывающей луне и на южном склоне холма 😉 Исправили проблему только в Carnival. По пункту 2 : Согласен полностью. По пункту 3: Согласен полностью. По пункту 4 : Согласен, но я показывал как топикстартеру как выполнить его задачу, а не писал учебник по идеальному программированию 😉 Да и компилятор все равно вставляет код очистки локальных переменных при выходе из функции, так что будем считать что я просто снизил нагрузку на процессор 😉
  17. 1 балл
    Приложение для получения информации о составе основных комплектующих, входимостей по моделям автобусов и троллейбусов МАЗ на смартфонах. А также некоторые статистические данные,прочей информации и расчёты. Работает на устройствах под OS Android версий: 4.4 и выше, 4.1.х, 4.2.х, 4.3.х, 4.0.3, 4.0.4, 2.3.3...2.3.7. Протестировано на экранах 5 дюймов. Может пригодиться дилерам МАЗ, лицам эксплуатирующим пассажирскую технику МАЗ, лицам не конструкторских служб МАЗ. Особенно в случае нахождения в месте недоступном к интернету и компьютеру. Существует и более расширенная версия для OS Windows. Пожалуйста, с предложениями и пожеланиями обращайтесь к разработчику: ведущему инженеру-конструктору Кирееву Олегу по тел. +375 29 676 13 84 или пишите на kireevoleg1966@gmail.by. Буду рад Вашему любому отзыву. С Уважением. BOKAv11.52.rar
  18. 1 балл
    Зайдите в гугл картинки и поищите что-то типа mobile UI design. Также у Delphi есть пакет премиум скинов - Firemonkey premium styles.
  19. 1 балл
    Виталий Иванов

    Audio Streaming

    Теперь есть отправная точка как это должно, теперь буду дальше эксперементировать. Нужно сделать теперь ещё сервер для того что бы это работало через NAT и проверить работу на Android
  20. 1 балл
    Alex7wrt

    [Андроид] TAniIndicator

    Тогда TZNativeDrawFigureArc замените на TArc. Может на ваших целевых устройствах будет нормально отрисовываться.
  21. 1 балл
    #WAMACO

    TMapView завешивает программу

    Отключите создание маркеров при переключении на другую задачу... При возвращении... продолжайте выставлять!
  22. 1 балл
    Нужно указывать api key а не цифровой id
  23. 1 балл
    dnekrasov

    Таймер в сервисе

    В архиве - простенький проект. Протестирован на Win и OSX. TimerThreadDemo.zip
  24. 1 балл
    Ссылка: http://yaroslavbrovin.ru/new-approach-of-development-of-firemonkey-control-control-model-presentation-part-2-tedit-with-autocomplete-ru/ Автор: Ярослав Бровин 2 часть статьи о новом подходе разработки визуальных компонентов в FireMonkey. Содерит практическую часть по созданию своего представления. В качестве примера, добавляется функция автозавершения ввода для стандатного компонента TEdit.
  25. 1 балл
    Дениска

    Как корректно завершить приложение?

    Я решил это 2 способами!! Закрытие приложения по кнопке "Home": нужно в "...\iOSDevice\Release\myapp.info.plist" после строки "<string>ResourceRules.plist</string>" добавить строку "<key>UIApplicationExitsOnSuspend</key><true/>". Закрытие приложения по кнопке из приложения: procedure TForm1.Button1Click(Sender: TObject); begin Halt(0); //аварийное завершение end; Удачи =)
Эта таблица лидеров рассчитана в Москва/GMT+03:00