HepBeg Club - Hlavní stránka   www.hepbeg.net Oficiální stránky HepbegClubu®  
  Hlavní menu
  • Hlavní stránka
  • Seznam rubrik
  • Download
  • Weblinks
  • Ankety
  • TOP 15
  • Personalizace
  • Forum

  •   Hledání
    Rozšířené vyhledávání

      Články dle data
    <<  Červenec  >>
    PoÚtStČtSoNe
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 

      Pluginy
    Testování

      Spřízněné weby
    Zde jsou zdroje informací o phpRS, případně www stránky spoluautorů tohoto webu
    www.phprs.cz/magazin
    www.stavela.cz
    HPS v IT - Informace a zábava pro IT človíčky
    PCNews.cz
    pabi3.com - Stránka o phpRS, originální články zejména o layoutech, které tam jsou i k stažení.
    BGV
    phpRS modifikace
    SuperSvět

    Jinonický zpravodaj
    needrland.cz
    mrtriska.com
    quattro.haje.cz
    lipnik.info
    webinfo.sk-MSteve
    Mart
    Pykaso.NET

    huspeka.net

      Vtip pro Vás ...
    Náhled ... 
(kliknutím zobraz!)

    8 dam WEB.NET aplikace (asp.net) + conzolova aplikace .NET
    Vydáno dne 09. 12. 2004 (6246 přečtení) | Rubrika: M$.NET

    8 dam WEB.NET aplikace (asp.net) + conzolova aplikace .NET

    Dneska to bude velmi jednoduche :-), ne opravdu! V podstatě nic programovat nebudeme, budeme pouze skládat již vytvořené.  Cílem tedy bude zobrazit výsledky řešení úlohy o 8 dam jako webovou stránku stihneme i conzolovou aplikaci a tím tuto úlohu navždy opustíme.

    Vyjdeme z naší dll knihovny, kterou jsme si minule vytvořili. Jenom zopakuji, že dll knihovnu vytvoříme touto kompilací cs souboru:

    csc /t:library /r:System.dll /r:System.Data.dll /r:System.Xml.dll _8dam.cs

    WEB APLIKACE


    Ukažme si výsledek. Někdy na začátku seriálu o .NET jsme si ukazovali uživatelský kontrol. Dnes najde plné uplatnění. Co se týče toho našeho ascx kontrolu pojmenovaného "ShowDesk.ascx" tak v něm uděláme opravdu kosmetickou úpravu:

    int _intDesk = 0;
    public DataSet _DataSource8Q = null;

    // implementace vlastnosti aktualni plochy sachovnice
    public int intDesk
    {
    set { _intDesk = value; }
    }

    Vytvoříme vlastnost intDesk, která určuje index do tabulky v DataSetu. Položku _DataSource8Q dáme jako veřejnou (public) abychom ji mohli okamžitě nastavit, z hlavní aspx stránky.

    Zbývá napojit dll do aspx kontrolu a vytvořit selectboxy pro volitelné rozmístění 8 dam. Import dll souboru se provede direktivou register (podobně jako vkládání uživatelského kontrolu) POZOR! dll soubor musí být umístěn v podadresári BIN a nadřazený adresář musí být na web serveru (např. na IIS) označen jako webový adresář. (poz. kdyby náhodou programová ukázka nejela tak to je nejspíš tenhle problem :-)  Dále v kódu deklarujeme proměnnou o8dam jako instanci naší třídy z dll souboru, vlastní objekt vytváříme v události PageLoad stránky. No a pro všechny řešení ulohy naplňujeme selectboxy a je to.

    <%@ Register TagPrefix="uc1" TagName="ShowDesk" Src="ShowDesk.ascx" %>
    <%@ Register TagPrefix="BINdd" Namespace="App_8dam" Assembly="_8dam" %>
    <%@Import Namespace="System.Data" %>

    <html>
    <script language="C#" runat="server">

    App_8dam._8dam o8dam;

    private
    void Page_Load(object sender, System.EventArgs e)
    {
            o8dam = new _8dam();
            ShowDesk1._DataSource8Q = o8dam.SACHOVNICE;
            ShowDesk1.intDesk = 90;
            if (!Page.IsPostBack)
            {
                    for (int i=0; i<o8dam.POCET_RESENI; i++) {

                            Reseni.Items.Add("Řešení " + (i+1));
                    }
                    for (int i=0; i<o8dam.UNIKATNICH_RESENI; i++) {
                            UReseni.Items.Add("U:Řešení " + (i+1));
                    }
            }
    }
    private void Index_Changed(object sender, System.EventArgs e)
    {
            ShowDesk1.intDesk = Reseni.SelectedIndex;
    }
    private void Index_Changed2(object sender, System.EventArgs e)
    {
            ShowDesk1.intDesk = o8dam.getUNI(UReseni.SelectedIndex);
    }
    <script>


    HTML doplníme select boxy

    <asp:dropdownlist id="Reseni" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Index_Changed"></asp:dropdownlist>
    <asp:dropdownlist id="UReseni" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Index_Changed2"></asp:dropdownlist>

    CONZOLOVÁ APLIKACE


    Tak, ta je nejjednodušší, celý kód je níže. dll soubor dáme do stejného adresáře. Vytvořme soubor napr. form1.cs a ten budeme kompilovat podobně takto:

    csc /t:exe /r:System.dll /r:System.Xml.dll /r:System.Data.dll /r:_8dam.dll
    /out:8dam.exe form1.cs

    vlastní celý obsah souboru form1.cs je:

    using System;
    using System.Data;
    using App_8dam;

    namespace CONApplication1
    {
      class CON_8dam
      {
         static App_8dam._8dam o8dam = new _8dam();
         public static int Main(string[] args)
         {
           Console.WriteLine("***********************************");
           Console.WriteLine("Počet řešení: {0}", o8dam.POCET_RESENI);
           Console.WriteLine("UNI řešení {0}", o8dam.UNIKATNICH_RESENI);

           int x;

           do
           {
              Console.WriteLine("Ukončení programu = zadání čísla "0"");
              Console.Write("Zadej řešení (1-{0}) > ", o8dam.POCET_RESENI);
              try
              {
                x = Int32.Parse(Console.ReadLine());
              }
              catch
              {
                Console.WriteLine("Chybné číslo");
                x = -1;
              }
              if ((x > 0) && (x <= o8dam.POCET_RESENI))
              {
                zobrazReseni(x-1);
              }
           } while (x > 0);

           if (x == 0)
           {
             Console.WriteLine("Konec...");
           }
           return 0;
        }

        static void zobrazReseni(int idx)
        {
          for (int i=0; i<8; i++)
          {
            for (int j=0; j<8; j++)
            {
              if ((int) o8dam.SACHOVNICE.Tables[idx].Rows[j].ItemArray[7-i] == 1)
              {
                Console.Write("* ");
              }
              else
              {
                Console.Write(". ");
              }
            }
            Console.WriteLine("");
          }
        }
      }
    }

    Pokud jste v tomto serialku došli až sem, tak si myslím že už je to pro Vás hračka. Nová je framework funkce Console.ReadLine, která čte informace ze vstupu, snažíme se tuto informaci (řetězec) konvertovat na číslo. Trošku jsem si zjednodušil život a použil konstrukci try-catch, k odladění chyby, což je jednoduché, ale asi trochu náročné co do zdrojů a režie. Máme tam smyčku, dokud uživatel nezadá číslo nula tak se program snaží volat metodu zobrazReseni(), jinak program nulou (nebo chybou vstupu) končí.

    Tak, nevím jak Vy ale mě už tato úloha leze pořádně krkem (chtěl jsem řict něco horšího :-) ale ovládl jsem se, přiště se tedy těšte na něco jiného. Když to tedy zhrnu, tak to nejdůležitější je, že jsme vytvořili jeden dll soubor, který  použijeme nejenom více krát, ale taky v jiných typech aplikace. Taky takto napsaná C# dll knihovna může být použita i programátorem, který používá úplně jiný .NET framework jazyk, typicky např. Visual Basic.NET či J#. Využili jsme podruhé jednou vytvořený uživatelský kontrol (ascx soubor)  i když bohužel  jsme do něho nově zasahovali, a to bývá problém vývoje. Je to především proto, že jsme přesně nevěděli, jak přesně bude kontrol fungovat (především chybně navržené vstupy do kontrolu).

    zdrojové soubory:
    web aplikace (on-line)
    web aplikace (archiv)
    konzolová aplikace (archiv)
    window aplikace (archiv) (článek)
    algoritmus 8dam (archiv) (článek)

    Mějte se a užívejte života

    Zdraví Michael



    Související články:
    Silent Night v .NET (19.12.2004)
    8 dam WINdows .NET aplikace (05.12.2004)
    8 dam (konzolová aplikace) v .NET (11.11.2004)
    Stránkování obrázku v ASP.NET (05.08.2004)
    ADO.NET a kontroly v ASP.NET (10.06.2004)
    Úvod do ASP.NET (08.05.2004)
    Platforma MS.NET (27.01.2004)

    Autor:Michael Stavěla|Komentářů: 68|Přidej!|Informační e-mailVytisknout článek

      Novinky

    20.02.2007: BETA verze int fora pro phpRS 28x
    BETA verze Int fora pro phpRS 280/281 je zde. Je to jenom prosté přepsání do nové verze bez plánovaných změn funkčnosti. Zejména prozatím nepodporuje systém levelů.

    17.09.2006: Spamy ve fóru
    měli jsme trochu problémy se spamem ve foru, které je trochu starší provenience (v současné době se s velkými přestávkami - máme málo času - snažíme vytvořit verzi pro 280. Tremín nedokážeme odhadnout, je tam jeden poměrně obtížný logický problém) Takže jsme tam aplikovali jednu poměrně primitivní ochranu, kterou nyní musíme vložit do nové verze. Snad to na chvíli vydrží.

    13.03.2006: Nový článek
    po hodně dlouhé době. Doufáme, že přibudou další. Náměty by byly, ale čas není.

    20.02.2006: Oprava chyby
    V intforu alfa_5, která znemožňovala přihlášení do "privátních" témat. Opravený balíček s aktualizovanou verzí slovenského slovníku najdete v downloadu. Postačí aktualizovat soubory kifosmer.php a kifosmer2.php + slovníkový soubor (adresář kifo/slovnik/kifosl.sk.php)


      Fórum
    přidáno: včera
    Re:slots for...
    "<a href=" http://www.f . . . "
    (diskuze: O tomto fóru)
    přidáno: včera
    Re:slots for...
    "this post is fantastic <a h . . . "
    (diskuze: O tomto fóru)
    přidáno: včera
    Re:slots for...
    "Hello good day <a href=&quo . . . "
    (diskuze: O tomto fóru)

      Plánované akce

  • Kalendář akcí

  •   testovací blok
     Cyklo
     Informace
     M$.NET
     Microsoft
     MySQL
     Office
     PHP
     phpRS
     Příroda
     Testovací

    30.07.2010 : Bořivoj | Hlavní stránka | Seznam rubrik | Download | Weblinks | Návštěvní kniha | Web site powered by phpRS

    © 2002,2003 - Kryšpín & Špíček. Postaveno na redakčním systému phpRS .
    Tyto stránky podporuje firma IDT | Odkazy: ČáslavskoMCCe-firmaV.N.