[ Zoran9707 @ 02.01.2007. 17:15 ] @
Da li neko zna kako se pise naredba u C#.Net 0u za proveru numericke vrednosti?

Pandam naredbi IsNumeric u VB.Net-u samo sto mi treba ta ista naredba u C#.Net-u.

P.S
Srecna Nova godina :)
[ roberto555 @ 02.01.2007. 18:43 ] @
ako je to što mislim možeš ovako sa "is"

primjer:

Code:

int i=5;
bool rezultat=i is int; //u ovo m slucaju vratit ce true, da je recimo "i is decimal" bio bi false
[ sstanko78 @ 02.01.2007. 18:58 ] @
Ovo vazi za pojedinacne karaktere

Char.IsDigit (Char)
vraca true ako jeste
[ Zoran9707 @ 03.01.2007. 10:32 ] @
Recimo u TextBox upisem vrednost 233.22 i naravno posto se ispita da je to ispravna numeric-ka vrednost program tece dalje. Ali
ukoliko se u TextBox upise 323.d213 program ispita, vidi da to nije numericka vrednost i obavestio nekako sistem-tj mene :) .

Ja jesam to do sada zavrsavao na jedam malo cudan nacin ali ukoliko neko zna jednu komandu koja ce da vrati True ili False ili nekkao
drugacije da obavesti da to jeste/nije numercika vrednost toi bi bilo mnogo brze i lakse.

u VB.Net-u postoji naredba
IsNumeric(txtVrednost.text) koja vraca true-jeste numericka vrednost ili false-nije numericka.

Pitanje da li ce jedna nardba da prodje jer C#.Net trazi eksplicitnu konverziju ali ako neko zna to bi bilo prava stvar.

Pozdrav
[ west_herc @ 03.01.2007. 11:22 ] @
Ja sam to radio sa regular expression, i taj text box tj na njegov event validate staviš to i ako je to dozvoljeno prođe a ako nije odmah javi upozorenje.
[ sstanko78 @ 03.01.2007. 11:31 ] @
Jedno od resenja je da skines neki od gotovih text box kontrola koje to
vec imaju ugradjeno: (FREE su)
http://www.codeproject.com/cs/.../ValidatingTextBoxControls.asp
[ vladdy @ 03.01.2007. 17:43 ] @
Eto kakvi su ovi c# zealoti hehe, sve bi ucinili samo da ne dodaju reference na Microsoft.VisualBasic.dll :) :)

Namespace: Microsoft.VisualBasic
Module: Information
Assembly: Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Public Function IsNumeric(ByVal Expression As Object) As Boolean


Kada se pokrene Lutz Roeder's reflector dobije se sadrzina funkcije pa prepisi u c#.


Code:
Public Shared Function IsNumeric(ByVal Expression As Object) As Boolean
      Dim num1 As Double
      Dim convertible1 As IConvertible = TryCast(Expression,IConvertible)
      If (convertible1 Is Nothing) Then
            Dim chArray1 As Char() = TryCast(Expression,Char())
            If (Not chArray1 Is Nothing) Then
                  Expression = New String(chArray1)
            Else
                  Return False
            End If
      End If
      Dim code1 As TypeCode = convertible1.GetTypeCode
      If ((code1 <> TypeCode.String) AndAlso (code1 <> TypeCode.Char)) Then
            Return Information.IsOldNumericTypeCode(code1)
      End If
      Dim text1 As String = convertible1.ToString(Nothing)
      Try 
            Dim num2 As Long
            If Utils.IsHexOrOctValue(text1, num2) Then
                  Return True
            End If
      Catch exception1 As  StackOverflowException
            Throw exception1
      Catch exception2 As  OutOfMemoryException
            Throw exception2
      Catch exception3 As  ThreadAbortException
            Throw exception3
      Catch exception7 As  Exception
            Return False
      End Try
      Return DoubleType.TryParse(text1, num1)
End Function



Mada imas onu try...catch hack foru koja je cak i dobra, jeste da imas "try" overhead

Code:

public bool IsNumeric(object o)
{
      try
      {
            Int32.Parse(o);
      }
      catch
      {
            return false;
      }
      return true;
}
[ Dejan Vesic @ 03.01.2007. 18:02 ] @
Code:

    public static bool IsNumeric(string  numCandidate)
    {
        int result;
        return int.TryParse(numCandidate, out result);
    }
[ StrokaviKod @ 04.01.2007. 10:08 ] @
Code:

public static bool IsNumeric(object number) {
    string _number = string.Empty;

    if(number != null && number.GetType().Equals(typeof(string))) {
        _number = number.ToString();
    }
    if(_number != string.Empty)
                return char.IsNumber(_number, _number.Length - 1)? true : false;
    else return false;
}
[ stevan22 @ 09.01.2007. 03:34 ] @
ma samo furaj try & catch blokowe
[ Fedya @ 09.01.2007. 11:29 ] @
Bas ste komplikatori :)

if(decimal.TryParse(tb.Text, out decimalnaVrednost))
{
// sve je proslo ok
}
else
{
// unet je pogresan karakter
}
[ Zoran9707 @ 24.01.2007. 08:46 ] @
Iskrslo nesto pa nisam probao resenja koja ste predlozili.
Ali u narednih par dana cu da istestiram.

Hvala puno.
[ 01011011 @ 05.03.2008. 21:22 ] @
Imam i ja slican problem a necu da koristim Microsoft.VisualBasic dll :)

ovih dosta primjera sto ste pokazali covjeku ne valjaju, jer ako uradi

int.TryParse i ubaci decimal, vratice mu false, sto ce znaciti da nije integer ali je jos uvijek broj i trebalo bi da vrati True :)

evo jedne solucije koju sam ja nasao, nadam se da je dobra posto je i ja moram koristiti, probao sam u snippetu razne hackove i jos nisam uspio da je unistim... Mogu reci da je C# osiromasen sa ovom funkcijom. Imaju npr char.IsNumber(), a nemaju string.IsNumeric() mislim stvarno :) ????

Code:
public static bool IsNumeric(object Expression)
    {
      bool isNum;
      double retNum;
      isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any,System.Globalization.NumberFormatInfo.InvariantInfo, out retNum );
      return isNum;
    }


Sta mislite o tome?

[ 01011011 @ 05.03.2008. 21:42 ] @
ok evo sad sam shvatio da ce i ovo da radi kako treba

Code:

        public static void RunSnippet()
    {
        decimal result = 0;
        
        Console.WriteLine(Decimal.TryParse("45", out result));
    }