Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53

Найти причину ошибки "Чтение из закрытого TextReader невозможно"

13.05.2013, 10:59. Показов 2024. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Данная программа - игра в города. Когда пользователь вводит город в первый текстбокс, то программа проверяет его наличие в обоих файлах. Причем если он есть во втором, то это значит, что город уже был использован, а если только в первом, то он записывается во второй файл.
Правда, код выдает ошибку:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 List<string> list1 = new List<string>();
            List<string> list2 = new List<string>();
            using (StreamReader meter = new StreamReader("CityList.txt", System.Text.Encoding.GetEncoding(1251)))
            {
                while (!meter.EndOfStream)
                {
                    list1.Add(meter.ReadLine());
                }
                meter.Close();
            }
            using (StreamReader meter = new StreamReader("CityAgain.txt", System.Text.Encoding.GetEncoding(1251)))
            {
                while (!meter.EndOfStream)
                {
                    list2.Add(meter.ReadLine());
                }
                meter.Close();
            }
            string TypeCity = textBox1.Text;
            if (list1.Contains(TypeCity) && list2.Contains(TypeCity)) // Если город присутсвует в 2 файлах...
            {
                MessageBox.Show(TypeCity + " уже был использован в этой игре, выберите другой город");
                textBox1.Text = ""; // пользователь должен будет ввести другой город.
            } 
            if (list1.Contains(TypeCity) && !list2.Contains(TypeCity))
            {
               
                FileStream MinorFileForAdd = new FileStream("CityAgain.txt", FileMode.Append);
                StreamWriter AddTown;
                AddTown = new StreamWriter(MinorFileForAdd, System.Text.Encoding.GetEncoding(1251));
                AddTown.Write(TypeCity + '\r' + '\n');
                AddTown.Close();
                char[] CityType = TypeCity.ToCharArray();
                
                //Проверяем, равен ли первый символ, введеным пользователем, последнему, полученному от компютера.
                FileStream MainFile = new FileStream("CityList.txt", FileMode.Open);
                StreamReader meter;
                meter = new StreamReader(MainFile, System.Text.Encoding.GetEncoding(1251));
                string[] MasCity = meter.ReadToEnd().Split('\r'); //Читаем
                meter.Close(); //Закрываем файл
                
                
                for (int i = 0; i < MasCity.Length - 1; i++)
                {
                    if (CityType[0] == MasCity[i][MasCity[i].Length - 1])
                    {
                        //Проверяем, равен ли последний символ, введеным пользователем, первому, полученному от компютера.
                        FileStream MainFile2 = new FileStream("CityList.txt", FileMode.Open);
                        StreamReader meter2;
                        meter2 = new StreamReader(MainFile2, System.Text.Encoding.GetEncoding(1251));
                        string[] MasCity2 = meter.ReadToEnd().Split('\r'); //Читаем
                        meter2.Close(); //Закрываем файл
                        for (int j = 0; j < MasCity2.Length - 1; j++)
                        {
                            if (CityType[TypeCity.Length - 1] == MasCity[j][0])
                            {
                                textBox2.Text = MasCity2[j];
                                FileStream MinorFileForAdd2 = new FileStream("CityAgain.txt", FileMode.Append);
                                StreamWriter AddTown2;
                                AddTown2 = new StreamWriter(MinorFileForAdd2, System.Text.Encoding.GetEncoding(1251));
                                AddTown2.Write(MasCity[j] + '\r' + '\n');
                                AddTown2.Close();
                                break;
                            }
                        }
                        // Конец проверки.
                    }
                    else
                    {
                        MessageBox.Show("Первая буква, введенного вами города, не совпадает с последней буквой полученной от компьютера");
                    }
                }
            }
            if (!list1.Contains(TypeCity) && !list2.Contains(TypeCity))
            {
                MessageBox.Show("Такого города не существует, или его использование не предусмотрено игрой.");
                textBox1.Text = "";
            }
        }
прошу помощи найти ее и исправить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2013, 10:59
Ответы с готовыми решениями:

