|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
|  | 
| 
			 
			#1  
			
			
			
			
		 | ||||
| 
 | ||||
|  JSON "out of memory" при попытке добавить вторую пару 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-ю сам еще не пробовал, тут сказать ничего не могу... |