boşluk tuşuna gelince hata veriyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sga
Üye
Mesajlar: 60
Kayıt: 08 Tem 2005 12:49

boşluk tuşuna gelince hata veriyor

Mesaj gönderen sga »

arkadaşlar şöyle bi prog. yazdım her seferinde bi sonraki karakterin paneli sarı olcak ama boşluk tuşuna sıra gelince hata veriyor büyük ihtimallet türkçe karaktere gelsem ordada hata verecek :roll:

Kod: Tümünü seç

procedure TForm1.Edit4Change(Sender: TObject);
begin
if (length(edit1.text)<length(label1.Caption)) then  begin

if (label4.Caption[length(edit4.Text)]=' ') then
panelsh.Color:=clyellow
else if (label4.Caption[length(edit4.Text)+1]='ı') then
panelii.Color:=clyellow
else if (label4.Caption[length(edit4.Text)+1]='ğ') then
panelgg.Color:=clyellow
else if (label4.Caption[length(edit4.Text)+1]='ü') then
paneluu.Color:=clyellow
else if (label4.Caption[length(edit4.Text)+1]='ş') then
panelss.Color:=clyellow
else if (label4.Caption[length(edit4.Text)+1]='ö') then
paneloo.Color:=clyellow
else if (label4.Caption[length(edit4.Text)+1]='ç') then
panelcc.Color:=clyellow
else if(length(edit1.text)<length(label1.Caption))and(length(edit4.text)<>0) then
tpanel(findcomponent('panel'+label4.Caption[length(edit4.Text)+1])).Color:=clyellow;


if (label4.Caption[length(edit4.Text)]=' ')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
     panelsh.Color:=clInactiveCaptionText
else if (label4.Caption[length(edit4.Text)]='ı')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
     panelii.Color:=clInactiveCaptionText
else if (label4.Caption[length(edit4.Text)]='ğ')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
     panelgg.Color:=clInactiveCaptionText
else if (label4.Caption[length(edit4.Text)]='ü')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
     paneluu.Color:=clInactiveCaptionText
else if (label4.Caption[length(edit4.Text)]='ş')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
     panelss.Color:=clInactiveCaptionText
else if (label4.Caption[length(edit4.Text)]='ö')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
     paneloo.Color:=clInactiveCaptionText
else if (label4.Caption[length(edit4.Text)]='ç')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
     panelcc.Color:=clInactiveCaptionText
     else if  (length(edit4.text)<>1)and(length(edit4.text)<>0) then
  tpanel(findcomponent('panel'+label4.Caption[length(edit4.Text)])).Color:=clInactiveCaptionText;

       end;
sga
gorecelik
Üye
Mesajlar: 23
Kayıt: 27 Nis 2005 02:59
Konum: İstanbul
İletişim:

Re: boşluk tuşuna gelince hata veriyor

Mesaj gönderen gorecelik »

aslına bakarsan bu koda baknca bişey anlaşılmıyor hatanın sebebi ama sana tavsiyem şunlara dikkat

birincisi

Kod: Tümünü seç

if (label4.Caption[length(edit4.Text)]=' ')and(length(edit4.text)<>1)and (length(edit4.text)<>0) then
bu şekilde label4.Caption[length(edit4.Text)]=' ' sınamasını başa yazmak yerine diğer koşulu başa yaz eğer o sağlanmazsa bu ikinci sınamaya hiç geçmez hataya yol açmaz mesela yazıyı silerken son karakteri sildiğinde senin if hata verebilir çünkü önce label4.caption[0] değerini al demiş oluorsun sıfırıncı karakter olmaz o yüzden hata verebilir

Kod: Tümünü seç

if (length(edit4.text)>1)and (label4.Caption[length(edit4.Text)]=' ') then
gibi değiştirebilirsin


ikincisi
label4.Caption[length(edit4.Text)+1]='ı' +1 değeri olduğu için label4 ün içindeki karakterden fazla bi rakam çıkıyor olabilir onları göremediğim için olabilecek muhtemelleri söylemekten başka bişey yapamıyorum
Cevapla