String nesnesindeki boşlukları boşluk olarak görümüyor.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

String nesnesindeki boşlukları boşluk olarak görümüyor.

Mesaj gönderen kara_kule06 »

Kod: Tümünü seç


cevap:='ADCECBEDEABCABCCDBECEAADEDCDEE EDDADEADBC BBB A E E CABDCACDABB E E    A                         B  C                                                                                                                                         ';
anahtar:='AACEDDBDEBECAABBCBECECADBDCAEDCEBDAAEADBDCEBBDADCDDACABDCEECAEBEEAEBCDBACDEBDDBABEEAEBCABDDBACABDECEBADDBBCACDAEACADEDBCEBEABDCAECCDBCDAEBBCEBAECCBEADDAECBBABDAEECCBEEADEDAEBCEABACABBCBBDDDCBBDCBDDABCCAEDCDEECCABEBCACBDCDEABEBDDCEAEEDCABECD';

for j:=1 to anahtar_edit.GetTextLen do
begin//**1
cevap:=copy(cevap,j,1);
anahtar:=copy(anahtar,j,1);
if anahtar<>'X' then begin
    if cevap <> ' ' then begin
         if cevap=anahtar then begin
            ders_d[i][DersNo[j]]:=ders_d[i][DersNo[j]] + 1;
            alan_ders_d[i][AlanNo[j]]:=alan_ders_d[i][AlanNo[j]] + 1; 
                                          end else begin
            ders_y[i][DersNo[j]]:=ders_y[i][DersNo[j]] + 1;
            alan_ders_y[i][AlanNo[j]]:=alan_ders_y[i][AlanNo[j]] + 1;
                                                       end;
                                 end;
                               end;
end; //**1

Yukarıdaki kodda öğrencinin derslerinin ve alanlarının doğrusunu ve yanlışını hesaplayan procedure'un hesaplama kısmı var. Burada Eğer anahtar stringinin j. karakteri 'X' değilse ve Cevap değişkeninin j. karakteri boş değilse devam eden işlemi yap diyorum. ama cevap değişkenin j. karakteri boş olduğunda bile boşmuş gibi görüyor ve derslerin ve alanların Yanlış sayılarını bir arttırıyor. Benim anlamadığım nedenböyle bir hatayı bazen veriyor bazen vermiyor. Acaba delphi bir ayar mı yapmam gerekiyor.
Acele yadımlarınızı bekliyorum. Şimdiden teşekkürler. Kolay gelsin.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Mysterio
Üye
Mesajlar: 44
Kayıt: 18 Eki 2006 01:42

Mesaj gönderen Mysterio »

cevap:=copy(cevap,j,1);
anahtar:=copy(anahtar,j,1);

dediğiniz zaman ilk cevap ve anahtar stringlerini ezmiş oluyorsunuz.
for deyiminin ilk döngüsünden sonraki hiç bir şey istediğiniz gibi gitmemiş oluyor.

üstteki değer atadığınız cevap ve anahtar değişkenlerini değiştirirseniz muhtemelen düzelecektir.

Bir de başka bir teknik.
string değişkenleri array gibi kullanmanız mümkün.
yani

if cevap[j]=anahtar[j] then
begin
...
end;

şeklinde de bir karşılaştırma yapabilirsiniz.
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

Mesaj gönderen kara_kule06 »

kodum aslında şu şekilde;

Kod: Tümünü seç

cevaplar:='ADCECBEDEABCABCCDBECEAADEDCDEE EDDADEADBC BBB A E E CABDCACDABB E E    A                         B  C                                                                                                                                         '; 
anahtarlar:='AACEDDBDEBECAABBCBECECADBDCAEDCEBDAAEADBDCEBBDADCDDACABDCEECAEBEEAEBCDBACDEBDDBABEEAEBCABDDBACABDECEBADDBBCACDAEACADEDBCEBEABDCAECCDBCDAEBBCEBAECCBEADDAECBBABDAEECCBEEADEDAEBCEABACABBCBBDDDCBBDCBDDABCCAEDCDEECCABEBCACBDCDEABEBDDCEAEEDCABECD'; 

for j:=1 to anahtar_edit.GetTextLen do 
begin//**1 
cevap:=copy(cevaplar,j,1); 
anahtar:=copy(anahtarlar,j,1); 
if anahtar<>'X' then begin 
    if cevap <> ' ' then begin 
         if cevap=anahtar then begin 
            ders_d[i][DersNo[j]]:=ders_d[i][DersNo[j]] + 1; 
            alan_ders_d[i][AlanNo[j]]:=alan_ders_d[i][AlanNo[j]] + 1; 
                                          end else begin 
            ders_y[i][DersNo[j]]:=ders_y[i][DersNo[j]] + 1; 
            alan_ders_y[i][AlanNo[j]]:=alan_ders_y[i][AlanNo[j]] + 1; 
                                                       end; 
                                 end; 
                               end; 
end; //**1
ikinci söylediğin mantıklı onu bi deniyeyim. olması gerekiyor.
Teşekkürler.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Cevapla