Синтаксический анализ C# представляет в виде строки “0” к целому числу

Вы можете попробовать что-то вроде этого

this.driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
this.driver.manage().timeouts().setScriptTimeout(60, TimeUnit.SECONDS); 
7
задан Jonathon Watney 11 July 2009 в 03:54
поделиться

8 ответов

Возможное объяснение:

В основном проблемой было значение sPositiveSign под HKEY_CURRENT_USER\Control Panel\International, устанавливаемым на 0, что означает, что положительный знак '0'. Таким образом, в то время как парсинг "положительного знака 0" отключается, и затем остальная часть строки ("") анализируется как число, которое не работает, конечно. Это также объясняет, почему международный Синтаксический анализ ("00") не был проблемой. Хотя Вы не можете установить положительный знак на '0' через Панель управления, все еще возможно сделать это через реестр, вызывая проблемы. Никакая идея, как компьютер пользователя в сообщении закончился с этой неправильной установкой...

Еще лучше, что является выводом этого на Вашей машине:

Console.WriteLine(System.Globalization.NumberFormatInfo.GetInstance(null).PositiveSign);

Я готов поставить Ваш печать a 0... когда мой распечатывает a + знак.

Я предлагаю проверить Ваш Control Panel > Regional and Language Options настройки... если они кажутся нормальными, попытайтесь изменить их на что-то еще, чем назад на любой язык, который Вы используете (я принимаю английский язык).

21
ответ дан 6 December 2019 в 05:56
поделиться

Я думаю, что это обычно не полагало, что хорошая идея звонить Преобразовывает. ToInt32 для значения, читающего из базы данных, что относительно значения, является пустым, что относительно значения не может быть проанализирован. У Вас есть какой-либо код обработки исключений здесь.

  1. Удостоверьтесь, что значение не является нулевым.
  2. Проверьте, что значение может быть проанализировано перед вызовом Int32. Синтаксический анализ. Рассмотрите Int32. TryParse.
  3. считать использование nullable типом как интервал? в этом случае.

HTH.

3
ответ дан 6 December 2019 в 05:56
поделиться

Править:
Ответ @Mike заставил меня думать, что это - чрезвычайно нечетное поведение, и простой поиск Google привел к этому результату: международный Синтаксический анализ странное поведение

Пустая строка также вызвала бы эту проблему.

Вы могли проверить на dbnull перед парсингом, также хорошо проверить проанализированные данные.

Вы могли использовать значение по умолчанию и TryParse..

int i = -1;
if(!int.TryParse(dr["MyColumn"] as string, out i))
   //Uh Oh!

Править:
Я отправил это как комментарий в ответе @Chris', но если sql тип данных является интервалом затем, почему не только используют метод GetInt32 на DataReater вместо того, чтобы получить его как строку и руководство, анализирующее его?

2
ответ дан 6 December 2019 в 05:56
поделиться

Вы уверены, что это "0" и не "пустое"? Какое исключение Вы получаете?

Править:

Только из любопытства, если это действительно дает сбой на международном Синтаксическом анализе ("0"), может Вы пробовать международный Синтаксический анализ ("0", CultureInfo. InvariantCulture);?

Иначе отправьте свой запрос. Какие-либо соединения?

2
ответ дан 6 December 2019 в 05:56
поделиться

Это - выход из левой стороны поля, но проверьте свои настройки локализации. У меня было много "входных строк, не был в правильном формате", когда я переместил веб-сайт в канадский сервер. Проблема была в DateTime. Метод синтаксического анализа, и был исправлен путем установки культуры на "en-США".

Да, Ваша ситуация отличается — но эй, Вы никогда не знаете.

1
ответ дан 6 December 2019 в 05:56
поделиться

необходимо проверить доктора ["Имя поля"]! = DBNull. Значение и Вы должны использовать TryParse, если это проходит тест DBNull...

if ( dr["FieldName"] != DBNull.Value )
{
    int val = 0;
    if ( int.TryParse( dr["FieldName"], out val ) )
    {
        i = val;
    }
    else
    {
        i = 0; // or some default value
    }
}
1
ответ дан 6 December 2019 в 05:56
поделиться

Вы проверяете на пустой указатель?

if(!dr.IsNull("FieldName")){
   int i = Convert.ToInt32(dr["FieldName"]))
}
0
ответ дан 6 December 2019 в 05:56
поделиться

Я видел, что эта проблема неожиданно возникает с.NET Двойной класс, анализирующий от строки "0" также.

Вот действительно дурацкая часть: можно закончить проблему при помощи другой учетной записи пользователя для запущения программы, и иногда если Вы уничтожите и воссоздадите текущую учетную запись пользователя на машине, то она будет хорошо работать.

Я должен все же разыскать это, но Вы могли бы закончить его этот путь, по крайней мере.

1
ответ дан 6 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: