Cenko
06/06/2006, 13:00
Selam,
DB'de real time datalar var, ben bu datalardan biri olan TDateTime olanları karşılaştırıyorum.Ancak karşılaştırma yapmadan önce DB'den vector'ün içine atıyorum bu TDateTime alanları ki daha hızlı yapsın. Mantık şöyle işliyor;
v_time vector'ündeki ilk tarihi alıyor ( örnek: 2005-02-11 19:49:00), kullanıcının isteği doğrultusunda bir zaman aralığı belirtiliyor. (örnek : size = 1, yani 1 dakikalık işlem yapılacak) Programda ise;
//2005-02-11 19:49:00 tarihi 1 dakika arttırılıyor x1 = 2005-02-11 19:50:00 oluyor
x1 = (((((double)v_time[i]) * 1440) + size) / 1440);
ShowMessage(x1);
//x2 hala ilk tarih yani 2005-02-11 19:49:00
x2 = v_time.at(i);
ShowMessage(x2);
// 2005-02-11 19:49:00 < 2005-02-11 19:50:00 koşulu sağlandığı sürece loop yapsın
while( x2 < x1)
{
//x2 büyük ya da eşit olana kadar devam etsin , vector'ün boyutunu geçmesin
if( (i >= v_time.size()) || (x2 >= x1) )
break;
//bid ve tarih datalarını vector'e atıyor sadece bizim istediğimiz koşullardakileri
v_temp.push_back(v_bid.at(i));
v_temptime.push_back(v_time.at(i));
// bir sonraki tarih değerine geçiyor vector'deki
i++;
//x2 yeni tarih değerini alıyor
x2 = v_time.at(i);
ShowMessage(x2);
}
Ancak sorun şu ki, loop birkaç sefer doğru yaptıktan sonra x2 tarih değeri x1'inkine eşit olduğu zaman dahi loopa giriyor! Bazen anlaşılmaz şekilde sapıtıyor. Fikri olan var mı?
DB'de real time datalar var, ben bu datalardan biri olan TDateTime olanları karşılaştırıyorum.Ancak karşılaştırma yapmadan önce DB'den vector'ün içine atıyorum bu TDateTime alanları ki daha hızlı yapsın. Mantık şöyle işliyor;
v_time vector'ündeki ilk tarihi alıyor ( örnek: 2005-02-11 19:49:00), kullanıcının isteği doğrultusunda bir zaman aralığı belirtiliyor. (örnek : size = 1, yani 1 dakikalık işlem yapılacak) Programda ise;
//2005-02-11 19:49:00 tarihi 1 dakika arttırılıyor x1 = 2005-02-11 19:50:00 oluyor
x1 = (((((double)v_time[i]) * 1440) + size) / 1440);
ShowMessage(x1);
//x2 hala ilk tarih yani 2005-02-11 19:49:00
x2 = v_time.at(i);
ShowMessage(x2);
// 2005-02-11 19:49:00 < 2005-02-11 19:50:00 koşulu sağlandığı sürece loop yapsın
while( x2 < x1)
{
//x2 büyük ya da eşit olana kadar devam etsin , vector'ün boyutunu geçmesin
if( (i >= v_time.size()) || (x2 >= x1) )
break;
//bid ve tarih datalarını vector'e atıyor sadece bizim istediğimiz koşullardakileri
v_temp.push_back(v_bid.at(i));
v_temptime.push_back(v_time.at(i));
// bir sonraki tarih değerine geçiyor vector'deki
i++;
//x2 yeni tarih değerini alıyor
x2 = v_time.at(i);
ShowMessage(x2);
}
Ancak sorun şu ki, loop birkaç sefer doğru yaptıktan sonra x2 tarih değeri x1'inkine eşit olduğu zaman dahi loopa giriyor! Bazen anlaşılmaz şekilde sapıtıyor. Fikri olan var mı?