C# - Problemi i rješenja izdvojena tema

poruka: 2.151
|
čitano: 703.846
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Traži po mogućnosti Wroxove ili Apressove, ja imam od potonjeg izdavača i odlična je, čak je prevedena na srpski, ali bolje bi bilo da nije.

16 godina
neaktivan
offline
C# - Problemi i rješenja

imam kao console aplikaciju jedan kalkulator, ali imam problem. ako se ne upiše broj program se ruši, dakle ako je tekst izbaci neki error i program neće dalje. kako to srediti?

Win7 je glupost ziva.....neke jako dobre igrice nemogu na njega zato sto je prenov...za nekih 2-3 god. ce bit dobro imat -Atom
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja
djdomi kaže...

imam kao console aplikaciju jedan kalkulator, ali imam problem. ako se ne upiše broj program se ruši, dakle ako je tekst izbaci neki error i program neće dalje. kako to srediti?

stavi blok koji vrši upis u try-catch blok a ubaciš do-while petlju da se unos ponovi sa uvjetom true ili false ili da se ponovi unos i program se neće rušiti  .

 

 

Recimo ovako ,samo izmjeni malo program ali otprilike ideja ti je tu :

 

 

 

 string izaberi ="";

       bool unos =true;

       do

       {

 

         Console.Clear();

         try

         {

           Console.WriteLine("Unesite prvi broj : ");

           int br1 = int.Parse(Console.ReadLine());

 

           Console.WriteLine("Unesite drugi broj : ");

           int br2 = int.Parse(Console.ReadLine());

           string operacija = "";

           Console.WriteLine("unesite matematičku operaciju koju želite: +,-,*,/");

           operacija = Console.ReadLine();

           switch (operacija)

           {

             case ("+"):

               Console.WriteLine("Zbroj je : {0}", br1 + br2);

               break;

             case ("-"):

               Console.WriteLine("Razlika je : {0}", br1 - br2);

               break;

             case ("*"):

               Console.WriteLine("Umnožak  je : {0}", br1 * br2);

               break;

             case ("/"):

               Console.WriteLine("Podijeljeno  je : {0}", br1 / br2);

               break;

             default:

               Console.WriteLine("Sory niste izabrali operaciju!");

               break;

           }

         }

         catch (Exception e)

         {

           Console.WriteLine("Greška {0}", e);

         }

 

         Console.WriteLine("Ako želite nastavak y ili n?");

         izaberi = Console.ReadLine();

         if (izaberi == "y" || izaberi == "Y")

           unos = true;

         else

           break;

 

 

       //} while (izaberi == "y" || izaberi == "Y");

       } while (unos);

 

 

..ovo je samo skica ali otprilike tako ,i sad se može uljepšavati ....

 

 

 

Private
Poruka je uređivana zadnji put pet 27.4.2012 18:20 (Private).
17 godina
protjeran
offline
C# - Problemi i rješenja

A da koristi int.TryParse. I try catch ne bih preporučio za kontrolu logike i granjanja.

Programko http://programko.bloger.hr
 
1 0 hvala 0
13 godina
neaktivan
offline
C# - Problemi i rješenja

Ja mislim da je ovako najbolje. Dodaj ovo u glavni program:

 

public static System.Boolean DaLiJeBroj(System.Object Broj)

     {

       if (Broj == null) return false;

 

       if (Broj is Int32 || Broj is Int64 || Broj is Decimal || Broj is Single || Broj is Double) return true;

 

       try

       {

         if (Broj is string)

           Double.Parse(Broj as string);

         else

           Double.Parse(Broj.ToString());

         return true;

       }

       catch { }

       return false;

     }

 

 

Brojeve deklaliraš kao:

 

System.Object Broj;

 

I ispituješ uslov:

 

if (DaLiJeBroj(Broj))

       {

         //Ako je broj

       }

       else

       {

         //Ako nije broj

       }

 

Dafuq I just read?
Poruka je uređivana zadnji put sub 28.4.2012 0:23 (SaidSikiraX).
Moj PC  
0 0 hvala 0
17 godina
protjeran
offline
C# - Problemi i rješenja

Ovaj kod je loše dizajniran i problematičan:

Što ako je broj jedan od ovih tipova sbyte, byte, char, short, ushort ,uint, ulong?

Što ako je Double ima vrjednost NaN ili NegativeInfinity?

Double ima TryParse od ako se ne varam 1.0 .NET-a; nema potrebe koristiti catch 

Što ako je input string 1.0M ili 1d  dali je to ispravan input?

Dali je ispravan unos 123,123 ili 123.123

Dali je  12e3 ispravan input?

 

Mislim da je ovaj  kod dosta sigurniji i bolji ako pišemo vlastitu funkciju

 

