Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87

Работа с файловым потоком

23.04.2013, 12:21. Показов 7495. Ответов 98
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как подсчитать количество строк в файле?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2013, 12:21
Ответы с готовыми решениями:

Работа с потоком Task
Привет народ! есть код в котором запуская фоновые потоки foreach (FileInfo dir in file) { ...

Работа з потоком, текстом, строками
Как текст имеющейся в .тхт-файле присвоить строке? StreamReader reader = new StreamReader(file1); // создаем «потоковый читатель» и...

работа с файловым потоком!!!
Дан символьный файл f. Найти и записать в файл g самое длинное слово файла f, снабдив его комментарием.

98
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 01:15  [ТС]
Студворк — интернет-сервис помощи студентам
вот например вожу я номер пациента,а он мне все информацию о пациенте выводит в lable
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 01:16
так у вас есть теперь массив
C#
1
2
3
4
        private void button2_Click(object sender, EventArgs e)
        {
            Pasient[] pasient = karta.inFo();
        }
Перебирайте его (pasient) и ищите структуру с нужным num_pasient. Найдете - выводите всю структуру
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 01:22  [ТС]
вот и спрашиваю,как это вывести

Добавлено через 1 минуту
а классы в форме разве пишутся?добавлять не нужно их отдельно?

Добавлено через 1 минуту
C#
1
2
3
4
public partial class Form1 : Form
    {
 
        public struct Pasient
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 01:31
Самира,

добавьте в класс Karta
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            public string ShowPasient(string number)
            {
                Pasient[] pasients = inFo();
                foreach (Pasient pasient in pasients)
                {
                    if (pasient.num_pasient == number)
                    {
                        return pasient.num_pasient + ',' + pasient.familia  // и т.д
                    }
                }
 
               return string.Empty;
            }
вызов
C#
1
2
3
4
        private void button2_Click(object sender, EventArgs e)
        {
          label1.Text =  karta.ShowPasient(textBox10.Text); 
        }
textBox10.Text - номер пациента.
Это для примера. Замените textBox на более осмысленное имя
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 01:36  [ТС]
Вы меня спасли,огромное спасибо)))сейчас попробую все это набрать
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 01:51
Цитата Сообщение от Самира Посмотреть сообщение
Вы меня спасли,огромное спасибо)))сейчас попробую все это набрать
Ну, вот. А говорили - форум плохой
Пожалуйста!
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 12:49  [ТС]
Форум замечательныйу меня ошибка...
C#
1
2
3
4
         public string ShowPasient(string number)
            {
                Pasient[] pasients = inFo();
                foreach (Pasient pasient in pasients)//Ссылка на объект не указывает на экземпляр объекта.
Добавлено через 54 минуты
добавляет вот в таком виде
21!Р˜РІР°РЅРѕРІ Р˜РІР°РЅ!Р˜РІР°РЅРѕРІРёС‡Р“СЂРёРїР!67 8-78-89Ямашева

Добавлено через 2 минуты
Когда количество хочу подсчитать
C#
1
2
3
4
5
6
private void button2_Click(object sender, EventArgs e)
        {
            Pasient[] pasient = karta.inFo();
            label9.Text = pasient[1].num_pasient;//Ссылка на объект не указывает на экземпляр объекта.
            
        }
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 13:50
По поводу первого вопроса.
Сложно помогать, если вы не можете локализовать ошибку сами. Например, используя точки останова и затем F10 или F11.
Тогда бы вы увидели, что в месте вылета ошибки массив pasient=null , следовательно обращаться там не к чему (label9.Text = pasient[1].num_pasient).
Возникает вопрос, почему?
При помощи F11 вы бы зашли в метод public Pasient[] inFo(), и пробегая по нему заметили бы, что условия правильности данных в файле не соблюдаются.
Это могло быть из за того, что есть лишние пустые строки в файле, или количество элементов в строке не равно 7.
Я вам написал не готовую программу, а направление решения. Там еще много чего можно делать. В том числе и различные проверки и защиты.

Вот чуть измененный вариант public Pasient[] inFo()
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            public Pasient[] inFo()
            {
                const int countElementsInLine = 7;
                string[] lines = File.ReadAllLines(path, Encoding.Default);
                Pasient[] pasient = new Pasient[lines.Length];
 
                char[] div = { '!' };
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] data = lines[i].Split(div, StringSplitOptions.RemoveEmptyEntries);
 
 
                    if (data.Length == countElementsInLine)
                        pasient[i] = new Pasient { num_pasient = data[0], familia = data[1], name = data[2], ot = data[3], nameill = data[4], twnumber = data[5], adrees = data[6] };
                    else
                    {
                        MessageBox.Show("файл содержит не верную структуру данных ");
                        return null; 
                    }
                }
                return pasient;
            }


