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

x11

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

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

  • Посещение

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

    13

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

  1. Thanks
    x11 получил реакцию от Саша в Проблема с Android Service   
    Нет, у меня файл Androidapi.JNI.Toast.pas
     
  2. Confused
    x11 получил реакцию от Новый пользователь в Это приложение было создано для более ранней версии Android   
    Поставить галочку и нажать Скачать
  3. Like
    x11 получил реакцию от Ingalime в XSuperObject   
    Ну вот я использовал библиотеку, которая развивается и что из этого вышло?
    Один и тот же код в разных версиях Дельфи (Rio и Sydney) дает разный результат
     
    procedure TForm1.btnReadArrayClick(Sender: TObject); const sJSon = '{"ID":[0,55,true,false], "ID2":[1,60,false,false]}'; var Iterator: TJSONIterator; Reader: TJsonTextReader; TextReader: TStringReader; begin TextReader := TStringReader.Create(sJSon); Reader := TJsonTextReader.Create(TextReader); Iterator := TJSONIterator.Create(Reader); try while Iterator.Next do begin if Iterator.&Type = TJsonToken.StartArray then if Iterator.Recurse then while Iterator.Next do begin Memo1.Lines.Add('Key: ' + Iterator.Key); Memo1.Lines.Add('Index:' + Iterator.Index.ToString); end; end;//while finally FreeAndNil(TextReader); FreeAndNil(Iterator); FreeAndNil(Reader); end; end; Речь, о встроенной в Дельфи джейсон-библиотеке (Readers and Writers JSON Framework), которая поставляется, начиная с Seatle
    вот здесь есть описание на русском https://webdelphi.ru/2019/03/rabota-s-json-v-delphi-10-3-rio-2/

  4. Like
    x11 получил реакцию от Ingalime в Перехват события звонка   
    да, запретил
  5. Like
    x11 получил реакцию от Ingalime в ListBox, Edit и клавиатура   
    Keep Controls Visible When Virtual Keyboard Pops Up In Delphi
    http://www.fmxexpress.com/keep-controls-visible-when-virtual-keyboard-pops-up-in-delphi-10-2-tokyo-on-android-and-ios/
  6. Like
    x11 получил реакцию от Voron в Что невозможно сделать на Delphi для Android?   
    Минус других языков в том, что в глазах рябит от скобочек и другой пунктуации.
  7. Like
    x11 получил реакцию от Евгений Корепов в Проверить существование TJSONObject   
    В общем, да. Я изначально просто был не прав.
    Вот так правильно:
    var JSONValue: TJSONValue; innerObject: TJSONObject; begin ... .... JSONValue := TJSONObject.ParseJSONValue(.....); if not (JSONValue is TJSONObject) then Continue else innerObject := JSONValue as TJSONObject;  
  8. Like
    x11 отреагировална Slym в Проверить существование TJSONObject   
    Не делайте слепое приведение типов...
     
    var JObj:TJSONObject; begin JObj:=TJSONObject(TJSONObject.ParseJSONValue('0')); try try if assigned(JObj) then JObj.AddPair('Access','violation'); except ShowMessage('Surprise MF!: '+JObj.ClassName); end; finally JObj.Free; end; end; ParseJSONValue возвращает TJSONValue, и необходима или проверка типа или использование только в рамках TJSONValue чего в большинстве случаев вполне достаточно.
  9. Like
    x11 отреагировална Равиль Зарипов (ZuBy) в vkbdhelper - поднятие компонентов над клавиатурой   
    Привет Всем!
     
    vkbdhelper.pas
     
    Давно пользовался vkbdhelper'ом, но он был только для андроида.
    руки добрались и до этого, теперь его можно использовать и на IOS
     
    изменения
    * почистил uses секцию
    * убрал зависимость от платформ (кросс-платформенный)
    * добавил глобальную переменную VKOffset
     
    VKOffset - расстояние между контролом и клавиатурой
                     для тех случаев когда включены подсказки/автозамена
                     и контрол оказывается под доп. панелькой
     
    Не все клавиатуры включают доп. панели в свой размер!
    Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол
    {$IFDEF IOS} VKOffset := 31; {$ELSE} VKOffset := 0; // на свой вкус // не знаю как определить размер доп. панельки // когда она не входит в размер клавиатуры // и определить есть ли панелька вообще... {$ENDIF} vkbdhelper.zip
  10. Thanks
    x11 получил реакцию от Dev в Как добавить «ярлыки приложения» для Android в приложении FMX   
    Может кому пригодится
    https://blog.andreamagni.eu/2019/02/how-to-add-android-app-shortcuts-to-a-fmx-application/

  11. Like
    x11 получил реакцию от Barbanel в Как добавить «ярлыки приложения» для Android в приложении FMX   
    Может кому пригодится
    https://blog.andreamagni.eu/2019/02/how-to-add-android-app-shortcuts-to-a-fmx-application/

  12. Like
    x11 получил реакцию от Tumaso в Как добавить «ярлыки приложения» для Android в приложении FMX   
    Может кому пригодится
    https://blog.andreamagni.eu/2019/02/how-to-add-android-app-shortcuts-to-a-fmx-application/

  13. Like
    x11 получил реакцию от yooSee в OrangeUI   
    В общем, скачал другим способом
    ссылка здесь
     
  14. Like
    x11 получил реакцию от Tarik Live в Toast для Android Service   
    Это не вопрос. Просто подумал, что кому-нибудь может пригодится.
    https://forums.embarcadero.com/thread.jspa?threadID=118465
    Используем 2 файла: Androidapi.JNI.ToastForService.pas + FlyUtils.Android.PostRunnableAndTimer.pas.
    Пример вызова:
    Androidapi.JNI.ToastForService.PostToast('текст сообщения', LongToast); Проверил - работает.
    Есть ещё третий параметр "UseLastToastObj", но я так и не понял, для чего он. Документации нет.
  15. Like
    x11 получил реакцию от Anatoliy в Библиотека Alcinoe для iOS/FMX   
    На просторах sql.ru  нашёл ссылку на приложение kiskis на Delphi/FMX. Что-то типа мессенджер+инстаграм.
    https://youtu.be/WEsEhGfrW-g
    Alcinoe is a library visual and non-visual components for Delphi.
    https://github.com/Zeus64/alcinoe





  16. Like
    x11 получил реакцию от Barbanel в Библиотека Alcinoe для iOS/FMX   
    На просторах sql.ru  нашёл ссылку на приложение kiskis на Delphi/FMX. Что-то типа мессенджер+инстаграм.
    https://youtu.be/WEsEhGfrW-g
    Alcinoe is a library visual and non-visual components for Delphi.
    https://github.com/Zeus64/alcinoe





  17. Like
    x11 получил реакцию от Tumaso в Непонятный LiveBinding Object   
    Я не смотрел проект и буду подсказывать, как.
    Просто напишу, что LiveBinding - тормознутая и глючная технология. Разработчики так и не довели её до ума.
    Если есть возможность, лучше отказаться от LiveBinding.
  18. Thanks
    x11 отреагировална Barbanel в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    Потому что слово "Type" - зарезервированное слово для объявления типов.
  19. Like
    x11 получил реакцию от Anatoliy в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    Разобрался.
    когда бот отправляет личное сообщение пользователю, то нужно заполнять только ID, а когда сообщение в канал, то - имя.
     
    Пользователю: UserLink.ID := StrToIntDef64(edUserId.Text, 0);
    В канал UserLink.Username := edUserName.Text;
     
    Для отправки сообщения в канал можно в качестве ID подставить отрицательное  значение chat_ID, у каналов всегда оно отрицательное.
    Т.е. в любом случае можно всегда заполнять только UserLink.ID
     
    В документации Телеграм этого нет
    https://tlgrm.ru/docs/bots/api#sendmessage
  20. Like
    x11 отреагировална rareMax в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    Боту могут много человек одновременно писать. Для этого от сервера возвращается не один объект Update, а массив таких объектов. 
    Событие OnUpdates - возвращает скоп таких обновлений. Событие OnUpdate - перебирает массив и вызывается для каждого элемента(массива)
    Для чего: OnUpdate - тебе не придется запускать цикл, ты работаешь напрямую с объектом. OnUpdates - был случай, когда необходимо было этот массив событий отправить в TParallel.For. Раз понадобился мне - возможно и вам понадобится. 
  21. Like
    x11 отреагировална rareMax в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    Пропущен тип Telegapi.types или типа того. 
    Вроде писал, что оперативная поддержка в телеграм-чате осуществляется. А на сайте я не постоянно нахожусь.
    Да
    Ты прав, в ближайшее время напишу.
     

    Максим Сысоев?:
    Все еще бета версия. Не стоит меня винить, если в продакшене пойдет что-либо не так библиотекой!
    ⚙️GIT: https://bitbucket.org/RareGods/cloudapi/branch/develop
    ?ZIP: https://bitbucket.org/RareGods/cloudapi/get/develop.zip
    ?Установка: https://bitbucket.org/RareGods/cloudapi/wiki/Установка
    ?Баг-репорт: https://bitbucket.org/RareGods/cloudapi/issues/new. Регистрация необязательна.
    ?Delphi Community Edition: https://www.embarcadero.com/ru/products/delphi/starter (Win32/Win64/iOS/Mac/Android) FREE
  22. Like
    x11 отреагировална rareMax в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    В начале пару новостей: 
    Репозиторий клонируется также на ГитХаб. Можно устанавливать с помощью Delphinus'a Бот калькулятор для Telegram.
    А сейчас мы напишем своего бота, который сможет решать арифметические выражения(и не только).
    Что для этого нужно:
     Telega π - Библиотека для работы с Telegram Bot API в Delphi TeeBI После установки библиотек свыше - создаем новое консольное приложение. Далее создаем новый модуль(unit) и называем его, например, Telegram.Plugin.Calculator
    В этом модуле мы будем писать логику калькулятора, а точнее взаимодействие команд от пользователя и модуля выражений BI.Expression(TeeBI).
    Для наглядности, сразу код модуля:
    unit Telegram.Plugin.Calculator; interface uses TelegAPI.Bot, TelegAPI.Types, TelegAPI.Utils, TelegAPI.Module; Type TTgCalculatorBot = Class(TTgModule) private FIsCommandWait: Boolean; protected procedure OnUpdate(Sender: TObject; Const Update: TtgUpdate); override; End; implementation uses BI.Expression, System.SysUtils; { TTgWelcomeBot } procedure TTgCalculatorBot.OnUpdate(Sender: TObject; const Update: TtgUpdate); var Cmd: TCommandHelper; Procedure Calculation; var TextExpr: String; Begin FIsCommandWait := False; if Cmd.ParamCount = 0 then TextExpr := Update.Message.Text else TextExpr := Cmd.ParamsToString; try (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, TExpression.FromString(TextExpr).Value); except on E: Exception do (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, 'упс, ошибочка вышла: ' + E.ClassName + ' ' + E.Message); end; End; begin Cmd := TCommandHelper.Create(Update.Message.Text); try if Cmd.Command = '/calc' then Begin if Cmd.ParamCount = 0 then Begin FIsCommandWait := true; (Sender as TTelegramBot).sendTextMessage(Update.Message.Chat.ID, 'ожидаю выражение:'); End else Begin Calculation; End; End else if FIsCommandWait then Begin Calculation; End; finally Cmd.Free; end; end; end. Первое на что обращаем внимание -  наш класс TTgCalculatorBot  будет наследоваться от TTgModule, в котором заложен базовый функционал для расширения функционала бота(на данный момент только получение обновлений от сервера).
    В метод OnUpdate будут поставляться обновления, которые приходят от сервера, в нем мы и будем работать. 
    Насчет поля FIsCommandWait. Уж так сложилось - что, как правило, пользователь сразу отправляет боту команду - а потом параметры. Поэтому, если придет поддерживаемая модулем команда - мы устанавливаем это поле в True. Если это поле - правда - значит нужно обработать текст.
    Теперь вернемся к нашему консольному приложению:
    program CalculatorBot; {$APPTYPE CONSOLE} {$R *.res} uses TelegaPi.Bot, TelegaPi.Types, System.SysUtils, Telegram.Plugin.Calculator in 'Telegram.Plugin.Calculator.pas'; Const C_PAUSE_UPDATE = 1000; { 1sec. } Var TelegramBot: TTelegramBot; TelegramCalc: TTgCalculatorBot; Procedure InitRecesive; var Offset: Integer; Updates: TArray<TtgUpdate>; Update: TtgUpdate; Begin Offset := 0; while True do begin Sleep(C_PAUSE_UPDATE); // Update pause Updates := TelegramBot.getUpdates(Offset); // Get updates if Length(Updates) = 0 then Continue; Offset := Updates[High(Updates)].ID + 1; end; End; begin WriteLn('Telegram Calculator Sample'); { Here you Api key } TelegramBot := TTelegramBot.Create({$I ..\telegaToken.inc} ); TelegramCalc := TTgCalculatorBot.Create(TelegramBot); try WriteLn('Bot token: ', TelegramBot.getMe.ID <> -1); InitRecesive; except on E: Exception do WriteLn(E.ClassName, ': ', E.Message); end; TelegramBot.Free; TelegramCalc.Free; end.   TelegramCalc := TTgCalculatorBot.Create(TelegramBot); - во время создания модуля - происходит подписка на сообщения от сервера. Никаких данных программисту передавать не нужно. 
    Далее, что бы консоль сразу же не закрылась - нужно зациклить прием данных от сервера. Пример - в процедуре InitRecesive.
    Что получаем в итоге:

     
    Так же можете сами протестировать бота(если он конечно будет запущен): @test_delphi_api_bot
    Готовый пример: https://bitbucket.org/uasoft/telegapi/src//examples/PluginCalculator/?at=master
  23. Like
    x11 отреагировална rareMax в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    Автор: Максим Сысоев
    Репозиторий: Github
    Связь со мной: Telegram
     
    Telega π - Библиотека для работы с Telegram Bot API в Delphi
    Библиотека для работы с Telegram Bot API
    Зависимости
    RAD Studio CE  CloudAPI Примеры
    Получение Username бота
    program Project5; {$APPTYPE CONSOLE} {$R *.res} uses TelegaPi.Bot, TelegaPi.Types, System.SysUtils; var Telegram: TTelegramBot; begin Telegram := TTelegramBot.Create({$I TokenTelegramBot.inc}); try { TODO -oUser -cConsole Main : Insert code here } Writeln(Telegram.getMe.Username); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; Readln; Telegram.Free; end. Пример автоответчика
    Напишите ему "привет"
    Код: https://gist.github.com/ms301/c7281f443f481115b7643116535e697d  

  24. Thanks
    x11 получил реакцию от Mars M в Toast для Android Service   
    Это не вопрос. Просто подумал, что кому-нибудь может пригодится.
    https://forums.embarcadero.com/thread.jspa?threadID=118465
    Используем 2 файла: Androidapi.JNI.ToastForService.pas + FlyUtils.Android.PostRunnableAndTimer.pas.
    Пример вызова:
    Androidapi.JNI.ToastForService.PostToast('текст сообщения', LongToast); Проверил - работает.
    Есть ещё третий параметр "UseLastToastObj", но я так и не понял, для чего он. Документации нет.
  25. Like
    x11 получил реакцию от Anatoliy в Prototyping: from Vision to UX Design - FMX Stencils - Free Tool   
    FireMonkey (FMX) Stencils - Free Tool
    Design Beautiful Apps for RAD Studio, Delphi, and C++Builder
     
    https://community.embarcadero.com/blogs/entry/prototyping-from-vision-to-ux-design
    https://www.embarcadero.com/free-tools/firemonkey-stencils
     

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