public static class Extensions
{
    public static bool IsNumeric(this string s)
    {
        foreach (char c in s)
        {
            if (!char.IsDigit(c) && c != '.')
            {
                return false;
            }
        }

        return true;
    }
}

Programko http://programko.bloger.hr
 
2 0 hvala 0
17 godina
offline
Re: C# - Problemi i rješenja
djdomi kaže...

imam kao console aplikaciju jedan kalkulator, ali imam problem. ako se ne upiše broj program se ruši, dakle ako je tekst izbaci neki error i program neće dalje. kako to srediti?

Dao sam već ovdje primjer implementacije TryParse metoda kod konzolnog upisa:

http://www.bug.hr/forum/topic/programiranje/c-problemi-rjesenja/142904.aspx?page=6

 

To je sve što ti za sad treba, kako je @programko naglasio, a njegov Extension  metod možeš napisati za vježbu, ukoliko si se susreo s tom vrstom metoda.

A što se tiče moje implementacije TryParse metoda, baš je prilagođen konzolnom unosu, jer unosiš element u while petlji dok god ne uneseš validni element.

Poruka je uređivana zadnji put ned 29.4.2012 18:26 (Floki).
14 godina
neaktivan
offline
C# - Problemi i rješenja

Jel netko zna dobru literaturu na internetu za naučit više o formama?

Sharing Is NOT Stealing!
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja
Mamic kaže...

Jel netko zna dobru literaturu na internetu za naučit više o formama?

Već sam ti dao negdje linkove, najbolje bi bilo knjigu u ruke.

Evo sam oficijelnog sajta:
http://windowsclient.net/learn/videos.aspx

17 godina
offline
Re: C# - Problemi i rješenja
djdomi kaže...

imam kao console aplikaciju jedan kalkulator, ali imam problem. ako se ne upiše broj program se ruši, dakle ako je tekst izbaci neki error i program neće dalje. kako to srediti?

Zar vi ljudi uopce ne validirate unose prije nego ih pocmete koristiti u algoritmima? Vi samo procitate unos, opalite, pa di pukne pukne...

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Da, validacija je zaseban proces prilikom razvoja bilo kojeg IT sistema, treba se malo više pozabaviti njome.

16 godina
neaktivan
offline
Re: C# - Problemi i rješenja
tnakir kaže...
djdomi kaže...

imam kao console aplikaciju jedan kalkulator, ali imam problem. ako se ne upiše broj program se ruši, dakle ako je tekst izbaci neki error i program neće dalje. kako to srediti?

Zar vi ljudi uopce ne validirate unose prije nego ih pocmete koristiti u algoritmima? Vi samo procitate unos, opalite, pa di pukne pukne...

