Yardım

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
u8300693
Üye
Mesajlar: 20
Kayıt: 09 Eki 2003 03:37
Konum: ANKARA

Yardım

Mesaj gönderen u8300693 »

Arkadaşlar Günaydın
aşşağıdaki kod daki if lerde sıra veri tabanımla aynı olursa bir problem yok ama veri tabanımdaki sıra ile uyuşmadığı zaman veriyi değiştirmiyor yada değiştirdigini bir daha değitiriyor.
Yani Dbgridimdeki Pazartesi kolonunun ilk sütununa bakıp ona göre hareket etmesini istiyorum. ilk sütuna bitirip bir sonraki sütuna geçecek. Ama beceremedim bir türlü. Bana yardım edebilirmisiniz?
Bunun için ne yapmalıyım

şimdiden teşekkürler

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
table1.First;
while not Table1.Eof do
begin
if table1Pazartesi.Value = '07:00 - 15:00' then
  begin
    table1.edit;
    table1pazartesi.value := '10:00 - 15:00';
   // showmessage (table1Pazartesi.Value);
    table1.Post;
    end;
    table1.Next;
if table1Pazartesi.Value = '10:00 - 15:00' then
   begin
    table1.edit;
    table1pazartesi.value := '15:00 - 23:00';
   // showmessage (table1Pazartesi.Value);
    table1.Post;
  end;
    table1.Next;
    if table1Pazartesi.Value = '15:00 - 23:00' then
   begin
    table1.edit;
    table1pazartesi.value := '07:00 - 15:00';
  //  showmessage (table1Pazartesi.Value);
    table1.Post;
  end;
table1.Next;
  end;
end;


end.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

İlk gözüme çarpan hata birden fazla next kullanmış olman! Hem kodun sadeleşmesi açısından hem de düzgün son şeklini case of end ile yazalım.

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  table1.First; 
  while not Table1.Eof do 
  begin 
     table1.edit; // her halükarda edit moduna geç.
     case table1Pazartesi.Value of
        '07:00 - 15:00': table1pazartesi.value := '10:00 - 15:00'; 
        '10:00 - 15:00': table1pazartesi.value := '15:00 - 23:00'; 
        '15:00 - 23:00': table1pazartesi.value := '07:00 - 15:00'; 
     end; 
     table1.Post; 
     table1.Next; 
  end; 
end;


kuşa döndü diyeceksin ama böylesi daha iyi:))
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

abi bildiğim kadarıyla case bu şekilde kullanılamıyor, sadece rakam veya char kabul ediyor.

Kolay gelsin.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

evet string kıyaslaması yapmıyor:(

şu şekilde yazılabilir;

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  table1.First; 
  while not Table1.Eof do 
  begin 
     table1.edit; // her halükarda edit moduna geç. 
     if table1Pazartesi.Value = '07:00 - 15:00' then 
        table1pazartesi.value := '10:00 - 15:00'
     else
     if table1Pazartesi.Value = '10:00 - 15:00' then 
        table1pazartesi.value := '15:00 - 23:00'
     else
     if table1Pazartesi.Value = '15:00 - 23:00' then 
       table1pazartesi.value := '07:00 - 15:00'; 
     table1.Post; 
     table1.Next; 
  end; 
end;
Kullanıcı avatarı
u8300693
Üye
Mesajlar: 20
Kayıt: 09 Eki 2003 03:37
Konum: ANKARA

Mesaj gönderen u8300693 »

(Hocam kusura bakmayın)
Arkadaşlar merhaba
Şu deyimi kod a çevirmek istiyorum ama malesef çeviremiyorum. Yardımcı olabilirseniz sevinirim.
Bunu if lerle yapmayı denedim ama dünyanın if ini yazmam gerek.

Kod: Tümünü seç

if table1Pazartesi.value := '07:00 - 15:15' ise 8.15 , '09:00 - 15:15' ise 6.15 , '10:00 - 15:15' ise 5.15 değeri hangisi ise aklında tut diğer günleride aynı şekilde kontrol edip sonuçları TableToplam kısmıda göster. 
ben şu şekilde bir şey daha düşündüm ama gülmeyin ltf.

Kod: Tümünü seç

var 
t:Extended; 
g1:Extended; 
G2:Extended; 
begin 
t:=0; 
G1 in değeri '07:00 - 15:15' dir. Oda 8.5 a eşit 
g2 nin değeri '09:00 - 15:15' dir. Oda 6.5 a eşit dir. 
Bu düşünceler sadece hayalmi
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

sanırım yapmak istedigin bir anda yapılan isin saati hangi saat dilimi arasında ise ona gore degerlendirilsin
yani saat bilgisi (yazdıgına gore table1Pazartesi TTime tipinde olacak)
07:00 ila 15:15 arasında ise(tabi bu aralıgın acık mı kapalı mı olacagıda onemli) saat 08:15 olsun
eger yanlıs anlamadıysam

Kod: Tümünü seç

saat:=Table1Pazartesi.AsDateTime
if (saat >=StrToTime(07:00) ) and (saat < StrToTime(15:15) ) then
  saat:=StrToTime(08:15)
else if .......//yukardaki gibi diger saatler icinde yazılır
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bir önceki yazdığım cevap işine yaramadı mı?

Tam yapmak istediğini tam olarak sözle ifade edersen daha anlaşılır olabilir...
Kullanıcı avatarı
u8300693
Üye
Mesajlar: 20
Kayıt: 09 Eki 2003 03:37
Konum: ANKARA

Mesaj gönderen u8300693 »

ilk olaak teşekkür ederim ilginize
fakat, Dbgrid de tek bir hücrede '07:00 - 15:15' yazıyor. Ayrı ayrı değil.
Ben şu şekilde bir kod yazıyorum başarılı ama bunu bir döngüye sokamıyorum ve dünyanın if ini yazmam gerek

Kod: Tümünü seç

if table1Pazartesi.value := '07:00 - 15:15' then
Table1Toplam.value = '8.15';
end;
Bu kod da hem günleri bir döngüye hemde saatleri bir döngüye sokmak lazım ama dediğim gibi dünyanın if i yazılması gerek
Daha önce yazdıgım kod da bu olamazmı ?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

string uzerinde islem yapıyorsan biraz zahmetli ama
o tek hucredeki 7:15 - 15:15 ifadesini bir fonksiyonda isleyerek ikiye ayırabilir ve dedigim gibi kullanabilirsin
dongu haline de getirebilirsin
ama algoritma kurmak icin biraz kafa yormak lazım
Cevapla