• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    MORMEGIL
    MORMEGIL --- ---
    DARKREIDER: Přímo v C# pochybuju; zaintegrovat nativní Ghostscript, na to už wrapper najdeš.
    DARKREIDER
    DARKREIDER --- ---
    Zdarec, skromna otazka: existuje nejaka kniznica (alebo nieco), co dokaze v C# interpretovat postscript? Potrebujem zobrazit *.ps subor a nad tym spravit nejaky jednoduchy WYSIWYG editor na presuvanie blokov v tom PS kode. Cakal som, ze codeproject toho bude plny, ale ani google mi nedava nic pozitivne. Dik za kazdu reakciu.
    SLUPKA
    SLUPKA --- ---
    AREX: Aha, já myslel, že jsem napsal něco špatně :)
    AREX
    AREX --- ---
    SLUPKA: Mluvim ted samozrejme jen o te smycce dole. Tam to pri "pondeli 8:00" v prvni smycce breakne a tim padem to skonci na pondeli 7:00 coz uz je ponekud spatne :)

    Tu horni cast kontroly jsem udelal jednodusi prave vyuzitim tehle funkce.

    var now = DateTime.Now;
    var nextCheck = GetNextCheckDate(now);

    if (nextCheck.Date == now.Date && now.Hour == CheckHour) {
    ...
    }

    return nextCheck;
    SLUPKA
    SLUPKA --- ---
    AREX: Ani opačný problém by tomu mému neměl vadit - pondělí 8:00 vleze do prvního ifu, v něm první if nic druhý zvedne den o jedna (na další den)... A pak od toho dalšího dne nalezne první dobrý den a to je středa...
    AREX
    AREX --- ---
    SLUPKA: Jo, byl tam opacny problem. Pokud je treba Pondeli 8:00 tak by to melo skocit na Streda 7:00. Konecne to dela co chci, ale jsem dneska nejakej vygumovanej, takovy v podstate jednoduchy algoritmus a povedlo se mi to az na nejakych 10. pokus odladit :/
    public static DateTime GetNextCheckDate(DateTime date)
    {
        var result = date;
        while (true)
        {
            if (CheckDays.Any(d => d == result.DayOfWeek) && result.Hour <= CheckHour) {
                break;
            }
    
            result = result.Date.AddDays(1);
        }
    
        return result.Date.AddHours(CheckHour);
    }
    SLUPKA
    SLUPKA --- ---
    AREX: To by nemělo skočit do středy. Protože to skočí do první podmínky, ale tam už to neskočí do ničeho vevnitř. Takže po prvním ifu bude stále Pondělí 6:00... A ve while bude okamžitý break, takže to vrátí stejný datum jen s upraveným časem...
    AREX
    AREX --- ---
    SLUPKA: Jo ta smycka je presne to co sem hledal. Ja to tusil, ze vymyslim zbytecny slozitosti a pritom to jde tak jednoduse :) Akorat tam jeste musim podchytit situaci "Pondeli 6:00 - vrati Pondeli 7:00". V soucasnem stavu by to skakalo rovnou do stredy. Nicmene diky moc za nasmerovani :)
    SLUPKA
    SLUPKA --- ---
    AREX: Něco takového by nefungovalo? (SetTime neexistuje, ale není těžké to přepsat, aby to dělalo to co má :))

    var curDate = DateTime.Now;

    if(CheckDays.Contains(curDate.DayOfWeek))
    {
      if(curDate.Hour == CheckHour)
      {
        DoSomething();
      }
      if(curDate.Hour >= CheckHour)
      {
        curDate = curDate.AddDays(1);
      }
    }

    while(true)
    {
      if(CheckDays.Contains(curDate.DayOfWeek))
        break;

      curDate = curDate.AddDays(1);
    }

    return curDate.SetTime(CheckHour, 0, 0);
    AREX
    AREX --- ---
    Potreboval bych mensi vypomoc. Asi na to jdu zbytecne slozite a nejak se v tom zapomotavam a vznikaj mi hrozne slozity podminky.

    Mam tyto dva parametry.

    private const int CheckHour = 7;
    private DayOfWeek[] CheckDays = new[] { DayOfWeek.Monday, DayOfWeek.Wednesday, DayOfWeek.Friday };

    Zacnu nekolika priklady
    Pondeli 7:37 - metoda neco udela a vrati Streda 7:00
    Pondeli 8:28 - metoda nic nedela a vrati Streda 7:00
    Streda 17:42 - metoda nic nedela a vrati Patek 7:00
    Patek 7:21 - metoda neco udela a vrati Pondeli 7:00
    Sobota 5:55 - metoda nic nedela vrati Pondeli 7:00

    Je to tedy v podstate takovy mensi task scheduler, akorat v podstate sity na miru. Ta metoda se muze spustit prakticky kdykoliv, proto potrebuju v prvnim kroku overit jestli vubec ma neco spoustet. Nasledne se pak spocita datum pro dalsi teoreticke spusteni.
    BAT
    BAT --- ---
    SLUPKA: Diky moc.
    Ale skoda, po precteni vidim, ze to bez dalsich obezlicek nejde, cimz padem to pro me ztraci tu eleganci a bude efektivnejsi se v tomto pripade na XAML uplne vykvajznout.
    SLUPKA
    SLUPKA --- ---
    BAT: To už tak úplně přímočaře nejde, ale řešení najdeš třeba tu: http://karlhulme.wordpress.com/2007/02/14/xpath-variabledynamic-parameters-in-wpf-binding/
    BAT
    BAT --- ---
    SLUPKA: Muzes mi to nejak podrobnejc popsat?
    To co bych chtel, je vlastne Binding uvnitr Bindingu - asi neco jako kdybych udelal:
    {Binding XPath=//Items/Item[@id='{Binding Source={x:Static local:Settings.Instance}, Path=ItemId}']}
    Takhle to samozrejme nejde, to jen pro lepsi vysvetleni co presne chci.
    SLUPKA
    SLUPKA --- ---
    BAT: Dá se bindovat na XPath cestu do toho xml, pak už ti stačí, aby si uměl XPath :)
    BAT
    BAT --- ---
    Je mozny podle hodnoty nabindovane property vybrat urcity element z XML
    a z tohoto elementu pak pouzit nejake parametry napr. k nastaveni zobrazeneho textu, obrazku, atp?

    Priklad:

    <?xml version="1.0" encoding="utf-8" ?>
    <Items xmlns="">
    <Item tag="0" icon="icon1.png" txt="Text 1">
    <Item tag="1" icon="icon2.png" txt="Text 2">
    <Item tag="2" icon="icon3.png" txt="Text 3">
    </Items>

    Vedle toho mam property cisloIkony.
    A pak toto:

    <Image Source="{Binding ...}" />
    <TextBlock Text="{Binding ...}" />

    Jak zaridit Binding, aby se z XML vybralo Item jehoz @tag odpovida aktualni hodnote cisloIkony,
    a z te vybrane polozky pouzit @icon a @txt pro nastaveni Image.Source a TextBlock.Text ?
    Googlim, MSDN procitam, ale ne a ne se dobrat reseni - da se to vubec udelat?
    BAT
    BAT --- ---
    MORMEGIL: muzu prepinat "Show output from" mezi Build, nebo Debug - oboji samozrejme vypisuje jine veci, ale nikde neni nic o spatnem bindovani.
    Mozna to vyplyva z nejakych omezeni Express edice.
    MORMEGIL
    MORMEGIL --- ---
    BAT: Tak v Output window jde přepínat, čeho Output se má zobrazit… (Blbá rada, ale co když…)
    BAT
    BAT --- ---
    SLUPKA: Clovece tuhle radu uz jsem kdesi cetl, ale v mem pripade to zkratka neplati.
    S bindovanim jsem se za tu kratkou dobu uz neco napatlal a nasekal a vyresil hromadu chyb,
    ale NIKDY jsem v output okne nemel zadnou zpravu jakkoliv se tykajici bindovani.
    Ani v Errorlistu, ani v Output window.

    (zacinam si myslet, ze je tam nekde jeste jine "Output" window o kterem nevim :)
    SLUPKA
    SLUPKA --- ---
    BAT: Jinak takové doporučení, když se ti něco nezdá kolem bindování, tak se podívej do Output window ve visual studiu. Když nesedí binding, tak se to tam napíše a občas je tam i hint co by mohlo být za problém (například, tady by ti to psalo, že property Server not found :))
    BAT
    BAT --- ---
    Diky obema za vysvetleni.
    Prepsal jsem to tak, aby instance Server byla property, a uz to funguje.
    NECROMAN
    NECROMAN --- ---
    SLUPKA: tak jsem to myslel, dik
    Kliknutím sem můžete změnit nastavení reklam