Чтение из закрытого TextReader невозможно
Вне цикла TextReader выполняет чтение, а внутри него - нет. Что делаю не так? using System; using System.Collections.Generic; using...

Чтение из закрытого TextReader невозможно
Пишу небольшую программу для заморозки другого процесса, данные когда она должна замораживать программа берет из c:/SR.txt мне нужно что бы...

Чтение из закрытого TextReader невозможно
каждая строка в файле, начиная с 4, разбивается в массив. мне требуется удалить всю строку (либо все элементы массива) если 0 элемент...

16
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
13.05.2013, 11:15
ошибку то нам скажите, и на какой строке останавливается выполнение?
0
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53
13.05.2013, 11:59  [ТС]
http://imgdepo.ru/thumb/2013/May/13/ddfd2d43.jpg

Самое обидное, что я полагаю, что может еще парочку выскочить, если исправить эту.
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
13.05.2013, 12:35
ну полное содержание ошибки вы не показали.
я хз что у вас там, но если вы везде используете using, то использовать Close нет нужды.
0
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53
13.05.2013, 13:32  [ТС]
Цитата Сообщение от Монфрид Посмотреть сообщение
ну полное содержание ошибки вы не показали.
Ошибка:
Кликните здесь для просмотра всего текста
Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.ObjectDisposedException: Чтение из закрытого TextReader невозможно.
в System.IO.__Error.ReaderClosed()
в System.IO.StreamReader.ReadToEnd()
в КурсоваяРабота.City.button1_Click(Object sender, EventArgs e) в C:\Users\Дом\Documents\Visual Studio 2010\Projects\КурсоваяРабота\КурсоваяРаб ота\City.cs:строка 80
в System.Windows.Forms.Control.OnClick(Eve ntArgs e)
в System.Windows.Forms.Button.OnClick(Even tArgs e)
в System.Windows.Forms.Button.OnMouseUp(Mo useEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(M essage& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Mes sage& m)
в System.Windows.Forms.ButtonBase.WndProc( Message& m)
в System.Windows.Forms.Button.WndProc(Mess age& m)
в System.Windows.Forms.Control.ControlNati veWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNati veWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.296 (RTMGDR.030319-2900)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
КурсоваяРабота
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Users/Дом/Documents/Visual%20Studio%202010/Projects/КурсоваяРабота/КурсоваяРабота/bin/Debug/КурсоваяРабота.exe
----------------------------------------
System.Windows.Forms
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.1002 built by: RTMGDR
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.1001 built by: RTMGDR
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.1001 built by: RTMGDR
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.1 (RTMRel.030319-0100)
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.233 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Drawing.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing.resources/v4.0_4.0.0.0_ru_b03f5f7f11d50a3a/System.Drawing.resources.dll
----------------------------------------
mscorlib.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.0.30319.1 built by: RTMRel
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
----------------------------------------

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

Например:

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

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



Цитата Сообщение от Монфрид Посмотреть сообщение
я хз что у вас там, но если вы везде используете using, то использовать Close нет нужды.
Не везде.
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,246
13.05.2013, 13:46
строка 80 у вас в ошибке написана, что там?
0
Танцы с бубном
 Аватар для Lokko
68 / 69 / 26
Регистрация: 27.03.2013
Сообщений: 279
13.05.2013, 13:59
Прикрепите проект
0
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53
13.05.2013, 14:08  [ТС]
Цитата Сообщение от Монфрид Посмотреть сообщение
строка 80 у вас в ошибке написана, что там?
meter2.Close(); //Закрываем файл
Я его удалил, но ошибка остается.

Прикрепите проект
Вложения
Тип файла: rar КурсоваяРабота - копия.rar (827.7 Кб, 7 просмотров)
0
102 / 100 / 33
Регистрация: 24.04.2010
Сообщений: 286
Записей в блоге: 1
13.05.2013, 14:13
В 73 линейке не должно бить другая переменная?

C#
1
string[] MasCity2 = meter.ReadToEnd().Split('\r'); //Читаем
meter2 вместо meter?
0
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53
13.05.2013, 14:23  [ТС]
И вправду, а я и не заметил.
Теперь мне осталось разобраться как сделать так, чтобы первая буква введенного мною слова совпадала с последней буквой слова компьютера.
0
102 / 100 / 33
Регистрация: 24.04.2010
Сообщений: 286
Записей в блоге: 1
13.05.2013, 14:27
Ну воспользиваться надо етим
C#
1
char last = StrNo[StrNo.Length - 1];
0
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53
13.05.2013, 14:30  [ТС]
Я же примерно тоже самое делаю в строке:
C#
1
 if (CityType[0] == MasCity[i][MasCity[i].Length - 1])
Разве нет?
0
Танцы с бубном
 Аватар для Lokko
68 / 69 / 26
Регистрация: 27.03.2013
Сообщений: 279
13.05.2013, 14:34
Пример:
C#
1
2
3
4
5
6
7
8
9
            char[] myText = textBox3.Text.ToCharArray();
            char[] compText = textBox2.Text.ToCharArray();
 
 
            if (myText[0] == compText[compText.Length - 1])
            {
                MessageBox.Show("Совпадают");
            }
            else { MessageBox.Show("Нет!!"); }
0
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53
14.05.2013, 14:36  [ТС]
Так то да, но у меня же на месте compText, должно быть слово из файла, которое находится в массиве. То есть я должен работать с массивом массивов, разве не так?

Добавлено через 23 часа 47 минут
В таком случае, как перевести string [] в char []?
0
Танцы с бубном
 Аватар для Lokko
68 / 69 / 26
Регистрация: 27.03.2013
Сообщений: 279
14.05.2013, 15:15
Цитата Сообщение от Shekloford Посмотреть сообщение
Так то да, но у меня же на месте compText, должно быть слово из файла, которое находится в массиве. То есть я должен работать с массивом массивов, разве не так?
Добавлено через 23 часа 47 минут
В таком случае, как перевести string [] в char []?
Немного не понял вашего вопроса, вечерняя усталость с работы сказывается)) Опишите конкретнее вашу проблему.
compText это и есть текст с файла который отображается. Здесь compText[compText.Length - 1] указываю на его последний индекс в нашем случае буква 'a'.
0
 Аватар для Shekloford
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 53
14.05.2013, 15:59  [ТС]
Да, но compText это же массив в char[]
Я же вынужден работать с string []

