Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Diskuze na Lopuchu,
pohlazení na duchu

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Archiv klubu Delphi [ŽP: neomezená] (kategorie Programování) moderuje Šéf Lopuchu.
  • Klub Pascal - diskuze obecne o jazyce Pascal
  • Torry's Delphi Pages - stránky se spoustou komponent, tutoriálů a informací o Delphi - doporučuje 6 z 5ti vývojářů
  • Download Opera
      Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
    autor: 
    text: 
    vyplnit a 
    Help
       
    [ 118 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
    pepak pepak - Pepak.net 8.12.2005 07:00  96
    Lucid: Kde proboha pocitam s retezci??? t1,t2:tdatetime; showmessage('Budik bude aktivni za '+Int(t2-t1)+' dni a '+TimeToStr(Frac(t2-t1)));
    Retezec se samozrejme pouziva jen pro zobrazeni uzivateli, vsechny vypocty jedou pres float...
    fontan 8.12.2005 01:34  95
    sem to zapoměl zaokrouhlit
    fontan 8.12.2005 01:30  94
    Mě připadá, že hercoš píše budík, a že ho tudíž datum moc nezajímá, resp. by ho otravovalo. Nejjednodušší, i když ne moc hezké je
    t1 : = t-frac(now);
    if t1 menší než 0 then
    t1 : = t1+1;
    teď už bude bud t1 to, co ho zajímá v intervalu 0,1

    nebo

    t1 : = (t+1-now)*24*60*60*1000;to je rozdíl dotyčného času zvětšeného o den a now v milisekundách
    t1 : = t1 mod (24*60*60*1000); to je požadovaný výsledek v milisekundách (integer). dle libosti možno vydělit 24*60*60*1000 pro převedení na TDateTime
    lucid Lucid mlčet a naslouchat - zážitek, který bolí tak moc a tak krásně 7.12.2005 23:23  92
    pepakKriterium snadnosti je osemetne, protoze kazdy ho ma definovane jinak. Ja bych se treba snazil tvemu reseni vyhnout, protoze tam ciselne operace prevadis na retezcove. Coz je casove narocne a mne by to vadilo. Nicmene tvuj postup by k vysledku asi taky vedl, takze ted je jen na programatorovi Hercosovi, co si zvoli :-)
    pepak pepak - Pepak.net 7.12.2005 19:50  91
    A nebylo by nejjednodussi pracovat s celym datumem (tedy vcetne dne)? Kdyz to pak odectes a pres FormatDateTime (nebo DateTimeToStr) prevedes na string, budes to mit spravne a navic bezpracne...
    hercos 7.12.2005 19:11  90
    Nee, pravdu má Lucid. To co jsem potřeboval byl údaj, kolik zbývá hodin, minut a vteřin od teď do určité hodiny. Pokud je 18:00:00 a já chci zjistit kolik uběhne času do 17:00:00 následujícího dne, nemůžu tyto dva časy jen odečíst (Time-now) protože vždycky je vysledek rozmezí mezi těmito dvěma údaji, tj. 1 hodina a ne 23 hodin, jak bych potřeboval. Nakonec jsem to vyřešil tak, že jsem od 1 odečetl těch 18:00:00 (čili jsem zjistil, kolik zbývá do půlnoci) a pak přičetl těch 17:00:00. Výsledek: 23 hodin. :o)
    nekromancer 7.12.2005 15:37  89
    Lucid: Mě to na první pohled připadalo spíš jako že místo A-B počítá B-A :-)
    hercos 6.12.2005 14:47  88
    Lucid: díky za nakopnutí správným směrem. Už to funguje, jak má.
    lucid Lucid mlčet a naslouchat - zážitek, který bolí tak moc a tak krásně 6.12.2005 00:11  86
    HercosZakladem reseni tveho problemu je informace, ze cela cast hodnoty typu TDateTime je pocet dni od 30.12.1899, desetinna cast vyjadruje, jaky zlomek z celeho dne uplynul (tj. napr 0.5 znamena, ze uplynulo 1/2 dne, tj 24/2 hodin, cili ze je prave 12:00 dopoledne). S temito vedomostmi uz bys mel byt schopen prijit na to, jak dostat vysledky, ktere potrebujes.
    Taky si rozmysli, co presne chces vedet - co to je "kolik casu zbyva do ..."? Je to pocet sekund? Ono totiz rozdilem dvou hodnot typu TDateTime nedostanes cas ve smyslu "bod na casove ose", ale vzdalenost dvou bodu na casove ose.
    hercos 5.12.2005 23:48  85
    Aha... teď jsem to vyzkoušel, ale bohužel to zase nespočítá kolik zbývá času, pokud ten rozdíl sahá přes půlnoc: například je systémový čas 23:50:00 a já chci spočítat, kolik zbývá do 00:10:00 následujícího dne a to s Frac nejde. :o( Mělo by to být 20 minut, ale vypadne 23:40:00.
    hercos 5.12.2005 23:01  84
    Frac pomohlo! Vřelý dík.
    pepak pepak - Pepak.net 5.12.2005 19:28  83
    Ale asi ne, StrToTime bude dobre. Chyba je evidentne v tom chybejicim Frac - pokud bys to delal jednu minutu po pulnoci a Time mel nastaveny na 10 minut po pulnoci, tak ti promenna Time obsahuje 10/86400 (tedy 1.1.1900 v 0:10), zatimco Time1 obsahuje (Dnes + 1/86400). Kdyz je odectes, dela to ((pocet dnu od 1.1.1900))-1) celych a 86390/86340 dne, coz po prohnani pres TimeToStr dela tech 23 hodin 59 minut a 50 sekund...
    pepak pepak - Pepak.net 5.12.2005 19:23  82
    Hercos: No tak prinejmensim ti tam chybi odstraneni dne pri cteni Now (Time1 := Frac(Now);). Krome toho bych nedal ruku do ohne za to, ze ti StrToTime nevyhazuje blbosti.

    Btw., osobne bych radsi pouzil EncodeTime, tam mam jistotu, ze se mi neprovedou kdovijaky konverze...
    hercos 5.12.2005 19:05  80
    Když mám na počítači čas 18:04:00 a chci zjistit kolik času zbývá do "vloženého" 18:10:00 - po odečtení mi vypadne 23:54:00.
    hercos 5.12.2005 19:03  79
    Tak bohužel. Celý kó vypadá cca takhle:

    begin

    digi1value:=1;
    digi2value:=8;
    digi3value:=1;
    digi4value:=0;
    digi5value:=0;
    digi6value:=0;

    StrTime:=IntToStr(digi1value)+IntToStr(digi2value)+':'+IntToStr(digi3value)+
    IntToStr(digi4value)+':'+IntToStr(digi5value)+IntToStr(digi6value);

    Time:=StrToTime(StrTime);
    Time1:=Now;
    Time:=Time-Time1;

    Label1.Caption:=TimeToStr(now);
    Label2.Caption:=StrTime;
    Label3.Caption:=TimeToStr(Time);

    end;


    [ 118 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

    (c) 2001-2011 Lopuch.cz   
    Kontakt