dizi problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kubra_21
Üye
Mesajlar: 57
Kayıt: 30 Kas 2005 01:49
Konum: erzincan

dizi problemi

Mesaj gönderen kubra_21 »

s.a arkadaşlar.yapmaya çalıştığım öğrenci işleri programında çan eğrisi olayını uygulamaya çalışıyoruz öğrenci notlarına. Yalnız şöle bi problem var bu sistemde hamnotu aynı olanlar belli bi yerden sonra farklı harf notları almaya başlıyor bunu engellmek için ne yapabilirim. Dinamik dizi ile hamnotu aynı olanların harf notunu aynı aypmaya çalıştım ama pek beceremedim Kaynak kodlar şöle:

Kod: Tümünü seç

procedure TBDS_Form.BitBtn2Click(Sender: TObject);
var
i:integer;
begin
with Query2 do
 begin
 sql.clear;;
 close;
 sql.add('select * from Dönemsel_Kayit where (ders_kodu='+chr(34)+listbox1.items[0]+chr(34)+')');
 if listbox1.Items.count>=1 then
 for i:=1 to listbox1.items.Count-1 do
 sql.add(' or (ders_kodu='+chr(34)+listbox1.items[i]+chr(34)+')');
 open;
 refresh;
 if recordcount=0 then
  begin
  ShowMessage('NBu dersk Koduna Ait Ders Kayılaqrı Bulumöadı');
  end else
  begin
  with Table1 do
   begin
   open;
   if not IsEmpty then
    begin
    first;
    repeat
    delete;
    until eof=true;
    close;
    open;
    end;
   end;
   BatchMove1.Execute;
  end;
 end;
with table1 do
 begin
 first;
 disablecontrols;
 repeat
 edit;
 fields[11].asfloat:=fields[5].asfloat*0.25+fields[6].asfloat*0.25+fields[7].asfloat*0.5;
 post;
 next;
 until eof=true;
 first;
 enablecontrols;
 dkl:=25;
 while dklden_buyuklerin_sayisi<siniftaki_ogrenci_sayisi*0.7 do
 dec(dkl);
 if dklden_buyuklerin_sayisi>=30 then i_metodunu_uygula else
                                      ii_metodunu_uygula;

 ShowMessage(inttostr(dkl));
 end;

end;
var
aasayisi,basayisi,bbsayisi,cbsayisi,ccsayisi,dcsayisi,ddsayisi,fsayisi:integer;
procedure TBDS_Form.ii_metodunu_uygula;
var
dizi:array of integer;
dizi1:array of integer;
say:integer;
i,j:integer;
begin
with Query3 do
 begin
 sql.clear;;
 close;
 sql.add('select * from gecici order by hamnot desc');
 open;
 refresh;
 end;
with table1 do
 begin
 first;
 repeat
 delete;
 until eof=true;
 end;
 BatchMove2.Execute;
 if ortalama>=70 then begin
                      aasayisi:=tamrakam(dklden_buyuklerin_sayisi*24/100);
                      basayisi:=tamrakam(dklden_buyuklerin_sayisi*15.2/100);
                      bbsayisi:=tamrakam(dklden_buyuklerin_sayisi*22.8/100);
                      cbsayisi:=tamrakam(dklden_buyuklerin_sayisi*11.6/100);
                      ccsayisi:=tamrakam(dklden_buyuklerin_sayisi*17.4/100);
                      dcsayisi:=tamrakam(dklden_buyuklerin_sayisi*4.8/100);
                      ddsayisi:=tamrakam(dklden_buyuklerin_sayisi*3.2/100);
                      fsayisi:= tamrakam(dklden_buyuklerin_sayisi*1/100);
                      end;
 if (ortalama<70) and (ortalama>=62.5) then begin
                      aasayisi:=tamrakam(dklden_buyuklerin_sayisi*24/100);
                      basayisi:=tamrakam(dklden_buyuklerin_sayisi*15.2/100);
                      bbsayisi:=tamrakam(dklden_buyuklerin_sayisi*22.8/100);
                      cbsayisi:=tamrakam(dklden_buyuklerin_sayisi*11.6/100);
                      ccsayisi:=tamrakam(dklden_buyuklerin_sayisi*17.4/100);
                      dcsayisi:=tamrakam(dklden_buyuklerin_sayisi*4.8/100);
                      ddsayisi:=tamrakam(dklden_buyuklerin_sayisi*3.2/100);
                      fsayisi:= tamrakam(dklden_buyuklerin_sayisi*1/100);
                      end;
 if (ortalama<62.5) and (ortalama>=57.5) then begin
                      aasayisi:=tamrakam(dklden_buyuklerin_sayisi*24/100);
                      basayisi:=tamrakam(dklden_buyuklerin_sayisi*15.2/100);
                      bbsayisi:=tamrakam(dklden_buyuklerin_sayisi*22.8/100);
                      cbsayisi:=tamrakam(dklden_buyuklerin_sayisi*11.6/100);
                      ccsayisi:=tamrakam(dklden_buyuklerin_sayisi*17.4/100);
                      dcsayisi:=tamrakam(dklden_buyuklerin_sayisi*4.8/100);
                      ddsayisi:=tamrakam(dklden_buyuklerin_sayisi*3.2/100);
                      fsayisi:= tamrakam(dklden_buyuklerin_sayisi*1/100);
                      end;
 if (ortalama<57.5) and (ortalama>=52.5) then begin
                      aasayisi:=tamrakam(dklden_buyuklerin_sayisi*2/100);
                      basayisi:=tamrakam(dklden_buyuklerin_sayisi*4/100);
                      bbsayisi:=tamrakam(dklden_buyuklerin_sayisi*10.4/100);
                      cbsayisi:=tamrakam(dklden_buyuklerin_sayisi*14.8/100);
                      ccsayisi:=tamrakam(dklden_buyuklerin_sayisi*22.2/100);
                      dcsayisi:=tamrakam(dklden_buyuklerin_sayisi*12/100);
                      ddsayisi:=tamrakam(dklden_buyuklerin_sayisi*8/100);
                      fsayisi:= tamrakam(dklden_buyuklerin_sayisi*4/100);
                      end;
 table1.First;
