Чтение файла в массивы и дальнейшая работа с ними - C#
Формулировка задачи:
Здравствуйте! Столкнулся с проблемой чтения массивов из файла. Задача следующая: необходимо считать из файла, в котором 4 столбца и n строк, массивы так, чтобы каждый столбец был отдельным массивом для дальнейшей работы с ними.
Написал вот такой код:
При попытке запуска компилятор выдает исключение FormatException на строке и пишет
Прошу помочь и подсказать, что я делаю не так и как сделать правильно.
И еще вопрос. Правильно ли я делаю, что определяю массивы сразу во время открытия файла? Просто они в дальнейшем будут использоваться другими кнопками.
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog OFD = new OpenFileDialog();
OFD.DefaultExt = "*.txt";
OFD.Filter = "TXT (*.txt*)|*.txt";
OFD.Title = "Выберите документ для загрузки данных";
if (OFD.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(OFD.FileName);
}
string filename = OFD.FileName;
string[] test = File.ReadAllLines(filename);
int a = 0;
string[] elements;
decimal[] h = new decimal[test.Length];
decimal[] V = new decimal[test.Length];
decimal[] F = new decimal[test.Length];
decimal[] t = new decimal[test.Length];
for (a = 0; a < test.Length; a++)
{
elements = test[a].Replace(',','.').Split('\t');
h[a] = Convert.ToDecimal(elements[0]);
V[a] = Convert.ToDecimal(elements[1]);
F[a] = Convert.ToDecimal(elements[2]);
t[a] = Convert.ToDecimal(elements[3]);V[a] = Convert.ToDecimal(elements[1]);
Необработанное исключение типа "System.FormatException" в mscorlib.dll
Дополнительные сведения: Входная строка имела неверный формат.
Решение задачи: «Чтение файла в массивы и дальнейшая работа с ними»
textual
Листинг программы
string[] test = File.ReadAllLines(filename);
decimal[] h = new decimal[test.Length];
decimal[] V = new decimal[test.Length];
decimal[] F = new decimal[test.Length];
decimal[] t = new decimal[test.Length];
var culture = CultureInfo.GetCultureInfo("ru-RU");
for (int a = 0; a < test.Length; a++)
{
if (string.IsNullOrWhiteSpace(test[a])) continue;
string[] elements = test[a].Split('\t');
h[a] = Convert.ToDecimal(elements[0], culture);
V[a] = Convert.ToDecimal(elements[1], culture);
F[a] = Convert.ToDecimal(elements[2], culture);
t[a] = Convert.ToDecimal(elements[3], culture);
}