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

rareMax

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

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

  • Посещение

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

    35

Сообщения, опубликованные rareMax

  1. Нужно сериализовать объект. Проблема в том, что бы поля, значения которых nil - нужно вообще исключить из итогового JSON. Использую System.Json.Serializers. Пробовал сделать это через свой IJsonContractResolver - но там я не смог проверить значение. Знаю что можно свой конвертер для каждого типа написать - но это довольно объемная работа получится. Есть ли у вас варианты, как можно решить мой вопрос?

    JSON-Serialize-Experiments/IgnoreIfNil.dpr at main · ms301/JSON-Serialize-Experiments (github.com)

  2. В Рад Студио 10.4 (После 2 патча) перестал компилироваться проект. 

    Ошибка: [dcc32 Error] TelegramBotApi.Client.pas(85): E2512 Type parameter 'TArgument' must be a non-nullable value type.

    Метод в котором появляется ошибка:

    function TTelegramBotApi.ForwardMessage(AForwardMessageArgument: TtgForwardMessageArgument): ItgResponse<TtgMessage>;
    begin
      Result := InternalExecute<TtgForwardMessageArgument, TtgMessage>(AForwardMessageArgument);
    end;

    Хейдер метода InternalExecute:

    protected
        function InternalExecute<TArgument: record; TResult: class>(AArgument: TArgument): ItgResponse<TResult>;

     

    В 10.4 без патчей - ошибки не было. Есть идеи как заставить компилировать проект?

  3. 21 минуту назад, x11 сказал:
    а для отправки сообщения от бота - пользователю Телеграма, нужны какие-то специфические ключи?
    или перед отправкой я должен что-то выполнить?
     
    выполняю:
    
    TelegramBot1.SendMessage(UserLink, edMsgText.Text);

     

     
    получаю: (401) Unauthorized: wrong token specified

     

    Токен указан?

     

  4. 2 минуты назад, x11 сказал:

    По идее, OnUpdates в любом случае должно срабатывать, даже если приходит одно сообщение. Только там будет количество = 1. Я так понимаю, что у вас запрограммировано только есть > 1?

    procedure TTgBotUpdateParser.EventParser(AUpdates: TArray<ItgUpdate>);
    var
      LUpdate: ItgUpdate;
    begin
      DoOnUpdates(AUpdates); // Вызывает OnUpdates
      for LUpdate in AUpdates do // Перебираем массив
      begin
        DoOnUpdate(LUpdate); // Вызываем OnUpdates
        TypeUpdate(LUpdate); // Определяем тип обновления и вызываем соответствующее событие
      end;
    end;

     

  5. 6 минут назад, x11 сказал:

    Я понимаю твой сарказм :) но... есть 2 события у TtgRecieverUI: OnUpdate и OnUpdates.

    про "Получение обновлений" читал: https://tlgrm.ru/docs/bots/api#getting-updates

    но я спрашивал именно про TtgRecieverUI. Когда в канал кто-то пишет сообщение, то у TtgRecieverUI срабатывает OnUpdate, где и можно получить сообщение и др. информацию. Тогда для чего событие OnUpdates, которое не срабатывает при входящем сообщении? Когда оно срабатывает? Ведь у библиотеки пока нет документации, поэтому твой сарказм не уместен сейчас по крайней мере :)

    Боту могут много человек одновременно писать. Для этого от сервера возвращается не один объект Update, а массив таких объектов. 

    Событие OnUpdates - возвращает скоп таких обновлений. Событие OnUpdate - перебирает массив и вызывается для каждого элемента(массива)

    Для чего: OnUpdate - тебе не придется запускать цикл, ты работаешь напрямую с объектом. OnUpdates - был случай, когда необходимо было этот массив событий отправить в TParallel.For. Раз понадобился мне - возможно и вам понадобится. 

  6.  

    5 часов назад, x11 сказал:

    dcc32 Error] Unit1.pas(33): E2003 Undeclared identifier: 'ItgUpdate'

    Пропущен тип Telegapi.types или типа того. 

    5 часов назад, x11 сказал:

     

    я готов, но Вы же молчите...

    Вроде писал, что оперативная поддержка в телеграм-чате осуществляется. А на сайте я не постоянно нахожусь.

    10 часов назад, x11 сказал:

    Т.е. CrossURL теперь не нужно устанавливать?

    Да

    12 часов назад, kami сказал:

    А можно тогда запушить последнее изменение на гитхабе в Readme.md, чтобы всем было видно "ПРОЕКТ ПЕРЕЕХАЛ" ? :)

    Ты прав, в ближайшее время напишу.

     

    9 часов назад, x11 сказал:

    Инструкции по установке всё равно нет.

    Какие папки добавлять в lib path? И т.д.

    Screenshot_2018-10-15-20-49-46-142_org.telegram.messenger.thumb.png.4a48037d7791daab844ce6e9578cdd9c.png

    Максим Сысоев?:
    Все еще бета версия. Не стоит меня винить, если в продакшене пойдет что-либо не так библиотекой!
    ⚙️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

  7. Мне очень неудобно, что я не обновил статью. На самом деле с этой библиотекой произошло очень много изменений с проектом:

    - переехал на битБакет: https://bitbucket.org/RareGods/cloudapi/src/master/

    -  теперь там не только работа с телеграмом, но и другие сервисы

    -  после выхода Delphi CE позволил себе вырезать работу с сетевыми библиотеками, отличными от System.Net. 

    - пофиксил больше багов чем добавил.

     

    На вскидку это все. На вопросы оперативно отвечаем в телеграм-чате : @CloudAPI. 

  8. Только что, WebPuper сказал:

    Его можно использовать только в связке с NetHTTPRequest  или можно отдельно?   Для чего тогда NetHTTPRequest ?

    Лично я его использую как самостоятельный класс, проблем не замечал за ним. Таймаут тоже работает

  9. Помимо свойства Align используйте TLayout для группировки компонентов. Приложите простую демку - и возможно вам покажут как сделать пропорциональное изменение дизайна. 

    Еще обратите внимание на компонент TScaledLayout - он изменяет размеры всех дочерних контролов пропорционально изменению своих размеров

  10. 4 минуты назад, Superator сказал:

    Здравствуйте! Столкнулся с такой проблемой при отладке мультиплатформенного приложения. В windows функция преобразования с двоичного в десятичное работает корректно, а на андроиде дает неверный результат. Протестировал на мобильнике и планшете. Версия андроид 5.1.1

    Например в windows двоичное число 1110 дает верный результат 14, а на android неверный  результат 12.

    Пример функции:

    
    function BinToInt(Value: string): Integer;
    var
      i, iValueSize: Integer;
    begin
      Result := 0;
      iValueSize := Length(Value);
      for i := iValueSize downto 1 do
        if Value[i] = '1' then
          Result := Result + (1 shl (iValueSize - i));
    end;

     

    {$ZEROBASEDSTRING ON} и работай с учётом что строка с 0 начинается.

     

    Либо юзай хелперы

  11. 1 минуту назад, Вадим Смоленский сказал:

    Пытаясь разобраться с проблемой размещения файлов в UWP-приложениях, пришел к необходимости создать в своем коде объект класса ApplicationData. Этот класс описан на соответствующей странице майкрософтовской документации, где в самом начале обозначено следующее:

    Namespace:  Windows.Storage

    Assemblies:  Windows.Storage.dll, Windows.dll

    Юнита с именем Windows.Storage или Winapi.Windows.Storage я в поставке Delphi не наблюдаю. Неудивительно, что попытки вставить соответствующие идентификаторы в раздел uses ни к чему не ведут. Как в таких случаях поступают? Откуда берут необходимое?

    Думаю стоит глянуть на длл"ки, идущие в .net framwork

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