Sayfayı Yazdır | Pencereyi Kapat

Kullanıcıdan alınan sayının arraye taşınması

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=757
Tarih: 07 Ocak 2025 Saat 23:33
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Kullanıcıdan alınan sayının arraye taşınması
Mesajı Yazan: zeynepsimsek
Konu: Kullanıcıdan alınan sayının arraye taşınması
Mesaj Tarihi: 26 Temmuz 2024 Saat 19:54
kullanıcıdan edit nesnesi ile sayı aldım ve bu sayıyı bir arrayin eleman sayısına atamak istiyorum. daha sonra bu arraydeki kişilerin isimlerini kullanıcıdan isteyeceğim. kodu bağlayamıyorum algoritma kurmada hata mı yapıyorum 

var
MyForm : TclForm;
gamerCountEdt : TclProEdit;

{
  MyForm = TclForm.Create(Self);
  MyForm.SetFormColor('#967eb9', '#eaebdb', clGCross);
  
  gamerCountEdt=MyForm.AddNewProEdit(MyForm, 'gamerCountEdt', 'Kişi Sayısı:');
  clComponent.SetupComponent(gamerCountEdt,'{"Align": "Center",
  "MarginBottom":150 , "Width" : 100 , "Height":50 , "RoundHeight" :10,
  "RoundWidth":10 }');
   
  gamerCountEdt.clTypeOfField = taFloat;
  
  MyForm.Run;
}



Cevaplar:
Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 09:45
Merhaba, yazdığınız kodu incelediğimde bir sorun göremedim ama bir sorum var :
Burada herhangi bir dizi oluşturma veya bu diziyi kullanma kodu göremedim ?
Kodun devamı varsa atabilir misiniz ?


Mesajı Yazan: zeynepsimsek
Mesaj Tarihi: 29 Temmuz 2024 Saat 12:36
Dinamik bir string dizisinin uzunluğunu ayarlayan hazır fonksiyonu bulamadığım için kodun devamında ilerleyemiyorum. Yardımcı olur musunuz


Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 12:47
tabiki


Mesajı Yazan: zeynepsimsek
Mesaj Tarihi: 29 Temmuz 2024 Saat 12:58
gamerNamesArray:=array[gamerCountEdt] of String;
Angle:Integer;


procedure MyForm.StartGame;
var
gamerCount:Integer;
begin
gamerCount=StrToInt(gamerCountEdt.Text);
Length(gamerNamesArray,gamerCount);
gamerNamesArray:=gamerNamesMemo.lines.toStringArray;
/*Angle=0;
timerSpin.Interval:100;
timerSpin.enabled=True;*/
end

kırmızı işaretlediğim dizi kısmının kodu doğru mu yanlış bir kullanım mı yapıyorum 


Mesajı Yazan: zeynepsimsek
Mesaj Tarihi: 29 Temmuz 2024 Saat 13:05
gamerNamesArray=array[gamerCountEdt] of String;
Angle:Integer;


procedure MyForm.StartGame;
var
gamerCount:Integer;
begin
gamerCount=StrToInt(gamerCountEdt.Text);
Length(gamerNamesArray,gamerCount);
gamerNamesArray=gamerNamesMemo.lines.toStringArray;
/*Angle=0;
timerSpin.Interval:100;
timerSpin.enabled=True;*/
end

kırmızı işaretlediğim dizi kısmının kodu doğru mu yanlış bir kullanım mı yapıyorum 


Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 13:12
MultiArray kullanımında(çok boyutlu dizi) verdiğiniz sütun ve satır sayısına göre aslında dizi kapasitesini vermiş oluyoruz.
Mesela 4 satır 4 sütun verdiğimiz zaman 4x4 olarak 16 veri kapsayabilecek bir dizi oluşturmuş oluruz.

var
  MyForm : TclForm;
  gamerCountEdt : TclProEdit;
  multiArray;
  x : Integer;
  
Void CreateMultiArray(rows,columns,dataType:Integer);//Bu Void de çok boyutlu diziyi oluşturuyoruz.
{
  multiArray = VarArrayCreate([0, rows, 0, columns], dataType); //Aslında İçerisinde ne kadar Eleman olacağını da satır ve sütun olarak belirtmekteyiz. Mesela 5 satı 2 sütunlu bir çok boyutlu dizi oluşturursak 10 elemanlı bir dizi oluşturmuş olmaktayız.
}
{
  MyForm = TclForm.Create(Self);
  MyForm.SetFormColor('#967eb9', '#eaebdb', clGCross);

  CreateMultiArray(5,2,12);
  
  gamerCountEdt=MyForm.AddNewProEdit(MyForm, 'gamerCountEdt', 'Kişi Sayısı:');
  clComponent.SetupComponent(gamerCountEdt,'{"Align": "Center",
  "MarginBottom":150 , "Width" : 100 , "Height":50 , "RoundHeight" :10,
  "RoundWidth":10 }');
  gamerCountEdt.clTypeOfField = taFloat;
  
  x = 1;
  MyForm.Run;
}


Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 13:16
Pardon.
Ben çok boyutlu dizi kullanımını atmışım hemen düzeltiyorum.


Mesajı Yazan: zeynepsimsek
Mesaj Tarihi: 29 Temmuz 2024 Saat 13:18
tamamdır bekliyorum


Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 13:25
Var Bloğunda bu şekilde bir kullanım yok.
"gamerNamesArray=array[gamerCountEdt] of String;"

Ama şu şekilde yapılabilir : 
"gamerNamesArray=array[3] of String;"


Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 13:27
Diziye neden sınır vermek istediğinizi tam anlayamadım ?
Bir sınır verilmeden yapılabilir.
Mesela 4 oyunculu bir oyuna girdiniz , projeye her oyuncu geldiğinde dizi.add diyerek gelen oyuncuları ekleyebilirsiniz.


Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 13:31
Mesela


 var
   myArray : TClArrayInteger;
   iIndex : Integer;
 
 {
   myArray = TClArrayInteger.Create;
   myArray.Add(20); 
   myArray.Add(30);
   myArray.Add(17);
   myArray.Add(23);

   
   
   ShowMessage(IntToStr(myArray.Count));
   
   for (iIndex = 0 to myArray.Count-1)
   {
     ShowMessage('Value: '+IntToStr(myArray.GetItem(iIndex)));
   }
 }


TCLArrayString dizisini kullanırsanız dizi kapasitesi esnek olduğu için işinizi görecektir diye düşünüyorum.


Mesajı Yazan: zeynepsimsek
Mesaj Tarihi: 29 Temmuz 2024 Saat 14:55
anladım teşekkür ederim


Mesajı Yazan: oguz22
Mesaj Tarihi: 29 Temmuz 2024 Saat 14:57
Rica ederim kolay gelsin.



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