none
Возникает ошибка RRS feed

  • Вопрос

  • При открытии с помощью моей программы(очередного текстового редактора) текстового файла возникает ошибка: Значение StartIndex не может быть меньше нуля. Имя параметра: startIndex (ломается платформа Microsoft.NET Frimework) . При дальнейших запусках это не появляется, только при первом


    Сведения:

    Подробная информация об использовании оперативной 
    (JIT) отладки вместо данного диалогового 
    окна содержится в конце этого сообщения.

    ************** Текст исключения **************
    System.ArgumentOutOfRangeException: Значение StartIndex не может быть меньше нуля.
    Имя параметра: startIndex
       в System.String.Substring(Int32 startIndex, Int32 length)
       в Notepad.Form1.Form1_Load(Object sender, EventArgs e)
       в System.Windows.Forms.Form.OnLoad(EventArgs e)
       в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       в System.Windows.Forms.Control.CreateControl()
       в System.Windows.Forms.Control.WmShowWindow(Message& m)
       в System.Windows.Forms.Control.WndProc(Message& m)
       в System.Windows.Forms.Form.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Загруженные сборки **************
    mscorlib
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.34014 built by: FX45W81RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
    ----------------------------------------
    Notepad+
        Версия сборки: 1.0.0.0
        Версия Win32: 1.0.0.0
        CodeBase: file:///C:/Program%20Files/Notepad+/Notepad+.exe
    ----------------------------------------
    System.Windows.Forms
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.34250 built by: FX452RTMGDR
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.34262 built by: FX452RTMGDR
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.34239 built by: FX452RTMGDR
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Configuration
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.34230 built by: FX452RTMGDR
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Windows.Forms.resources
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.36213 built by: FX452RTMLDR
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    mscorlib.resources
        Версия сборки: 4.0.0.0
        Версия Win32: 4.0.30319.33440 built by: FX45W81RTMREL
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
    ----------------------------------------

    ************** Оперативная отладка (JIT) **************
    Для подключения оперативной (JIT) отладки файл .config данного
    приложения или компьютера (machine.config) должен иметь
    значение jitDebugging, установленное в секции system.windows.forms.
    Приложение также должно быть скомпилировано с включенной
    отладкой.

    Например:

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>

    При включенной отладке JIT любое необрабатываемое исключение
    пересылается отладчику JIT, зарегистрированному на данном компьютере,
    вместо того чтобы обрабатываться данным диалоговым окном.

    Отрывок кода, в котором, возможно, заключается эта ошибка(так как при отсутствии его ошибки не возникает):

     private void Form1_Load(object sender, EventArgs e)
            {
                timer1.Start();
                txtDate.Text = dtp1.Value.ToString();
                string pat = Environment.CommandLine.Substring(Environment.CommandLine.LastIndexOf(Environment.CurrentDirectory) - 1);
                string ext = Environment.CommandLine.Substring(Environment.CommandLine.LastIndexOf("."));
                string path = pat.Replace("\"", ""); 

                if (ext == ".text\"" || ext == ".txt\"")
                {
                    System.IO.StreamReader myRead = new System.IO.StreamReader(path, System.Text.Encoding.GetEncoding(1251));
                    rtxtDoc.Text = myRead.ReadToEnd();
                    myRead.Close();
                    OpenFileDialog openFileDialog1 = new OpenFileDialog();
                    openFileDialog1.FileName = path;
                    this.Text = openFileDialog1.SafeFileName;
                }
            }

    7 декабря 2015 г. 18:51

Ответы

  • Добрый день.

    Скорее всего падает Substring, т.к. LastIndexOf возвращает -1. Выполните по шагам, посмотрите что у вас там куда передается. Для выполнения по шагам, точка останова ставится F9. Выполнение одной команды F10. При наведении мышки на поле/свойство увидите значение в нем.

    8 декабря 2015 г. 6:36
    Отвечающий