И чтобы осуществить мне вашу подсказку мне нужно string [] перевести в char[] Верно? Если да, то как это сделать?
0
Танцы с бубном
 Аватар для Lokko
68 / 69 / 26
Регистрация: 27.03.2013
Сообщений: 279
15.05.2013, 05:35
а такой подход подходит вам?
C#
1
2
3
4
            string myText = textBox1.Text.Substring(0, 1).ToLower();
            string compText = textBox2.Text.Substring(textBox2.Text.Length - 1, 1).ToLower();
 
            if (myText == compText)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2013, 05:35
Помогаю со студенческими работами здесь

Чтение из закрытого TextReader невозможно
class Global { static public int MAX_SKILL; static public StreamReader fp; } class TableSave { static...

Чтение из закрытого TextReader невозможно
while (sr.EndOfStream) { string tmp = sr.ReadLine(); stringxy= tmp.Split('/'); ...

Чтение из закрытого TextReader невозможно.Что не так я делаю?
У меня есть кнопка по нажатию на которую должны обновиться слова в словаре Dictionary Вот код if (richTextBox1.Text != &quot;&quot;)...

Необработанное исключение: System.ObjectDisposedException: Чтение из закрытого TextReader невозможно
Ошибка после запуска с консоли, когда передаю значение аргумента, помогите пожалуйста, нет вообще идей как это зафиксить using System;...

Найти причину ошибки
Подскажите пожалуйста, почему мне выявляет ошибку на ??? using System; using System.Collections.Generic; namespace test2 { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru