puantaj hesaplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: puantaj hesaplama

Mesaj gönderen erdogan_ozkaya »

Hocam yapmak istediğim basit A01-A31 kadar olan kısımda kaçtane V1 veya R harfi var hepsi bu kadar :)

teşekkürler
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: puantaj hesaplama

Mesaj gönderen esistem »

Kod: Tümünü seç

function StringToCaseSelect (Selector : string; CaseList: array of string): Integer;
var cnt: integer;
begin
   Result:=-1;
   for cnt:=0 to Length(CaseList)-1 do
begin
     if CompareText(Selector, CaseList[cnt]) = 0 then
     begin
       Result:=cnt;
       Break;
     end;
   end;
end;

procedure TPROJE_PUANTAJ_CIZELGESI.btn2Click(Sender: TObject);
var
      GUN_X_1,
      GUN_X_2,
      GUN_X_3,
      GUN_X_4,
      GUN_RT,
      GUN_HT,
      GUN_IZ,
      GUN_R,
      GUN_EG,
      GUN_YG,
      GUN_YI,
      GUN_UI : Integer;
      SAY: Integer;
Begin
    qryPUANTAJ_DB.DisableControls;
    qryPUANTAJ_DB.First;
    While not qryPUANTAJ_DB.Eof do
    Begin
        GUN_X_1  :=0;
        GUN_X_2  :=0;
        GUN_X_3  :=0;
        GUN_X_4  :=0;
        GUN_RT   :=0;
        GUN_HT   :=0;
        GUN_IZ   :=0;
        GUN_R    :=0;
        GUN_EG   :=0;
        GUN_YG   :=0;
        GUN_YI   :=0;
        GUN_UI   :=0;
        for SAY :=  1  to 9 do
            Begin
	    case StringToCaseSelect(qryPUANTAJ_DB.FieldByName('A0'+IntToStr(SAY)).AsString,
      ['X1','X2','X3','X4','R','RT','HT','IZ','EG','YG','YI','UI']) of
      0:Inc(GUN_X_1);
      1:Inc(GUN_X_2);
      2:Inc(GUN_X_3);
      3:Inc(GUN_X_4);
      4:Inc(GUN_R);
      5:Inc(GUN_RT);
      6:Inc(GUN_HT);
      7:Inc(GUN_IZ);
      8:Inc(GUN_EG);
      9:Inc(GUN_YG);
      10:Inc(GUN_YI);
      11:Inc(GUN_UI);
      end;
        End;
        
	for SAY :=  10  to 31 do
            Begin
	    case StringToCaseSelect(qryPUANTAJ_DB.FieldByName('A'+IntToStr(SAY)).AsString,
      ['X1','X2','X3','X4','R','RT','HT','IZ','EG','YG','YI','UI']) of
      0:Inc(GUN_X_1);
      1:Inc(GUN_X_2);
      2:Inc(GUN_X_3);
      3:Inc(GUN_X_4);
      4:Inc(GUN_R);
      5:Inc(GUN_RT);
      6:Inc(GUN_HT);
      7:Inc(GUN_IZ);
      8:Inc(GUN_EG);
      9:Inc(GUN_YG);
      10:Inc(GUN_YI);
      11:Inc(GUN_UI);
      end;
        End;

        qryPUANTAJ_DB.Edit;
        qryPUANTAJ_DB.FieldByName('GUN_X_1').Asinteger :=GUN_X_1;
        qryPUANTAJ_DB.FieldByName('GUN_X_2').Asinteger :=GUN_X_2;
        qryPUANTAJ_DB.FieldByName('GUN_X_3').Asinteger :=GUN_X_3;
        qryPUANTAJ_DB.FieldByName('GUN_X_4').Asinteger :=GUN_X_4;
        qryPUANTAJ_DB.FieldByName('GUN_RT').Asinteger  :=GUN_RT;
        qryPUANTAJ_DB.FieldByName('GUN_HT').Asinteger  :=GUN_HT;
        qryPUANTAJ_DB.FieldByName('GUN_IZ').Asinteger  :=GUN_IZ;
        qryPUANTAJ_DB.FieldByName('GUN_R').Asinteger   :=GUN_R;
        qryPUANTAJ_DB.FieldByName('GUN_EG').Asinteger  :=GUN_EG;
        qryPUANTAJ_DB.FieldByName('GUN_YG').Asinteger  :=GUN_YG;
        qryPUANTAJ_DB.FieldByName('GUN_YI').Asinteger  :=GUN_YI;
        qryPUANTAJ_DB.FieldByName('GUN_UI').Asinteger  :=GUN_UI;
        qryPUANTAJ_DB.Post;
        qryPUANTAJ_DB.Next;
    End;
    qryPUANTAJ_DB.EnableControls;
end;
eğer qryPUANTAJ_DB.FieldByName('A'+IntToStr(SAY)).AsString satırı çalışırsa yukarıda verdiğim kod işinizi görebilir.
Delphide denemedim ama. Begin End bloklarında eksik gedik çıkabilir.
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: puantaj hesaplama

Mesaj gönderen fesiharslan »

Merhaba;
En doğru çözüm yolu bir enum type tanımlamaktır.

Kod: Tümünü seç

type
  TPuntaj = (Puantaj2 = 2, Puantaj3 = 3, Puantaj4 = 4, Puantaj5 = 5);
  
Daha sonra bir for döngüsü ile istediğiniz işlemi yapabilirsiniz.
Gönderdiğiniz kodun yalnızca for döngüsü ve case yapısını yazıyorum.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  Puantaj: TPuntaj;
begin
  Memo1.Lines.Clear;
  for Puantaj := Low(TPuntaj) to High(TPuntaj) do
  begin
    case Puantaj of
      Puantaj2: { 02 nolu puantaj hesap işlemleri }
        begin
          Memo1.Lines.Add('02 Nolu Puantaj');
        end;
      Puantaj3: { 03 nolu puantaj hesap işlemleri }
        ;
      Puantaj4: { 04 nolu puantaj hesap işlemleri }
        Memo1.Lines.Add('04 Nolu Puantaj');
      Puantaj5: { 05 nolu puantaj hesap işlemleri }
        ;
    end;
  end;
end;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: puantaj hesaplama

Mesaj gönderen erdogan_ozkaya »

Cevap veren herkese çok teşekkür ederim.

'esistem' Hocam gerçekten çok ama çok teşekkür ederim. :)
Cevapla