Iam имеет строку Grid, поля в первой строке относятся к CSV, а во второй строке - имена столбцов из таблицы в базе данных.Delphi сохраняет данные в StringGrid для Json-файла
Теперь после того, как нажать на кнопку Сохранить БТН он должен создать мне JSon файл, как показано ниже
{
"GHARGA": "GHARGA",
"SELLINGPRICE1": "SELLPRICE1",
"SELLPRICE2": "SELLPRICE2",
"SELLPRICE3": "SELLPRICE3",
"PCODE": "PCODE"
}
Я попытался это так:
procedure TfrmMapping.btnsaveClick(Sender: TObject);
var
Dat1: TStringList;
i: Integer;
lJsonObj: TJSONObject;
begin
lJsonObj := TJSONObject.Create;
Dat1 := TStringList.Create;
if btnsave.Caption = 'Save' then
begin
for i := 0 to StrGrdCsv.RowCount - 1 do
begin
Dat1.AddStrings(StrGrdCsv.Rows[i]);
end;
for i := Dat1.Count - 1 Downto StrGrdCsv.ColCount do
begin
lJsonObj.AddPair(TJSONPair.Create(TJSONString.Create(Dat1.Strings[i]),
TJSONString.Create(Dat1.Strings[i])));
end;
TFile.WriteAllText(cmbBXDBTables.Text + '.json', lJsonObj.ToString);
btnsave.Caption := 'Load Data';
end;
end;
но это создает как
{
"GHARGA": "GHARGA",
"SELLPRICE1": "SELLPRICE1",
"SELLPRICE2": "SELLPRICE2",
"SELLPRICE3": "SELLPRICE3",
"PCODE": "PCODE"
}
Вы прочитали код? Посмотрите, что вы переходите в AddPair. В любом случае вам не нужен список строк temp. Это вас просто сбивает с толку. Прочтите данные непосредственно из сетки строк. –
@DavidHeffernan, я зачитал код, вы говорите, чтобы изменить оператор как 'lJsonObj.AddPair (TJSONPair.Create (TJSONString.Create (StrGrdCsv.Rows [1] .ToString), TJSONString.Create (StrGrdCsv.Rows [2] .ToString))); ' – userhi
Вы, кажется, зациклились на свойстве Rows. Вы можете читать отдельные ячейки. И индексирование основано на нуле. –