![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Delphi XE4, библиотека Data.DBXJSON, собственно код:
Код:
procedure TForm1.FormDblClick(Sender: TObject);
var i: Word;
jsonDB, jBuf: TJSONObject; arrBuf: TJSONArray;
buf: TStringList;
begin
arrBuf:= TJSONArray.Create;
for i:= 0 to grdParts.RowCount -1 do
begin
jBuf:= TJSONObject.Create;
jBuf.AddPair('name', grdParts.Cells[0,i]); //grdParts: TStringGrid
jBuf.AddPair('size', grdParts.Cells[1,i]);
arrBuf.AddElement(jBuf);
end;
jsonDB.Create(TJSONPair.Create('parts', arrBuf));
buf:= TStringList.Create;
buf.Text:= jsonDB.ToString;
jsonDB.Free;
buf.SaveToFile('DB_save.json');
buf.Free;
end;Самое странное что аналогичный код в пробном проекте работает нормально: Код:
procedure TForm1.FormDblClick(Sender: TObject);
var i, j: Integer; buf: TJSONObject; arrBuf: TJSONArray; s: string;
begin
arrBuf:= TJSONArray.Create;
MyJSON:= TJSONObject.Create; //глобально
for i := 0 to StringGrid1.RowCount - 1 do
begin
buf:= TJSONObject.Create;
for j := 1 to StringGrid1.ColCount - 1 do
begin
buf.AddPair('opt'+IntToStr(j),TJSONNumber.Create(StringGrid1.Cells[j,i]));
end;
arrBuf.AddElement(TJSONObject.Create(TJSONPair.Create(StringGrid1.Cells[0,i],buf)));
end;
MyJSON.AddPair('Фигня',arrBuf);
MyList.Text:= MyJSON.ToString;
MyJSON.Free;
MyList.SaveToFile('000.json'); {}
end; |
|
#2
|
||||
|
||||
|
Всем большое спасибо за ответы.
Проблема решилась(???) сменой платформы на Win64. Впрочем такое решение мне не очень то нравится, совершенно не понятно в чем же была причина и не появится ли эта проблема снова при увеличении количества записей. Подозреваю что Data.DBXJSON еще сырая, по сравнению с System.DBXJSON в 10.3 "Rio" Последний раз редактировалось Помидоркин, 05.07.2022 в 10:36. |
|
#3
|
|||
|
|||
|
Очень похоже, что действительно сырая.
Особенно с учетом того, что, вроде, видел в списке фиксов в патчах что-то об этом. А тебе именно из DBXJSON нужно? В доке, вроде, основным указан модуль System.JSON. Попробуй его... |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Помидоркин (06.07.2022)
| ||
|
#4
|
||||
|
||||
|
То-то и оно что в System DBXJSON перенесли только с 10.3 Rio, может чуть раньше, но в XE4 он точно в Data. Ну и ясен пень переносом дело не ограничивалось, у меня, например, нету форматирования, а в System.DBXJSON оно есть.
Впрочем уже не важно, вроде с SuperObject разобрался, буду на нем делать. |
|
#5
|
|||
|
|||
|
Хм...
Вообще, по моему опыту, лучше проапгрейдиться до 10.3, а лучше до 10.4. Вроде самые стабильные и максимально безбажные на данный момент. 11-ю сам еще не пробовал, тут сказать ничего не могу... |