for i:=1 to aasayisi do
 begin
 table1.edit;
 table1.Fields[8].AsString:='AA';
 table1.Post;
 table1.next;
 end;
for i:=1 to basayisi do
 begin
 table1.edit;
 table1.Fields[8].AsString:='BA';
 table1.Post;
 table1.next;
 end;
for i:=1 to bbsayisi do
 begin
 table1.edit;
 table1.Fields[8].AsString:='BB';
 table1.Post;
 table1.next;
 end;
for i:=1 to cbsayisi do
 begin
 table1.edit;
 table1.Fields[8].AsString:='CB';
 table1.Post;
 table1.next;
 end;
*   say:=DBGrid1.Columns.count-1;
SetLength(dizi,say);
SetLength(dizi1,say);
i:=0;
dizi[i]:=table1['HAMNOT'];
dizi1[i]:=table1['Harf_Not'];
 for i:=1 to say do
 begin
    if dizi[i]=Table1['HAMNOT'] then
 begin
  table1['Harf_Not']:=inttostr(Dizi1[i]);
  table1.next;    *
  end;
end;
benim problemi çözmeye çalıştığım yerler ensondaki yıldızla başlayıp biten yerler.eğer bu kodları yazmazsam program çalışıyor ama dediğim prolem devam ediyor. Bunları yazıncada program işlemiyor nasıl bi kod yazmam lazım acaba yardımlarınızı bekliyorum...


selam ve dua ile....

Not:Kodlarımızı code tagı içine alalım.
Allah Namına Al Allah Namına Ver Vesselam...
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Kod: Tümünü seç

say:=DBGrid1.Columns.count-1;
SetLength(dizi,say);
SetLength(dizi1,say);
i:=0;
dizi[i]:=table1['HAMNOT'];
dizi1[i]:=table1['Harf_Not'];
for i:=1 to say do
begin
if dizi[i]=Table1['HAMNOT'] then
begin
table1['Harf_Not']:=inttostr(Dizi1[i]);
table1.next; 
bi kere burda table1'i edit demiyosun.

Kod: Tümünü seç

table1['Harf_Not']:=inttostr(Dizi1[i]);
dan önce table1.edit demen lazım.
ayrıca burada

Kod: Tümünü seç

 table1.post 
diye bi komut da yok.
program hata veriyorsa nasıl bi hata veriyor?
kubra_21
Üye
Mesajlar: 57
Kayıt: 30 Kas 2005 01:49
Konum: erzincan

Mesaj gönderen kubra_21 »

s.a "invalid conversion" hatırladığım kadarıylşa buna benzer bi hata veriyordu kusurabakmayın program şuan yanımda değil o yüzden net hatırlamıyorum.program hiç çalışmıyo değil dersleri aç diye bi butonum var formda o butona basınca hesaplamayı yapacak. zaten o butona basınca bu hatayı veriyor. teşekkürler...
Allah Namına Al Allah Namına Ver Vesselam...
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Kod: Tümünü seç

table1['Harf_Not']:=inttostr(Dizi1[i]);
yi

Kod: Tümünü seç

table1Harf_Not.text:=inttostr(Dizi1[i]);
olarak değiştir
kubra_21
Üye
Mesajlar: 57
Kayıt: 30 Kas 2005 01:49
Konum: erzincan

Mesaj gönderen kubra_21 »

s.a problem aynı ve hala devam ediyor neden olduğunu hala anlamadım. program kırıldıktan sonra bana bi ipucu veriyo "i" tanımlandı ama kullanılmadı diye sizce neden olabilir. yardımcı olursanız sevinirm.
Allah Namına Al Allah Namına Ver Vesselam...
Cevapla