döngü ile tek alanda iki farklı süre hesaplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen brs »

Selam, Konu başlığı biraz karmaşık gelmiş olabilir;

Yapmak istediğim medya playda süre hesaplama, Listview time alanım var, aynı anda iki farklı toplama işlemi yaptırmam gerek bunu birden fazla procedure oluşturarak yapılabilir fakat bu işlemi tek bir procedure altında yapmak istiyorum, fakat takıldım kaldım...

Örnek:
Resim


Örnekte ki gibi aynı anda iki alanı da hesaplamak istiyorum 1. listviewdeki tüm süre hesaplanacak 2. ise next ve pause arasında kalan alan hesaplanacak burada ki sıkıntım ise alt satırlarda olan next ve pause süreler dikkate alınmayacak...


Bu konuda nasıl bir yol izlemeliyim...

Kod: Tümünü seç

procedure TMainForm.KalanDuration(Sender: TObject);
var
  I, J: Integer;
  TSaat, NSaat: TTime;
  TSaniye, NSaniye: Integer;
begin
  try
    NSaat := 0;
    TSaat := 0;
    with PListView1 do
    begin
      for I := VSonraki to Items.Count - 1 do
      begin
        if Items.Item[I].SubItems[6] = 'Next' then
        begin
          NSaat := NSaat + StrToTime(Items[I].SubItems[4]);
        end;
        if Items.Item[I].SubItems[6] = 'Pause' then
        begin
        Exit;
        end;
      end;
      for J := VSonraki to Items.Count - 1 do
      begin
        TSaat := TSaat + StrToTime(Items[J].SubItems[4]);
      end;
    end;
  finally
    NSaniye := SecondsBetween(0, NSaat);
    TSaniye := SecondsBetween(0, TSaat);
    StatusBar1.Panels[5].Text := NextDuration(NSaniye);
    StatusBar1.Panels[6].Text := ToplamDuration(TSaniye);
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen Lord_Ares »

Seni yanlış anlamadıysam, şöyle bir fikir vermek isterim. Buradaki amacına giderken gördüğüm sorun hesaplatmak istediklerini mimleyebilmek (yani şununla-şunun arasındakileri hesapla ) Bu yüzden ilk aklıma gelen tablondaki alanlara İD alanı eklemek ( Süre, Durum , ID gibi ) Böylece id nosu 1 ve 7 olanı ve id nosu 3 ve 5 olanı topla diyerek iki toplama işlemini aynı anda yapabilirsin.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen brs »

Dediğiniz kısmen mantıklı, ama playlist sabit değil her an değişik olabilir ve sıralama id numarasına göre olmuyor mecburen next ve pause alanlarını hesaplatmak zorundayım...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen AliZairov »

Merhaba. MP3 player yapıyorsan neden baas kütüphanesini kullanmıyorsun? Denemek istersen https://github.com/ersanyakit/FMX.Radio
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen brs »

AliZairov yazdı:Merhaba. MP3 player yapıyorsan neden baas kütüphanesini kullanmıyorsun? Denemek istersen https://github.com/ersanyakit/FMX.Radio
Selam ali, linki inceledim hesaplama ile ilgili bir şey göremedim...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen AliZairov »

brs yazdı:
AliZairov yazdı:Merhaba. MP3 player yapıyorsan neden baas kütüphanesini kullanmıyorsun? Denemek istersen https://github.com/ersanyakit/FMX.Radio
Selam ali, linki inceledim hesaplama ile ilgili bir şey göremedim...
İyi akşamlar. Hesaplama ilgili vermedim zaten. Baas kütüphnesi kullanarak mp3 player yapman daha kolay olur diye vermiştim. aimp müzik playeri baas kütüphanesi kullanıyor. Delphi yazılan bir uygulama.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen brs »

Ok teşekkür ederim mp3 değil...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: döngü ile tek alanda iki farklı süre hesaplama

Mesaj gönderen brs »

Tamamdır...

Kod: Tümünü seç

function FindListIndex(Const Next: String): Integer;
var
  T, N: Integer;
  TSaat, NSaat: TTime;
  TSaniye, NSaniye: Integer;
begin
  try
    NSaat := 0;
    TSaat := 0;
    with MainForm.PListView do
    begin
      for T := 0 to Items.Count - 1 do
      begin
        TSaat := TSaat + StrToTime(Items[T].SubItems[4]);
      end;

      begin
        for N := 0 to Items.Count - 1 do
        begin
          if (Pos(Next, Items.Item[N].SubItems[6]) > 0) then
          begin
            NSaat := NSaat + StrToTime(Items[N].SubItems[4]);
          end
          else
          begin
            Exit(N);
            Result := -1;
          end;
        end;
      end;
    end;
  finally
    NSaniye := SecondsBetween(0, NSaat);
    TSaniye := SecondsBetween(0, TSaat);
    MainForm.StatusBar1.Panels[5].Text := NextDuration(NSaniye);
    MainForm.StatusBar1.Panels[6].Text := ToplamDuration(TSaniye);
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla