Sayfayı Yazdır | Pencereyi Kapat

null hatası

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=1151
Tarih: 30 Temmuz 2025 Saat 21:52
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: null hatası
Mesajı Yazan: dilarayaprak
Konu: null hatası
Mesaj Tarihi: 29 Temmuz 2025 Saat 17:42
sql ile listeden kelime alıp eşleştirme oyunu yapmaya çalısıyorum ama create kısmı null döndürüyor, ne yazıcağımı bilemedim yardımcı olur musunuz teşekkürler şimdidenn

var
  matchForm: TclForm;
  pnlEnglish, pnlTurkish: TclProPanel;
  selectedEnglish, selectedTurkish: String;
  lblSelectedEnglish, lblSelectedTurkish: TclProLabel;
  lblEN, lblTR: TclProLabel;
  englishList, turkishList, karisikTurkish, usedIndexes: TStringList;
  id, correctMatch: String;
  i, index: Integer;

void EnglishClicked;
{
  lblSelectedEnglish = TclProLabel(matchForm.ClSender);
  selectedEnglish = lblSelectedEnglish.Caption;
  lblSelectedEnglish.ClProSettings.BorderColor = clAlphaColor.clBlue;
  lblSelectedEnglish.SetclProSettings(lblSelectedEnglish.ClProSettings);
}

void TurkishClicked;
{
  lblSelectedTurkish = TclProLabel(matchForm.ClSender);
  selectedTurkish = lblSelectedTurkish.Caption;
  lblSelectedTurkish.ClProSettings.BorderColor = clAlphaColor.clGreen;
  lblSelectedTurkish.SetclProSettings(lblSelectedTurkish.ClProSettings);

  Clomosy.DBSQLiteQuery.Close;
  Clomosy.DBSQLiteQuery.SQL.Text = 'SELECT turkish FROM kartlar WHERE english = ' + QuotedStr(selectedEnglish);
  Clomosy.DBSQLiteQuery.OpenOrExecute;

  if not Clomosy.DBSQLiteQuery.Eof {
    correctMatch = Clomosy.DBSQLiteQuery.FieldByName('turkish').AsString;

    if (correctMatch == selectedTurkish) {
      ShowMessage('✅ Doğru Eşleşme!');
      lblSelectedEnglish.Enabled = False;
      lblSelectedTurkish.Enabled = False;
    } else {
      ShowMessage('❌ Yanlış eşleştirme.');
    }
  }

  lblSelectedEnglish.ClProSettings.BorderColor = clAlphaColor.clBlack;
  lblSelectedTurkish.ClProSettings.BorderColor = clAlphaColor.clBlack;
  lblSelectedEnglish.SetclProSettings(lblSelectedEnglish.ClProSettings);
  lblSelectedTurkish.SetclProSettings(lblSelectedTurkish.ClProSettings);
}

{
  matchForm = TclForm.Create(Self);
  matchForm.clSetCaption('Eşleştirme Oyunu');
  matchForm.SetFormBGImage('https://i.imgur.com/fPwWs0H.jpeg');

  pnlEnglish = matchForm.AddNewProPanel(matchForm, 'pnlEnglish');
  pnlEnglish.Align = alLeft;
  pnlEnglish.Width = 180;

  pnlTurkish = matchForm.AddNewProPanel(matchForm, 'pnlTurkish');
  pnlTurkish.Align = alRight;
  pnlTurkish.Width = 180;

  SmileenglishList = TStringList.Create('');
  turkishList = TStringList.Create('');
  karisikTurkish = TStringList.Create('');
  usedIndexes = TStringList.Create('');Smile

  Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'YeniKelimeDB.db3', '');
  Clomosy.DBSQLiteQuery.Close;
  Clomosy.DBSQLiteQuery.SQL.Text = 'SELECT english, turkish FROM kartlar ORDER BY RANDOM()';
  Clomosy.DBSQLiteQuery.OpenOrExecute;

  if Clomosy.DBSQLiteQuery.Eof {
    ShowMessage('Veritabanında kelime yok!');
  }

  while (not Clomosy.DBSQLiteQuery.Eof) {
    englishList.Add(Clomosy.DBSQLiteQuery.FieldByName('english').AsString);
    turkishList.Add(Clomosy.DBSQLiteQuery.FieldByName('turkish').AsString);
    Clomosy.DBSQLiteQuery.Next;
  }

 
  usedIndexes.Clear;
  i = 0;
  while (i < turkishList.Count) {
    index = clMath.GenerateRandom(0, turkishList.Count);
    if (usedIndexes.IndexOf(index.ToString) == -1) {
      usedIndexes.Add(index.ToString);
      karisikTurkish.Add(turkishList.Strings[index]);
      i = i + 1;
    }
  }


  i = 0;
  while (i < englishList.Count) {
    lblEN = matchForm.AddNewProLabel(pnlEnglish, 'lblEN_' + i.ToString, englishList.Strings);
    lblEN.Align = alTop;
    lblEN.Height = 40;
    lblEN.Margins.Top = 5;
    lblEN.ClProSettings.BorderColor = clAlphaColor.clBlack;
    lblEN.ClProSettings.BorderWidth = 2;
    lblEN.ClProSettings.IsTransparent = False;
    lblEN.ClProSettings.BackGroundColor = clAlphaColor.clHexToColor('#ddeeff');
    lblEN.ClProSettings.RoundWidth = 10;
    lblEN.ClProSettings.RoundHeight = 10;
    lblEN.SetclProSettings(lblEN.ClProSettings);
    matchForm.AddNewEvent(lblEN, tbeOnClick, 'EnglishClicked');
    i = i + 1;
  }


  i = 0;
  while (i < karisikTurkish.Count) {
    lblTR = matchForm.AddNewProLabel(pnlTurkish, 'lblTR_' + i.ToString, karisikTurkish.Strings);
    lblTR.Align = alTop;
    lblTR.Height = 40;
    lblTR.Margins.Top = 5;
    lblTR.ClProSettings.BorderColor = clAlphaColor.clBlack;
    lblTR.ClProSettings.BorderWidth = 2;
    lblTR.ClProSettings.IsTransparent = False;
    lblTR.ClProSettings.BackGroundColor = clAlphaColor.clHexToColor('#ffdddd');
    lblTR.ClProSettings.RoundWidth = 10;
    lblTR.ClProSettings.RoundHeight = 10;
    lblTR.SetclProSettings(lblTR.ClProSettings);
    matchForm.AddNewEvent(lblTR, tbeOnClick, 'TurkishClicked');
    i = i + 1;
  }

  matchForm.Run;
}




Cevaplar:
Mesajı Yazan: dilarayaprak
Mesaj Tarihi: 29 Temmuz 2025 Saat 17:42
daha doğrusu üçlü parametre istiyor ama yazdığımda da null döndürüyor


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 29 Temmuz 2025 Saat 18:31
Merhaba Dilara,
Öncelikle aldığım hata bu; 
Unit Main: Unknown identifier or variable is not declared: 'SmileenglishList'.
Source position: 61,20
TStringList yerine linkte bıraktığım TclStringList dener misin? 
https://www.docs.clomosy.com/index.php?title=TclStringList%20" rel="nofollow - https://www.docs.clomosy.com/index.php?title=TclStringList



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