Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> c# посимвольное чтение из файла. И немного еще... Необходима помощь в решении... 
:(
    Опции темы
WantToProg
Дата 22.11.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 13.4.2009

Репутация: нет
Всего: нет



Доброе время суток. Я уверен, что многие рано или поздно встречаются с такой задачей. вот и я прошу помочь натолкнув на мысль.
К сожалению не понял как это сделать из примеров в сети.
В распоряжении C# есть ReadLine, а как с ее помощь. это сделать, я не знаю
Имеется файл с содержимым в несколько строк. Это одна из строк

100001;000001;Name;FullName;65,00;0;1;0,1,1,0,0,0, 0,1;;;;;; 


Разделителем является точка с запятой ";".
Мне необходимо считать строку в массив для последующей обработки.
Первые символы до ";" порядковый код, вторые после ";" управляющие. Т.о. Программа из вне будет обращаться с кодом управления(000001 в данной строке, в каждой строке он разный), и должна будет получить Name и FullName, остальные цифры не нужны.
Заранее очистить файл от мусора не предоставляется возможности, да и думаю это не существенно.

В идеале было бы лучшим добавление этих данный в DataGridView, но с ней пока не разобрался.
PS: среда Visual Studio pro edition, С# 
PM MAIL   Вверх
tol05
Дата 22.11.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



первый этап:
Код

string inputString = Console.ReadLine();
string[] inputParts = inputString.Split(';');

int controlCode = Int32.Parse(inputParts[1]);
string Name = inputParts[2];
string FullName = inputParts[3];


второй этап:
Создаете тип данных Data, содержащий свойства ControlCode, Name, FullName и т.п.
Накапливаете данные и создаете любую коллекцию объектов Data
Биндите коллекцию к DataGridView


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Heinzz
Дата 22.11.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: 5
Всего: 9



те надо считывать первые четыре значения каждой строки? Используйте Regex

Это сообщение отредактировал(а) Heinzz - 22.11.2009, 22:20


--------------------
user posted image
PM MAIL   Вверх
WantToProg
Дата 22.11.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 13.4.2009

Репутация: нет
Всего: нет



tol05, Благодарю, хороший намек. сейчас буду пробовать. Не понял только фразу Биндите колекцию, это как я понимаю через binding source?


Heinzz, Да, вы совершенно правы. И размещать их в таблицу, чтоб по приходящему запросу на управляющий код (вторые после ";" символы) выдавалось значение Name и FullName

Это сообщение отредактировал(а) WantToProg - 22.11.2009, 23:30
PM MAIL   Вверх
tol05
Дата 22.11.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



это метод String.Split
(ни о каком потоке нигде было не сказано ни слова. я оперировал только той информацией, которую мне показал браузер)

в случае потока - ищите метод ReadLine, ReadToEnd и т.д. и т.п. В конце концов - из массива байт получите строку через класс Encoding


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
WantToProg
Дата 22.11.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 13.4.2009

Репутация: нет
Всего: нет



tol05, Извиняюсь за ранее неправильную информацию. Я уже отредактировал сообщение. Своя опечатка была, поспешил.

Можно вас попросить поподробнее про:

Цитата(tol05 @  22.11.2009,  22:15 Найти цитируемый пост)
Создаете тип данных Data, содержащий свойства ControlCode, Name, FullName и т.п.
Накапливаете данные и создаете любую коллекцию объектов Data
Биндите коллекцию к DataGridView 

?

Пожалуйста smile
PM MAIL   Вверх
tol05
Дата 23.11.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Понимаете, WantToProg, для каждой конкретной .Net-based технологии биндинг данных к контролу делается по-разному.
Вы создаете тему в общем (будем выражаться безпредметном) разделе. Не указываете какой вид приложения Вы разрабатываете. Winforms, ASP.NET, WPF
Если Вы упоминаете DataGridView - значит это все-таки Winforms ? (я просмотрел это вначале.... не догадался т.е. )) )

Кроме того, вопрос действительно задан в таком общем виде, что конкретно на него ответить трудно...

А теперь конкретно )
Да, BindingSource. Ппосле создания коллекции объектов (например List<NeededData>) используйте ее как источник данных. Пример показан в msdn (см. DataGridView.DataSource property)

Это сообщение отредактировал(а) tol05 - 23.11.2009, 00:34


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
WantToProg
Дата 23.11.2009, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 13.4.2009

Репутация: нет
Всего: нет



Я сделал следующее. Предоставлю немного кода сюда.
Код

private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                String Filename, fs, con, FullName, name;
                String n, TabN;                
                Filename = openFileDialog1.FileName;
                StreamReader sr = new StreamReader(Filename, System.Text.Encoding.Default);

                while ((con = sr.ReadLine()) != null)
                {
                    string[] split = con.Split(';');
                    n = split[0];
                    TabN = split[1];
                    name = split[2];
                    FullName = split[3];                    
                }
                sr.Close();
                sw.Close();
                tabControl1.Visible = true;
                richTextBox1.Text = "Данные из файла  " + Filename + "  успешно загружены" + "\n";
            }

        }


Делаю действительно в windows forms. На рабочей панели разместил объект DataGridView, думал легко разберусь как туда добавлять данные, оказалось, что не легко :(
Я немного выхожу за пределы моей темы, но раз уж не отказали в ответе, буду признателен если поможете дальше.

Так вот, мне надо куда нибудь сохранить полученные программой данные из файла, чтоб к ним можно было делать запросы по TabN. 
А вот куда сохранить и как это сделать, я пытаюсь разобраться сейчас, пока что ни туда ни сюда.
Сейчас читаю информацию из msdn, но по примеру сделать не получается (http://msdn.microsoft.com/ru-ru/library/system.data.datatable.aspx)
PM MAIL   Вверх
Zakonnic
Дата 23.11.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 2
Всего: 6



--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
tol05
Дата 23.11.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Код

List<MyData> dataList; //член какого-нибудь класса, доступный через какое-нибудь свойство

private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                String Filename, fs, con, FullName, name;
                String n, TabN;                
                Filename = openFileDialog1.FileName;
                StreamReader sr = new StreamReader(Filename, System.Text.Encoding.Default);

dataList = new List<MyData>();

                while ((con = sr.ReadLine()) != null)
                {
                    string[] split = con.Split(';');
MyData data = new MyData();
data.N = split[0];
data.TabN = split[1];
data.Name = split[2];
data.FullName = split[3];
dataList.Add(data);
//                    n = split[0];
//                   TabN = split[1];
//                    name = split[2];
//                    FullName = split[3];                    
                }
                sr.Close();
                sw.Close();
                tabControl1.Visible = true;
                richTextBox1.Text = "Данные из файла  " + Filename + "  успешно загружены" + "\n";
            }
        }

пример здесь (см пункт 3. Using objects)


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.