-
Постов
553 -
Зарегистрирован
-
Посещение
-
Победитель дней
35
Сообщения, опубликованные rareMax
-
-
В Рад Студио 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 без патчей - ошибки не было. Есть идеи как заставить компилировать проект?
-
В 05.06.2019 в 11:26, Oleh Mokrii сказал:
Подскажите пожалуйста в чем может быть проблема?
[dcc32 Error] Unit2.pas(39): E2361 Cannot access private symbol TtgUserLink.ID
покажи как используешь
-
напрямую боту писал? бот может общаться с пользователем только после того как пользователь отправит команду /start боту
-
21 минуту назад, x11 сказал:а для отправки сообщения от бота - пользователю Телеграма, нужны какие-то специфические ключи?или перед отправкой я должен что-то выполнить?выполняю:
TelegramBot1.SendMessage(UserLink, edMsgText.Text);
получаю: (401) Unauthorized: wrong token specifiedТокен указан?
-
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;
-
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. Раз понадобился мне - возможно и вам понадобится.
-
В 21.10.2018 в 16:19, x11 сказал:
А сейчас я даже не знаю, чем отличается OnUpdate от OnUpdates.
-
зачем скролл - если нечего скроллить? кинь в скроллбокс компонент, который будет пересекать границу родителя - и будет тебе скролл
-
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? И т.д.
Максим Сысоев:
Все еще бета версия. Не стоит меня винить, если в продакшене пойдет что-либо не так библиотекой!
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 -
Мне очень неудобно, что я не обновил статью. На самом деле с этой библиотекой произошло очень много изменений с проектом:
- переехал на битБакет: https://bitbucket.org/RareGods/cloudapi/src/master/
- теперь там не только работа с телеграмом, но и другие сервисы
- после выхода Delphi CE позволил себе вырезать работу с сетевыми библиотеками, отличными от System.Net.
- пофиксил больше багов чем добавил.
На вскидку это все. На вопросы оперативно отвечаем в телеграм-чате : @CloudAPI.
-
Только что, WebPuper сказал:
Его можно использовать только в связке с NetHTTPRequest или можно отдельно? Для чего тогда NetHTTPRequest ?
Лично я его использую как самостоятельный класс, проблем не замечал за ним. Таймаут тоже работает
-
System.Net.HttpClient.THttpClient попробуй
-
-
Помимо свойства Align используйте TLayout для группировки компонентов. Приложите простую демку - и возможно вам покажут как сделать пропорциональное изменение дизайна.
Еще обратите внимание на компонент TScaledLayout - он изменяет размеры всех дочерних контролов пропорционально изменению своих размеров
-
никто не говорил что будет просто
19 минут назад, petyaas сказал:Да но ссылка на этот файл меняется. Если не получается скачать надо достать новую ссылку
-
-
Как насчёт хейдеров?
-
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 начинается.
Либо юзай хелперы
-
думаю он их вручную отрисовует, не в мемо.
-
-
cuHttpClientSysNet1.Proxy:=TcuProxy.Create(EditHost.Text, EditPort.Value, EditUserName.Text, EditPassword.Text);
попробуй так
-
C:\Windows\System32\windows.storage.dll
-
1 минуту назад, Вадим Смоленский сказал:
Пытаясь разобраться с проблемой размещения файлов в UWP-приложениях, пришел к необходимости создать в своем коде объект класса ApplicationData. Этот класс описан на соответствующей странице майкрософтовской документации, где в самом начале обозначено следующее:
Namespace: Windows.Storage
Assemblies: Windows.Storage.dll, Windows.dll
Юнита с именем Windows.Storage или Winapi.Windows.Storage я в поставке Delphi не наблюдаю. Неудивительно, что попытки вставить соответствующие идентификаторы в раздел uses ни к чему не ведут. Как в таких случаях поступают? Откуда берут необходимое?
Думаю стоит глянуть на длл"ки, идущие в .net framwork
-
У класса нет метода Terminated (какой вопрос - такой ответ)
Исключить поля, значения которых = nil
в JSON
Опубликовано · Изменено пользователем rareMax
Нужно сериализовать объект. Проблема в том, что бы поля, значения которых nil - нужно вообще исключить из итогового JSON. Использую System.Json.Serializers. Пробовал сделать это через свой IJsonContractResolver - но там я не смог проверить значение. Знаю что можно свой конвертер для каждого типа написать - но это довольно объемная работа получится. Есть ли у вас варианты, как можно решить мой вопрос?
JSON-Serialize-Experiments/IgnoreIfNil.dpr at main · ms301/JSON-Serialize-Experiments (github.com)