Array neden hata vermiyor?

Başlatan CaFFeiNe, 18 Mart 2016, 10:23:16

CaFFeiNe

var bloğunda

x: array[1..12, 1..6] of char; şeklinde 12x6 adet byte değişken tutabilen dizi tanımlıyorum, sonra denemek için forma editbox ve butonlar koyup bir butona basıldığında diziye yazıp, diğer butonla okuyorum

şöyleki

okuma
edit3.text:=x[strtoint(edit1.text),strtoint(edit2.text)];

yazmada tersi
x[strtoint(edit1.text),strtoint(edit2.text)]:=edit3.text[1]; // edit3 e yazdığım ilk karakteri diziye yazsın

edit1 -> 1..12 arası değer yazıyorum
edit2 -> 1..6 arası değer yazıyorum, ama farklı birşey yazsamda hata vermiyor mesela edit1' e 100 yazsam, edit2' ye 1 yazsam [100,1] adresine veri depolayabiliyorum, neden hata vermiyor ben diziyi dinamik tasarlamadımki sınırları belli?

Salih

#1
Evet bende denedim, dediğin gibi oluyor.
Derleme esnasında, sınır değerleri kontrol ediliyor.
Ama çalışma esnasında derleme bittiği için kontrol edemiyor.
Sanırım, Dizinin başlangıç adresinden başlayarak data bellek bölümünde ki 100. adrese yazıyor.
Böyle durumları engellemek herhalde programı yazanlarda oluyor.
Edit dönüştürmesi yapılırken dizi sınır değeri kontrol edilmelidir.

CaFFeiNe

x[100,1]:='A'; gibi yazıp derlerken hata veriyor, değerleri editbox tan alırken derlerken hata vermemesi normal çünkü editboxa ne yazacağımı nerden bilecek, çalışırken hata verip programın çökmesini bekliyordum ondan garip geldi.

Salih

Sanırım kod alanına taşmadık ca çökme olmaz. Sadece 100. Data Adresi kullanılıyorsa onun değeri değişir.