2017-08-23 3 views
0

Ich versuche, ein Programm, das etwas an den Anfang jeder Zeile einer Textdatei fügt, und schreibt es in ein Textfeld, und ich bekomme diesen Fehler in der Zeile textBox2.Lines[c] = "STRING " + lines[c] + "\nENTER\n";.C# System.IndexOutOfRangeException: 'Index lag außerhalb der Grenzen des Arrays.' Beim Hinzufügen von Text zu einem Textfeld

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace TextDucky 
{ 
public partial class Form1 : Form 
{ 
    string path; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Open.InitialDirectory = "c:\\"; 
     Open.Filter = "Text Files (*.txt)|*.txt"; 
     Open.FilterIndex = 2; 
     Open.RestoreDirectory = true; 
     Open.ShowDialog(); 
     path = Open.FileName; 
     string[] lines = File.ReadAllLines(path); 
     Console.Write(lines); 
     for (int c = 0; c <= lines.Length; c++) 
     { 
      textBox2.Lines[c] = "STRING " + lines[c] + "\nENTER\n"; 
     } 
    } 

    private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 

    } 

    private void Open_HelpRequest(object sender, EventArgs e) 
    { 

    } 

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e) 
    { 

    } 
} 
} 
+2

Hinweis ersetzt: die Randbedingung in 'für (int c = 0; c <= lines.Length; C++)' ist falsch. –

Antwort

1

In der letzten Iteration des for Schleife

for (int c = 0; c <= lines.Length; c++) 

c gleich lines.Length. Der Versuch, auf lines[lines.Length] zuzugreifen, wird immer eine Ausnahme in einer Sprache verursachen, die einen Pufferüberlauf erkennt (d. H. Nicht C oder C++).

Versuchen mit

for (int c = 0; c < lines.Length; c++) 
+0

Jetzt gibt es den gleichen Fehler, aber markiert die} am Ende der for-Schleife. – BomberF35

Verwandte Themen