..hehehe..zato ljudi dođu ovdje pitati da im kažemo ... {#}

Private
16 godina
odjavljen
offline
Re: C# - Problemi i rješenja
tnakir kaže...

Zar vi ljudi uopce ne validirate unose prije nego ih pocmete koristiti u algoritmima? Vi samo procitate unos, opalite, pa di pukne pukne...

Zanimljivije je kasnije hvatati exceptione u hrpi try..catch koda {#}

http://nighthawk-software.blogspot.com/
17 godina
offline
Re: C# - Problemi i rješenja
Sum_of_all_fears kaže...
tnakir kaže...

Zar vi ljudi uopce ne validirate unose prije nego ih pocmete koristiti u algoritmima? Vi samo procitate unos, opalite, pa di pukne pukne...

Zanimljivije je kasnije hvatati exceptione u hrpi try..catch koda {#}

Da, zbilja je lakse throwat exception nego provjerit jel korisnik unio podatak u formatu koji je potreban, te u slucaju da nije obavijestiti korisnika... sta ja znam... zacrvenjivanjem input polja? Da :)

 

Ono sto hocu reci je da se ucite nekom redu iz pocetka. Na programima od 10-ak linija koda. Jer se losih navika tesko rijesiti. Validacija inputa je must. Prije nego dodje do business layera.

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
15 godina
neaktivan
offline
C# - Problemi i rješenja

Evo čitam onu Wroxovu knjigu i došao sam do djela kojeg ne shvaćam pa dalje ne želim dok mi netko ne objasni pa sam došao pitati ovdje :)

 

Naime spoimnju se implicitne i eksplicitne konverzije...

Ne shvaćam što bi trebalo značiti implicitno i eksplicitno... možda glupo pitanje, ali stvarno ne razumijem :(

SDP ≠ HDZ
 
0 0 hvala 0
13 godina
neaktivan
offline
C# - Problemi i rješenja

Koji je dobar IDE za c#?

kinder milch schokolade
 
0 0 hvala 0
15 godina
offline
Re: C# - Problemi i rješenja
iprogramer kaže...

Koji je dobar IDE za c#?

Visual C#

Twitter- @capttawish Linux/GNU live forever.
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Najbolji je Visual C#. Imaš i alternative - Sharp Develop i Mono Develop koji rade i na Linuxu.

Ali po meni, a većinom radim na Windowsu, je VC# zakon. Čak i besplatna Express verzija mi je odlična. Kada se jednom navikneš na taj IDE, ništa ti više ne treba.

16 godina
odjavljen
offline
C# - Problemi i rješenja

Imam mali problem. Ovo ispod je jednostavna login forma koja bi trebala iz lokalne sqlite3 baze pokupiti korisnike.

 

Problem je u tome što login pušta samo zadnjeg korisnika u bazi. Već 3 sata piljim u ovo, isprobao sam x različitih načina i ovaj mi se čini "najčišći" ali nikako skužit zašto pušta samo zadnjeg iz popisa.

 

Evo koda. Ovaj button1 click je problematičan.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;

namespace SimpleGym
{
    public partial class Form1 : Form
    {
        string username;
        string user;
        string password;
        int pass = 0;

        List<string> usernames = new List<string>();
        List<string> passwords = new List<string>();

        int ucount;

        DataTable t_users = new DataTable();

        public Form1()
        {
            InitializeComponent();

            string connString = "Data Source=C:\\Documents and Settings\\User\\SimpleGym\\main.db;Version=3;"; // conn string

            SQLiteConnection conn = new SQLiteConnection(connString);

            string getUsers = "SELECT * from users";

            SQLiteDataAdapter usersAdapter = new SQLiteDataAdapter(getUsers, conn);

            DataSet users = new DataSet();

            usersAdapter.Fill(users, "users");

            t_users = users.Tables["Users"];

            ucount = t_users.Rows.Count;

            for (int i = 0; i < ucount; i++ )
            {
                username = t_users.Rows[i]["user_name"].ToString();
                usernames.Add(username);

                password = t_users.Rows[i]["user_password"].ToString();
                passwords.Add(password);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)
        {
            user = textBox1.Text;
            password = textBox2.Text;

            for (int i = 0; i < ucount; i++)
            {
                string usr = t_users.Rows[i]["user_name"].ToString();
                string pw = t_users.Rows[i]["user_password"].ToString();

                label3.Text = pass.ToString();

                if (usr == textBox1.Text && pw == textBox2.Text)
                {
                    pass = 1;
                }
                else
                {
                    pass = 2;
                }
            }
            if (pass == 1)
                {
                    MessageBox.Show("Login Successfull!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            else if (pass == 2)
                {
                    MessageBox.Show("Wrong username or password!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
        }
    }
}

Uvjeren sam da je neka glupa greška u ovim IFovima na kraju. Svi korisnici osim posljednjeg dobiju "Wrong username or password" iako su im podaci ispravni.

 

Ako netko ima ideju za elegantnije rješenje, nek slobodno kaže.

 

[edit] - ova forma će loadati i postavke, liste usera i još dosta toga tako da se nemojte previše čudit {#}

 

[edit 2] - problem riješen. Kao što rekoh, glup problem među IFovima. Falio je jedan break;

http://nighthawk-software.blogspot.com/
Poruka je uređivana zadnji put sri 9.5.2012 22:59 (Sum_of_all_fears).
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
C# - Problemi i rješenja

POzdrav svima!

Molim vas ako netko ima ideju kako da rijesim problem.Na pocetku programa korisnik unosi jedno 20ak šifri kupaca.Potrebno je - onako kako ih on unosi da se nekon svakog unosa  prikažu neki detalji o kupcu(naziv,sjedište, itd.).Znaci kao nekakva tablica koja bi

se interaktivno kreirala za vrijeme unosa(datagridview?,hrpa databindanih textboxova?).Znaci treba mi ideja ili ako je netko rjesavao slican problem da mi kaze na koji nacin je to ostvario.Uneseni podaci se kasnije koriste za kreiranje izvjestaja(to nije problem).Hvala na odgovoru!

 
0 0 hvala 0
15 godina
neaktivan
offline
C# - Problemi i rješenja

Ja bih samo htio još jednom zahvaliti na preporuci knjiga i vidim da nisam fulao prelazak na C# jer čitam Wroxovu knjigu, došao sam do enumova, structova, arraya i ful je zanimljivo :)

 

Nisam baš volio programiranje, uvijek je bilo nekako šturo, ali sad izgleda puno bolje :)

SDP ≠ HDZ
 
1 0 hvala 0
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja
xDinichx kaže...

Ja bih samo htio još jednom zahvaliti na preporuci knjiga i vidim da nisam fulao prelazak na C# jer čitam Wroxovu knjigu, došao sam do enumova, structova, arraya i ful je zanimljivo :)

 

Nisam baš volio programiranje, uvijek je bilo nekako šturo, ali sad izgleda puno bolje :)

jel valja wroxova za "total-retarde"?

Win7 je glupost ziva.....neke jako dobre igrice nemogu na njega zato sto je prenov...za nekih 2-3 god. ce bit dobro imat -Atom
15 godina
neaktivan
offline
Re: C# - Problemi i rješenja
djdomi kaže...

jel valja wroxova za "total-retarde"?

  e, nezz :D Ja sebe valjda smatram total retardom, ali sam imao neko znanje iz consolnih appova u C++-u (za natjecanja)... i onda mi je ova knjiga za sada super legla... sve fino objasni, nema previše stručnih riječi koje su nerazumljive, puno generalnih primjera i try it out primjera...

 

Sviđa mi se, sve u svemu :)

SDP ≠ HDZ
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

mislim da ti je problem sto ti petlja kada nađe korisnika i password u bazi nastavi se odvijat do kraja pa ti se u sljedecoj iteraciji mjenjaju i usr i pw varijabla!!!
kad petlja nađe odgovarajući usname i pass zaustavi je breakom ili postavi i=ucount


if (usr==texBox1.Text&&pw==textBox2.Text)p

{

pass=1;

i=ucount;

}

vlastoručni potpis
Poruka je uređivana zadnji put sri 9.5.2012 22:44 (karaandrijan).
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja
xDinichx kaže...
djdomi kaže...

jel valja wroxova za "total-retarde"?

  e, nezz :D Ja sebe valjda smatram total retardom, ali sam imao neko znanje iz consolnih appova u C++-u (za natjecanja)... i onda mi je ova knjiga za sada super legla... sve fino objasni, nema previše stručnih riječi koje su nerazumljive, puno generalnih primjera i try it out primjera...

 

Sviđa mi se, sve u svemu :)

skinuo sam, pa kaj bude, bude :D

inače sam pratio jednu knjigu, isto za početnike, ali je ipak nekako prebrz ritam. ovih 1000 stranica je već bolje :D

10 stranica na dan, naučim da 100 dana :D (kako sam dobar u matematici :) )

Win7 je glupost ziva.....neke jako dobre igrice nemogu na njega zato sto je prenov...za nekih 2-3 god. ce bit dobro imat -Atom
15 godina
neaktivan
offline
Re: C# - Problemi i rješenja
djdomi kaže...

skinuo sam, pa kaj bude, bude :D

inače sam pratio jednu knjigu, isto za početnike, ali je ipak nekako prebrz ritam. ovih 1000 stranica je već bolje :D

10 stranica na dan, naučim da 100 dana :D (kako sam dobar u matematici :) )

  Tako sam i ja računao, ali ako si kao ja jednu večer = jedno poglavlje :D

ili ako baš nemam vremena onda razvučem jedno poglavlje na par dana :)

SDP ≠ HDZ
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja
xDinichx kaže...
djdomi kaže...

skinuo sam, pa kaj bude, bude :D

inače sam pratio jednu knjigu, isto za početnike, ali je ipak nekako prebrz ritam. ovih 1000 stranica je već bolje :D

10 stranica na dan, naučim da 100 dana :D (kako sam dobar u matematici :) )

  Tako sam i ja računao, ali ako si kao ja jednu večer = jedno poglavlje :D

ili ako baš nemam vremena onda razvučem jedno poglavlje na par dana :)

sad nemam previše vremena pa ću vrtiti 10 str/dan.

za godinu dana java (minecraft modding :D)

Win7 je glupost ziva.....neke jako dobre igrice nemogu na njega zato sto je prenov...za nekih 2-3 god. ce bit dobro imat -Atom
15 godina
neaktivan
offline
Re: C# - Problemi i rješenja
Sum_of_all_fears kaže...

Imam mali problem. Ovo ispod je jednostavna login forma koja bi trebala iz lokalne sqlite3 baze pokupiti korisnike.

 

 

Zašto to sve nisi riješio preko jednog SQL upita !? I prvojerio record count , znaći upit select * from nešto where usernmaue like 'nešto' and pwd like 'nešto' , nakon toga prvojeriš broj vračenih recorda i to je to.

 

 

 

16 godina
odjavljen
offline
Re: C# - Problemi i rješenja

Moglo se i tako ali ovo mi je usput poslužilo da popuni jednu klasu koje tu nema.

 

Bilo je tuda svakakvog kemijanja, taj login moram popravit. Hvala svejedno

http://nighthawk-software.blogspot.com/
Nova poruka
E-mail:
Lozinka:
 
vrh stranice