По поводу "крякозяблов" вместо текста.
При записи нужно указать кодировку (можно поставить по умолчанию Encoding.Default)
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
            public void AddPasient(Pasient pasient)
            {
                using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
                {
                    StreamWriter sw = new StreamWriter(fs, Encoding.Default);
                    sw.WriteLine(Str(pasient));
                    sw.Close();
                }
            }


Добавлено через 4 минуты
По поводу использования точек останова и F10 и F11 я писал здесь Непонятные моменты из книги Фроловых А. и Г. "C# для начинающих", где то в конце странички.
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 19:01  [ТС]
я не смогла найти ошибки
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 19:02
Цитата Сообщение от Самира Посмотреть сообщение
я не смогла найти ошибки
Скиньте проект. Позднее посмотрю. Или еще может кто.
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 19:57  [ТС]
вот...
Вложения
Тип файла: zip WindK.zip (120.6 Кб, 3 просмотров)
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 20:07
Самира,
Сделайте для начала изменения, которые я показал ранее.
Кликните по плюсикам (для просмотра всего текста)
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 22:04  [ТС]
я сделала их...

Добавлено через 1 час 49 минут
текст в нормальном виде добавляет,но остальные ошибки остались...
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 22:42
Я же писал вам ранее, в
private string Str(Pasient pasient)
все нужно сделать через '!'. Это ведь ваши разделители

Исправил, все работает
0
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 22:49  [ТС]
C#
1
2
3
4
private string Str(Pasient pasient)
            {
                return pasient.num_pasient +'!' + pasient.familia+'!'+pasient.name+'!'+ pasient.ot+'!'+ pasient.nameill+'!'+pasient.twnumber+'!'+pasient.adrees+'!' ;// и так далее
            }
вот так? у меня все равно ошибка(
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 22:55
Сейчас посмотрю и скину обратно.
У Вас строки файлы состоят из семи элементов 1!2!3!4!5!6!7 ?
И есть пустые строки в файле? Нажмите стрелку вниз на последней строке. Перепрыгнет на пустую?
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 23:07  [ТС]
да,из 7 состоят..но у меня вот так 1!2!3!4!5!6!7! тут в конце не нужно ставить?пустых нет..

Добавлено через 4 минуты
я классы не в форме писала,а отдельно добавила..так можно?
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 23:41
Самира,
Смотри файл. Там работает то, о чем мы писали ранее.

Еще, для примера, на Form3 при нажатии "информация" будет вызвано Form2.
Если ввести номер пациента и нажать Ок, будут заполнены соответствующие поля.

Только путь к файлу поменяйте
Вложения
Тип файла: 7z WindK.7z (75.8 Кб, 3 просмотров)
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 23:44  [ТС]
СпасибоМне еще нужно сделать одну вещь
На форме 4 имеется Номер отделения, название отделение, кол-тво койко-мест, количество больных.
выбрав отделение нужно,чтобы выводило есть место чтобы положить пациента или нет...
и тут нужно использовать в классе свойство интерфейс..
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 23:46
Цитата Сообщение от Самира Посмотреть сообщение
Мне еще нужно сделать одну вещь
Когда у меня защита

Для начала напишите, работает то что сейчас? (путь поменяйте к файлу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2013, 23:46
Помогаю со студенческими работами здесь

Работа с файловым потоком
Всем привет. После того как я познакомился с понятием поток приступил к практической части. В процессе возникло несколько скользких...

С# работа с файловым потоком
Добрый день!!!Помогите,как подсчитать и вывести количество строк в текстовом файле???

Работа с файловым потоком: Преобразование base64 > original data
Дана функция http://base64.sourceforge.net/b64.c -&gt; static int decode( FILE *infile, FILE *outfile ). Функция выполняет преобразование...

задача с файловым потоком
Дан текстовый файл, содержащий программу на языке Си. Проверить эту про-грамму на соответствие числа открывающих и закрывающих фигурных...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru