Kodunuzdaki hata, ilgili fonksiyonun doğrudan bir metin (String) yerine bir veri seti nesnesi (DataSet) beklemesinden ve JSON verilerinde standart dışı olan tek tırnak kullanılmasından kaynaklanmaktadır. Bu sorunu çözmek için JSON içeriğini oluştururken tek tırnakları çift tırnak (
metodu ile uygun veri seti formatına dönüştürmelisiniz.Düzeltilmiş halini aşağıya ekliyorum.
Var
anaForm : TclForm;
edtUrunAdi, edtAdet : TclEdit;
lblUrunAdi, lblAdet : TclLabel;
btnEkle : TclButton;
stokListesi : TclListView;
tumUrunlerJson : String;
void UrunEkle;
Var
yeniUrunJson : String;
{
if ((edtUrunAdi.Text == '') || (edtAdet.Text == ''))
{
ShowMessage('Lütfen Ürün Adı ve Adet alanlarını doldurun!');
exit;
}
// DÜZELTME: QuotedStr yerine JSON standardı olan Çift Tırnak (") kullanıyoruz.
yeniUrunJson = '{"MAIN_TEXT":"' + edtUrunAdi.Text + '", "SUB_TEXT":"' + edtAdet.Text + '"}';
if (tumUrunlerJson <> '')
{
tumUrunlerJson = tumUrunlerJson + ',';
}
tumUrunlerJson = tumUrunlerJson + yeniUrunJson;
// DÜZELTME: Oluşturduğumuz JSON stringini doğrudan vermek yerine DataSet'e çeviriyoruz.
stokListesi.clLoadListViewDataFromDataset(Clomosy.ClDataSetFromJSON('[' + tumUrunlerJson + ']'));
edtUrunAdi.Text = '';
edtAdet.Text = '';
}
{
anaForm = TclForm.Create(Self);
tumUrunlerJson = '';
lblUrunAdi = anaForm.AddNewLabel(anaForm, 'lblUrunAdi', 'Ürün Adı:');
lblUrunAdi.Align = alTop;
lblUrunAdi.Margins.Top = 10;
edtUrunAdi = anaForm.AddNewEdit(anaForm, 'edtUrunAdi', 'Ürün adı giriniz...');
edtUrunAdi.Align = alTop;
lblAdet = anaForm.AddNewLabel(anaForm, 'lblAdet', 'Stok Adedi:');
lblAdet.Align = alTop;
lblAdet.Margins.Top = 10;
edtAdet = anaForm.AddNewEdit(anaForm, 'edtAdet', 'Adet giriniz...');
edtAdet.Align = alTop;
btnEkle = anaForm.AddNewButton(anaForm, 'btnEkle', 'Listeye Ürün Ekle');
btnEkle.Align = alTop;
btnEkle.Margins.Top = 15;
anaForm.AddNewEvent(btnEkle, TbeOnClick, 'UrunEkle');
stokListesi = anaForm.AddNewListView(anaForm, 'stokListesi');
stokListesi.Align = alClient;
stokListesi.Margins.Top = 20;
anaForm.Run;
}