-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
265
Активность репутации
-
Равиль Зарипов (ZuBy) отреагировална Rusland в Как вытащить список из JSON со значениями
Ааа, дошло )
xJS := SO('{"data":' + aJSON + '}');
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Как вытащить список из JSON со значениями
если внимательно посмотрели пример, то я её сам добавил. в этом нет ничего сложного
-
Равиль Зарипов (ZuBy) отреагировална rareMax в Маршалинг/ДеМаршалинг в System.JSON
Вот я, например, работаю с ТелеграмБот АПИ. У него есть свои типы данных(если их так можно назвать).
К примеру тип User
Когда вы запрашиваете какую то инфу с участием этого типа вам придет JSON с такими данными(в моем примере getMe):
В "result" будет как раз этот тип "User". Что бы не парсить отдельно каждое поле я создал аналогичный класс в делфи:
TTelegaUser = Class private FID: Integer; FFirstName: String; FLastName: String; FUsername: String; published /// <summary> /// Unique identifier for this user or bot /// </summary> /// <returns></returns> [ALIAS('id')] property ID: Integer read FID write FID; /// <summary> /// User‘s or bot’s first name /// </summary> [ALIAS('first_name')] property FirstName: String read FFirstName write FFirstName; /// <summary> /// Optional. User‘s or bot’s last name /// </summary> [ALIAS('last_name')] property LastName: String read FLastName write FLastName; /// <summary> /// Optional. User‘s or bot’s username /// </summary> [ALIAS('username')] property Username: String read FUsername write FUsername; End; И теперь могу заполнить данными с моего запроса приблизительно так*:
FtelegUser := TTelegaUser.FromJSON(content); * - На самом деле у меня чуть подругому.
* - При условии что в "content" у вас будет приблизительно такое содержание:
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Требуется помощь в технологиях
нет другого способа, да и проблем нет никаких. сохранил-отправил-удалил
а сохранять можно в Temppath или DocumentsPath
-
Равиль Зарипов (ZuBy) получил реакцию от bigjorj в Диалоговое окно на Андроид.
krapotkin выкладывал когда-то MyDialogs
Изменения от меня:
Переписан код, удалены лишние компоненты Подогнал под стандартные диалоги платформ Смена позиции кнопок "Oк", "Отмена" в зависимости от платформы Профиксил MaxLength для TEdit (при установке ограничении ввода символов для мобильных платформ) Возможность использования анонимных методов (TThreadProcedure) MyDialogs_ZuBy.7z
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Диалоговое окно на Андроид.
krapotkin выкладывал когда-то MyDialogs
Изменения от меня:
Переписан код, удалены лишние компоненты Подогнал под стандартные диалоги платформ Смена позиции кнопок "Oк", "Отмена" в зависимости от платформы Профиксил MaxLength для TEdit (при установке ограничении ввода символов для мобильных платформ) Возможность использования анонимных методов (TThreadProcedure) MyDialogs_ZuBy.7z
-
Равиль Зарипов (ZuBy) отреагировална enatechno в Cancel в InputQuery
и не только...
What's New - Berlin:
Simplified Dialog API
Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
that provide support for synchronous and asynchronous dialog boxes, respectively.
The following table summarizes the API changes:
Deprecated Members
New Members
FMX.Dialogs.ShowMessage*
FMX.Dialogs.ShowMessageFmt*
FMX.Dialogs.ShowMessagePos
ShowMessageAsync
ShowMessageSync
FMX.Dialogs.MessageDlg
FMX.Dialogs.MessageDlgPos
FMX.Dialogs.MessageDlgPosHelp
FMX.Platform.IFMXDialogService.MessageDialog
MessageDialogAsync
MessageDialogSync
FMX.Dialogs.InputBox
FMX.Dialogs.InputQuery
FMX.Platform.IFMXDialogService.InputQuery
InputQueryAsync
InputQuerySync
* ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
or ShowMessageSync instead nonetheless.
Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
classes provide class methods and functions that allow you to call the new procedures and functions for dialog
boxes without the need of an instance of the corresponding dialog box platform service.
Other FireMonkey
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Генерация QR-кода на Android
немного неправильно сделали, вот так:
procedure TfmMainQRShare.ImageQRPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var Row, Column: Integer; xPos, yPos, RectSize: Single; pixelColor: TAlphaColor; Img: TImage; begin Img := (Sender as TImage); if Assigned(QRCode) and (not QRCode.Data.IsEmpty) then begin RectSize := Min(Img.Width, Img.Height) / QRCode.Columns; if RectSize > 0 then begin try Canvas.BeginScene; for Row := 0 to QRCode.Rows - 1 do begin for Column := 0 to QRCode.Columns - 1 do begin if (QRCode.IsBlack[Row, Column]) then pixelColor := TAlphaColors.Black else pixelColor := TAlphaColors.White; xPos := Column * RectSize + 0.5 * RectSize; yPos := Row * RectSize + 0.5 * RectSize; Canvas.Fill.Color := pixelColor; Canvas.FillRect(RectF(xPos, yPos, xPos + (RectSize + 1), yPos + (RectSize + 1)), 0, 0, AllCorners, 1); end; end; finally Canvas.EndScene; end; end; Img.Bitmap.SetSize(Canvas.Width, Canvas.Height); Img.Bitmap.Assign(Canvas.Bitmap); end; end; procedure TfmMainQRShare.Update; begin QRCode.Free; QRCode := TDelphiZXingQRCode.Create; QRCode.Data := edtText.Text; QRCode.Encoding := TQRCodeEncoding(cmbEncoding.ItemIndex); QRCode.QuietZone := StrToIntDef(edtQuietZone.Text, 2); QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns); ImageQR.Repaint; end; но проблема в другом, проблема в самом модуле, он не правильно работает со строками
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Генерация QR-кода на Android
похоже на правду, но сейчас нет времени проверить. думаю Pax Beach примет это к сведению
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Генерация QR-кода на Android
я про это в курсе, но тогда на Windows отвалится. я не проверял, но в коде видел циклы со строками начинающиеся с 1
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Генерация QR-кода на Android
могу подсказать в какую сторону копать. строки в ANDROID/IOS начинаются с 0, а там не заметил чтобы это учитывалось.
Если сделаете, выложите. Всем будет полезно
-
Равиль Зарипов (ZuBy) получил реакцию от Pax Beach в Генерация QR-кода на Android
могу подсказать в какую сторону копать. строки в ANDROID/IOS начинаются с 0, а там не заметил чтобы это учитывалось.
Если сделаете, выложите. Всем будет полезно
-
Равиль Зарипов (ZuBy) отреагировална zairkz в Как вытащить список из JSON со значениями
Кроме того, проверьте стандартную библиотеку System.JSON на утечку памяти (ReportMemoryLeak), каждый раз TJSONvalue надо освобождать и уничтожать.
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Как вытащить список из JSON со значениями
AV выходит только при не правильной JSON структуре. А остальные данные можно не проверять, на существование. Он сам съест ошибку и вернет пустоту.
а если учесть что данные идут от сервера (в данной теме) нужно всего ишь проверить правильность начальных символов.
дело в кол-ве строчек, а в количестве символов и в понимании работы с JSON
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Как вытащить список из JSON со значениями
я всеже предложу вам посмотреть реализацию через XSO
там реализован правильный фильтр
JSONParse.zip
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Как вытащить список из JSON со значениями
Я отказался от родного в пользу XSO, посмотрите как компактно выглядет код который я привел выше. И стабильно и читабельно, скорость тоже на высоте
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Генерация QR-кода на Android
Я вижу решение таким, реализуйте.
Каждый пиксель нужно отрисовать примерно 4 раза, тогда квадрат будет не 1х1, а 4х4. Картинка станет четкой т.к. увеличится холст
-
Равиль Зарипов (ZuBy) отреагировална krapotkin в Маршалинг/ДеМаршалинг в System.JSON
угу, посмотрел, раньше вроде не было этого
я думаю, это просто лень ему было написать тип PtrInt и еще парочку
надо написать автору на гитхабе, он быстро исправляет ошибки
-
Равиль Зарипов (ZuBy) отреагировална Rusland в Как вытащить список из JSON со значениями
Не согласен, тут просто нужно запомнить что:
A - Array
I - Integer
S - String
B - Boolean
и т.д.
Очень даже просто и логично )
-
Равиль Зарипов (ZuBy) получил реакцию от M1shQa в Как вытащить список из JSON со значениями
Я отказался от родного в пользу XSO, посмотрите как компактно выглядет код который я привел выше. И стабильно и читабельно, скорость тоже на высоте
-
Равиль Зарипов (ZuBy) получил реакцию от M1shQa в Как вытащить список из JSON со значениями
если использовать XSuperObject
var aJSON: string; xJS, xObj: ISuperObject; j: integer; begin xJS := SO(aJSON); // данные with xJS.A['data'] do // имя массива begin for j := 0 to length - 1 do begin xObj := O[j]; TStringList.Add(xObj.S['number']); // собираем в стринг лист нужное поле end; end; end;
-
Равиль Зарипов (ZuBy) получил реакцию от #WAMACO в Генерация QR-кода на Android
Я вижу решение таким, реализуйте.
Каждый пиксель нужно отрисовать примерно 4 раза, тогда квадрат будет не 1х1, а 4х4. Картинка станет четкой т.к. увеличится холст
-
Равиль Зарипов (ZuBy) отреагировална Rusland в RAD 11 на подходе?
Не-не-не, поддержка Linux и Intel Atom будет не раньше версии "Delphi 99.9 Uhta"
-
Равиль Зарипов (ZuBy) получил реакцию от Pax Beach в Определение включена ли на устройстве возможность применять mock location
посмотрите эту тему
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Как вытащить список из JSON со значениями
если использовать XSuperObject
var aJSON: string; xJS, xObj: ISuperObject; j: integer; begin xJS := SO(aJSON); // данные with xJS.A['data'] do // имя массива begin for j := 0 to length - 1 do begin xObj := O[j]; TStringList.Add(xObj.S['number']); // собираем в стринг лист нужное поле end; end; end;