Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2012, 19:56   #1
Azariz
Пользователь
 
Регистрация: 13.08.2012
Сообщений: 19
По умолчанию Создание второго текстового файла на основе данных из первого

Добрый вечер!
Народ, помогите нубасу)) Когда нажимаю кнопку1 выбираю текстовый файл заранее созданный с текстом (InputFile) и при нажатии кнопки generate создается второй текстовый файл с данными из первого файла и путь ко второму созданному файлу (OutputFile) отображается в textbox2
И такой вопрос =)
Допустим в input файле идут строки:
1. Russian Federation
2. Sergey
Как сделать чтобы в output файл строки из input записались в одну строку сокращенно "RUS<<S"

Код:
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {

        OpenFileDialog dialog = new OpenFileDialog();
        OpenFileDialog dialog2 = new OpenFileDialog();

        public Form1()
        {
            InitializeComponent();



            dialog.FileOk += new CancelEventHandler(dialog_FileOk);



            dialog2.FileOk += new CancelEventHandler(dialog2_FileOk);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            dialog.ShowDialog();
        }

        void dialog_FileOk(object sender, CancelEventArgs e)
        {
            textBoxInput.Text = ((OpenFileDialog)sender).FileName;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            dialog2.ShowDialog();
        }

        void dialog2_FileOk(object sender, CancelEventArgs e)
        {
            textBoxOutput.Text = ((OpenFileDialog)sender).FileName;
        }

        private void GenerateButton_Click(object sender, EventArgs e)
        {
            var inputFile = new FileInfo(textBoxInput.Text);
            var outputFile = new FileInfo(textBoxOutput.Text);


            var result = new StringBuilder();

            foreach (var line in File.ReadAllLines(inputFile.FullName))
            {
                var transformation = String.Empty;

                //TODO: Transform line to transformation
                //**************************************************************************************

                {
                    if (System.IO.File.Exists(@"D:\1.txt")) // проверка на существование файла
                    {
                        File.Delete(@"D:\1.txt"); // удаляем

                    }
                    File.Copy(textBoxInput.Text, @"D:\1.txt"); // копируем файл
                    textBoxOutput.Text = @"D:\1.txt"; // выводим адрес файла в textBoxOutput

                }


                //**************************************************************************************
                result.AppendLine(transformation);
            }

            File.WriteAllText(outputFile.FullName, result.ToString());

        }


    }
}
Изображения
Тип файла: jpg 1.jpg (8.4 Кб, 74 просмотров)
Azariz вне форума Ответить с цитированием
Старый 13.08.2012, 21:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
аписались в одну строку сокращенно
А каковы условия этих сокращений?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.08.2012, 21:29   #3
Azariz
Пользователь
 
Регистрация: 13.08.2012
Сообщений: 19
По умолчанию

Там где первая строка и отображается страна в новый файл (на выходе) должно записаться первые три буквы страны, во второй строке от имени должно записать первую букву и между ними необходимо разделение в виде <<. Как реализовать?
Azariz вне форума Ответить с цитированием
Старый 13.08.2012, 21:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
        bool b=true; string s;    
        foreach (string line in File.ReadAllLines(inputFile.FullName))
            {
                if(b)   s=line.substring(1,3));
                else    result.AppendLine(s+"<<"+line.substring(1,1));
                b=!b;
            }
File.WriteAllText(outputFile.FullName, result.ToString());
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.08.2012, 01:20   #5
Azariz
Пользователь
 
Регистрация: 13.08.2012
Сообщений: 19
По умолчанию

Да, спасибо)
Но выдает ошибки:
Ошибка 1 Наиболее подходящий перегруженный метод для "System.IO.StreamWriter.StreamWrite r(string, bool)" имеет несколько недопустимых аргументов
Ошибка 2 Аргумент "2": преобразование типа из "System.Text.Encoding" в "bool" невозможно

вот код:
Код:
**************************************************************************************
                
                {
                    textBoxOutput.Text = @"D:\MRZ.txt"; // выводим адрес файла в textBoxOutput
                    using (TextReader tr = new StreamReader(@"D:\InputFile.txt", Encoding.Default))
                    {
                        List<string> mas = tr.ReadToEnd().Split('\n').ToList();

                        bool b = true; string s = string.Empty;

                        using (StreamWriter sw = new StreamWriter(@"D:\1.txt", Encoding.Default))

                            foreach (string a in mas)
                                if (b)
                                    s = a.Substring(1, 3);
                                else
                                    result.AppendLine(s + "«" + a.Substring(1, 1));
                        b = false;
                    } 
                }
                //**************************************************************************************

Последний раз редактировалось Azariz; 14.08.2012 в 01:26.
Azariz вне форума Ответить с цитированием
Старый 15.08.2012, 13:27   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Судя по http://msdn.microsoft.com/ru-ru/libr...eamwriter.aspx
у Вас конструктор не соответствует аргументам (ошибки это и говорят)
Если Вам непременно нужен параметр Encoding то используйте конструктор http://msdn.microsoft.com/ru-ru/library/f5f5x7kt.aspx
но логический параметр Append всё равно надо передавать, я советую с перезаписью, т.е. указать его false.

Плюс добавлю, что Stilet указал метод простого чередования условия - сперва строка обрезается до 3 символов, а следующая до 1 , и потом повторяется это. А если Вы надеетесь на распознание страны и имени, то это существенно сложнее, советую либо пересмотреть подход либо формализовать условия по которым надо ориентироваться.

Могу вечером ещё глянуть на весь проект целиком, если время будет, и отпишу сюда.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графика на основе текстового файла" igorchyk19 Помощь студентам 1 04.01.2012 08:08
Открытие второго окна с закрытием первого и наоборот Byurrer Общие вопросы C/C++ 0 02.04.2011 21:05
отображение данных первого листа, при активации ячейки второго листа Akmal-Sharipov Microsoft Office Excel 4 03.12.2010 14:48
перестановки первого и второго слов в строке S Skvid Помощь студентам 3 06.04.2010 10:10
Открытие файла и создание графика на основе чисел из файла Simon..14 Общие вопросы C/C++ 8 09.06.2009 10:18