Sayfayı Yazdır | Pencereyi Kapat

Memo Nesnesinin Bir Line'ındaki String'i Çekme

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=1034
Tarih: 17 Haziran 2025 Saat 22:21
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Memo Nesnesinin Bir Line'ındaki String'i Çekme
Mesajı Yazan: haletr
Konu: Memo Nesnesinin Bir Line'ındaki String'i Çekme
Mesaj Tarihi: 17 Haziran 2025 Saat 14:21
Merhabalar şarkı eklenebilen ve silinebilen ayrıca eklenen şarkılar arasından random bir şekilde şarkı öneren bir uygulama yapmaya çalıştım. Şarkı ekleme silme gibi fonksiyonlar çalışırken random şarkı önerme fonksiyonu çalışmıyor. Sorun 29. satırda. Memo'nun rastgele bir Line'ındaki Stringi nasıl çekebilirim? 

var
 Form1: TclForm;
 songEdit: TclProEdit;
 BtnAddSong,BtnSuggest,BtnDelete: TClProButton;
 lblName: TClProLabel;
 mainLayout: TclLayout;
 Memo1 : TclMemo;
 rand,len : Integer;
 rndSong: String;
 
 
 void addSong 
{
  Memo1.Lines.Add('●'+songEdit.Text);
  ShowMessage('Şarkı eklendi ');
  songEdit.Text= '';
}

void deleteSong 
{
  Memo1.Lines.Delete(1);
  ShowMessage('Şarkı silindi ');
}

void randomSong 
{
  len= StrToInt((Memo1.Lines.Count-1));
  rand = clMath.GenerateRandom(1,len);
  rndSong= Memo1.Lines[rand];
  ShowMessage(rndSong);
}

{
  Form1 = TclForm.Create(Self);
  Form1.SetFormColor('#4d5166','',clGNone);
  
  //Ana layout
  mainLayout = Form1.AddNewLayout(Form1, 'mainLayout');
  mainLayout.Align = alClient;
  mainLayout.Margins.Bottom=50;
  
  
  //Şarkı girme edit 
  songEdit=Form1.AddNewProEdit(mainLayout, 'songEdit', 'Write a song...');
  songEdit.Align = alTop;
  songEdit.Margins.Top=50;
  songEdit.Width = 250;
  songEdit.Height = 30;
  songEdit.clProSettings.IsRound=True;
  songEdit.clProSettings.RoundHeight=15;
  songEdit.clProSettings.RoundWidth=15;
  songEdit.SetclProSettings(songEdit.clProSettings);
  
  
  // Şarkı listeleme
  Memo1= Form1.AddNewMemo(mainLayout,'Memo1', '');
  Memo1.Height=250;
  Memo1.Width=500;
  Memo1.Align=alCenter;
  Memo1.ReadOnly=True;
  Memo1.TextSettings.WordWrap = True;
  Memo1.Lines.Add('SONG LIST');
  Memo1.TextSettings.HorzAlign = taCenter;
  Memo1.TextSettings.Font.Size=50;
  
  
  
  
  // Label şarkı ismi 
  lblName = Form1.AddNewProLabel(mainLayout, 'lblName', '');
  lblName.Width=100;
  lblName.Align=alVertCenter;
  lblName.clProSettings.FontSize = 20;
  lblName.clProSettings.FontColor = clAlphaColor.clHexToColor('#a8ffde');
  lblName.clProSettings.TextSettings.Font.Style = [fsBold];
  lblName.SetclProSettings(lblName.clProSettings);
  
  
  
  //Buton şarkı ekleme
  BtnAddSong=Form1.AddNewProButton(mainLayout, 'BtnAddSong', 'Add Song');
  BtnAddSong.Margins.Bottom=5;
  BtnAddSong.Align=alBottom;
  BtnAddSong.Height=35;
  BtnAddSong.Width=100;
  BtnAddSong.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  BtnAddSong.clProSettings.FontSize = 15;
  BtnAddSong.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#2cc361');
  BtnAddSong.clProSettings.IsRound=True;
  BtnAddSong.clProSettings.RoundHeight=20;
  BtnAddSong.clProSettings.RoundWidth=20;
  BtnAddSong.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnAddSong.SetclProSettings(BtnAddSong.clProSettings);
  Form1.AddNewEvent(BtnAddSong,tbeOnClick,'addSong');
  
  //Buton son eklenen şarkıyı silme
  BtnDelete=Form1.AddNewProButton(mainLayout, 'BtnDelete', 'Delete Song');
  BtnDelete.Margins.Bottom=5;
  BtnDelete.Align=alBottom;
  BtnDelete.Height=35;
  BtnDelete.Width=100;
  BtnDelete.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  BtnDelete.clProSettings.FontSize = 15;
  BtnDelete.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ff5c5c');
  BtnDelete.clProSettings.IsRound=True;
  BtnDelete.clProSettings.RoundHeight=20;
  BtnDelete.clProSettings.RoundWidth=20;
  BtnDelete.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnDelete.SetclProSettings(BtnDelete.clProSettings);
  Form1.AddNewEvent(BtnDelete,tbeOnClick,'deleteSong');
  
  //Buton rastgele şarkı öner
  BtnSuggest=Form1.AddNewProButton(mainLayout, 'BtnSuggest', 'Random song');
  BtnSuggest.Margins.Bottom=5;
  BtnSuggest.Align=alBottom;
  BtnSuggest.Height=35;
  BtnSuggest.Width=100;
  BtnSuggest.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  BtnSuggest.clProSettings.FontSize = 15;
  BtnSuggest.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#488efe');
  BtnSuggest.clProSettings.IsRound=True;
  BtnSuggest.clProSettings.RoundHeight=20;
  BtnSuggest.clProSettings.RoundWidth=20;
  BtnSuggest.clProSettings.TextSettings.Font.Style = [fsBold];
  BtnSuggest.SetclProSettings(BtnSuggest.clProSettings);
  Form1.AddNewEvent(BtnSuggest,tbeOnClick,'randomSong');

  
  
  Form1.Run;
}




Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 17 Haziran 2025 Saat 17:10
Merhaba Hale,
void randomSong 
{
  if Memo1.Lines.Count <= 1 
  {
    ShowMessage('Lütfen önce şarkı ekleyin!');
    exit;
  }
  
  len = Memo1.Lines.Count - 1;
  rand = clMath.GenerateRandom(1, len);
  
  rndSong = Memo1.Lines[rand];
  rndSong = clGetStringReplace(rndSong, '●', '');
  
  // Sonucu göster
  ShowMessage('Önerilen Şarkı: ' + rndSong);

Bu şekilde kullanabilirsin 
StrToInt kullanmadık burada, 
Eğer şarkı yoksa kullanıcıya uyarı veriyoruz. 
'●' karakterini temizleyerek kullanıcıya random şarkı öneriyoruz. 



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