System.FormatException is unhandled by user code - c#

I am sending my poolid in hdnfield when am converting it to show me error . poolid is int32 datatype
if (ddlStaticPoolName.Visible)
{
objUserEntity.POOLNAME = Convert.ToString(ddlStaticPoolName.SelectedItem.Text);
objUserEntity.POOlID = Convert.ToInt32(ddlStaticPoolName.SelectedValue);
}
else if (lblDynamicPoolName.Visible)
{
objUserEntity.POOLNAME = Convert.ToString(lblDynamicPoolName.Text);
objUserEntity.POOlID =Convert.ToInt32(hdnDynamicPoolID.Value);
}
else
{
objUserEntity.POOLNAME = "";
objUserEntity.POOlID = 0;
}

If the string Contains numerical characters But its not Whole Number (ex: double , decimal).
objUserEntity.POOlID = Convert.ToInt32(Convert.ToDouble(ddlStaticPoolName.SelectedValue));
If the string contains double Number it Cant be directly converted to Int. If this not Solve your problem you must give an Example of ddlStaticPoolName.SelectedValue.
If the string Contains Non numerical characters. Then you should use TryParse.
int num;
Int32.TryParse(ddlStaticPoolName.SelectedValue, out num);
objUserEntity.POOlID = num;
If the string contains invalid number. TryParse will set the value of num to 0. otherwise to the value Converted from string.
If you try this solutions one of them must solve your problem. But Try First solution then go To the next solution.

Related

Int32.TryParse C# - How to keep the last integer value

I'm trying to convert a string to int with
Int32.TryParse(input, out int number);
and I want to keep the last integer value.
E.g.
If string input = "123" then int number = 123 and if string input = "" or null then int number should stay 123 till input had a new string value.
Have someone a idea?
Keep a copy of the previous value, and if the parse failed copy it back in:
var previousValue = 1;
if(!int.TryParse(input, out var number))
{
number = previousValue;
}

Input string was not in a correct format when converting to integer

In line:
int d = Convert .ToInt32 ( TxtAmount.Text);
there is an error
Input string was not in a correct format
I want to convert the number inside TxtAmount.Text. if it's a negative number to decimal or integer without - and then convert it again to string because ConvertNumbersToArabicAlphabet the parameter is string.
int d = Convert .ToInt32 ( TxtAmount.Text);
ConvertNumbersToArabicAlphabet a = new ConvertNumbersToArabicAlphabet(d.ToString());
Label2.Text = a.GetNumberAr();
I'd check whether the input is numeric first and then convert, using Math.Abs to make sure the result is always a positive number:
int result = 0;
// Does text contain numbers only (and maybe a leading "-")?
if (Regex.IsMatch(TxtAmount.Text, #"^-?[0-9]+$"))
{
// Try to parse an int from it. If successful, convert it to
// a positive number in any case (= ignore the leading "-")
if (Int32.TryParse(TxtAmount.Text, out result))
result = Math.Abs(result);
}
// In all other cases, the result is 0
return result;
int d = Convert .ToInt ( TxtAmount.Text);
You can use this if you have a Integer Value within the textbox .
If text area contain only a single character then it's not work anymore.
try to put only Integer of same type of data you want to convert in to textbox
like if you want to add a double number then you can use.
Double num = Convert .ToDouble ( TxtAmount.Text);
if your textbox is empty may sure that you have validation or check for the same:
if(TxtAmount.Text==""||TxtAmount.Text=string.Empty)
{
TxtAmount.Text=0;
}
else
{
int d = Convert .ToInt ( TxtAmount.Text);
}
If all you want is to ignore the negative sign, then you can do string manipulation like:
string value = TxtAmount.Text;
if (value.StartsWith("-"))
{
value = value.Substring(1);
}
This is because Youse textbox is empty.
check weather your textbox have values or not
if(!String.IsNullOrWhiteSpace(TxtAmount.Text))
{
int d = Convert .ToInt32 ( TxtAmount.Text);
}

How to use Substring , to return an integer of all the values after the first char

I have an string AssetNumber that have the following format C100200.
so i need to do the folloiwng:-
Get all the characters after the first (e.g. 100200 using above example)
Convert the substring to integer
Return the integer + 1
but I do not know how to use the sub-string to get all the characters after the first char, and how to convert string into int? Any help on this will be appreciated.
var result = Int32.Parse("C100200".Substring(1)) + 1;
If you would like to have default value, if you can't parse current string:
int result;
if (!Int32.TryParse("sdfsdf".Substring(1), out result)) {
result = 42;
}
result+=1;

ASP.net Converting inputbox string to integer?

I have been trying for ages to convert a string taken from an input box in my asp form and converting it to an integer.
This integer variable will then be used for a database operation I have planned.
Here is what I have tryed:
string mytxtCHI = txtID.Text;
int #CHI = Convert.ToInt16(mytxtCHI);
Error:
System.FormatException
{"Input string was not in a correct format."}
Things I have tried:
- string mytxtCHI = txtID.Text;
int myNewID=(Int32.Parse(txtID.Text));
Thankyou for your time :)
Your way is correct, but what you should do to avoid errors
int myNewID = 0;
if(int.TryParse(txtID.Text, out myNewID))
{
//your code here
}
else
{
//your error handling here
}
You should use tryparse:
string mytxtCHI = txtID.Text;
int number;
bool result = Int32.TryParse(mytxtCHI , out number);
if (result)
{
Console.WriteLine("Converted '{0}' to {1}.", mytxtCHI , number);
}
else
{
if (value == null) value = "";
Console.WriteLine("Attempted conversion of '{0}' failed.", mytxtCHI );
}
Put a breakpoint on the line in Visual Studio. In debug mode, run to the breakpoint, and hover over txtID.Text to see what's in it.
When in the page lifecycle are you checking this value? Check it after Page Init. Check HttpRequest.Form to see what came down the wire.
You should use Int.TryParse, and handle the case when the value isn't a valid integer.
string mytxtCHI = txtId.Text;
int val;
if (!int.TryParse(mytxtCHI, out val))
{
// error here, value was not a valid integer.
}
// here, val contains the value, expressed as an integer.
Use watch window or System.Diagnostics.Debug.WriteLine(mytxtCHI) to check what's the value you are passing, is it blank?

Converting string to int using C#

I am using C# and I want to convert a string to int to verify name. For example ** or 12 is not a name. I just want to convert the string into ASCII values and then will verify the name. How do I do that?
Converting back and forth is simple:
int i = int.Parse("42");
string s = i.ToString();
If you do not know that the input string is valid, use the int.TryParse() method.
From what I understand, you want to verify that a given string represents a valid name? I'd say you should probably provide more details as to what constitutes a valid name to you, but I can take a stab at it. You could always iterate over all the characters in the string, making sure they're letters or white space:
public bool IsValidName(string theString)
{
for (int i = 0; i < theString.Length - 1; i++)
{
if (!char.IsLetter(theString[i]) && !char.IsWhiteSpace(theString[i]))
{
return false;
}
}
return true;
}
Of course names can have other legitimate characters, such as apostrophe ' so you'd have to customize this a bit, but it's a starting point from what I understand your question truly is. (Evidently, not all white space characters would qualify as acceptable either.)
There multiple ways to convert:
try
{
string num = "100";
int value;
bool isSuccess = int.TryParse(num, out value);
if(isSuccess)
{
value = value + 1;
Console.WriteLine("Value is " + value);
}
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
It's not clear to me what you're trying to do, but you can get the ASCII codes for a string with this code:
System.Text.Encoding.ASCII.GetBytes(str)

Categories