Sayfayı Yazdır | Pencereyi Kapat

kod hata

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1543
Tarih: 18 Mayıs 2026 Saat 18:33
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: kod hata
Mesajı Yazan: Selimbeyo
Konu: kod hata
Mesaj Tarihi: 18 Mayıs 2026 Saat 15:23
merhabalar kodumda hata var ve sorunu çözemiyorum. https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
kod kısmen çalışıyor ama ürün adı ve adet girip ekle butonuna tıklayınca hata veriyor (hata ve kod aşağıda):

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;
  }
  
  yeniUrunJson = '{"MAIN_TEXT":' + QuotedStr(edtUrunAdi.Text) + ', "SUB_TEXT":' + QuotedStr(edtAdet.Text) + '}';
  
  if (tumUrunlerJson <> '')
  {
    tumUrunlerJson = tumUrunlerJson + ',';
  }
  
  tumUrunlerJson = tumUrunlerJson + yeniUrunJson;

  stokListesi.clLoadListViewDataFromDataset('[' + 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;
}

---------------------------
Error
---------------------------
RUNTIME ERROR

File library Main: Could not convert variant of type (UnicodeString) into type (Integer) when evaluating instruction CallProc ($FFFFFFFF,$1,$AB3684,$1D004B60,'clLoadListViewDataFromDataset').

Stack content is: [UnicodeString:{"MAIN_TEXT":'a', "SUB_TEXT":'2'},Integer:89926048,Integer:551129392,Integer:142607840...].

Source position: 28,72

Position: 28, 72.
---------------------------
Tamam   
---------------------------




Cevaplar:
Mesajı Yazan: Nevra Nur
Mesaj Tarihi: 18 Mayıs 2026 Saat 15:36
Merhabalar,
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 (") ile değiştirmeli ve metni listeye eklemeden önce Clomosy.ClDataSetFromJSON 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;
}




Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net