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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2011, 21:04   #1
Aleks2012
Новичок
Джуниор
 
Регистрация: 13.07.2011
Сообщений: 4
По умолчанию Проблема с кодировкой.

Вечер добрый Всем!
Текст программы нарисован в C#.
Всё работает, за исключением одного момента: нужно настроить прогу так, что бы она читала все кодировки. Кто-нибудь может подсказать или показать? Комп просто глючит - искать не реально..

Код:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void открытьВ1ОкноToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.ShowDialog();
            try
            {
                FileStream aFile = new FileStream(dlg.FileName, FileMode.Open);
                StreamReader sr = new StreamReader(aFile,Encoding.GetEncoding(1251));
                richTextBox1.Text = sr.ReadToEnd();
                sr.Close();
            }
            catch (IOException et)
            {
                MessageBox.Show(et.ToString());
                return;
            }
            return;

        }

        private void открытьФайлВо2ОкноToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.ShowDialog();
            try
            {
                FileStream aFile = new FileStream(dlg.FileName, FileMode.Open);
                StreamReader sr = new StreamReader(aFile,Encoding.GetEncoding(1251));
                richTextBox2.Text = sr.ReadToEnd();
                sr.Close();
            }
            catch (IOException et)
            {
                MessageBox.Show(et.ToString());
                return;
            }
            return;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Clear();
            richTextBox2.Clear();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //объявление переменных
            string str1="";
            string str2="";
            int dl1 = richTextBox1.Lines.Length;
            int dl2 = richTextBox2.Lines.Length;
            int sdl = dl1;
            int sdlstr,s1,s2;
            bool f = false;
            s1 = 0;
            s2 = 0;
            //условие проверки количества строк в разных richtextbox
            if (dl1 > dl2) sdl = dl2;
            //иднм по-самому короткому
            for (int i = 0; i < sdl; i++)
            {
                //берем по строке
                str1 = richTextBox1.Lines[i];
                str2 = richTextBox2.Lines[i];
                sdlstr = str1.Length;
                //уточняем длину
                if (str1.Length > str2.Length) sdlstr = str2.Length;
                if (str1.Length != str2.Length)
                {
                    richTextBox1.Select(s1, str1.Length);
                    richTextBox1.SelectionColor = Color.Red;
                    richTextBox2.Select(s2, str2.Length);
                    richTextBox2.SelectionColor = Color.Blue;
                    //локальное сравнение строк, по их длине
                }

                for (int j = 0; j < sdlstr; j++)
                {
                    if (str1[j] != str2[j])
                    {
                        f=true;
                        //MessageBox.Show("есть что то разное");
                    }
                    if (f)
                    {
                        //окраска
                        richTextBox1.Select(s1, str1.Length);
                        richTextBox1.SelectionColor = Color.Red;
                        richTextBox2.Select(s2, str2.Length);
                        richTextBox2.SelectionColor = Color.Blue;
                        f = false;
                    }
                }
                //дополнительные параметры
                s1 = s1 + str1.Length+1;
                s2 = s2 + str2.Length+1;
            }
            if (dl1 != dl2)
            {
                //окраска
                richTextBox1.Select(0,s1);
                richTextBox1.SelectionColor = Color.Red;
                richTextBox2.Select(0,s2);
                richTextBox2.SelectionColor = Color.Blue;
                //глобальное сравнение текста, по его количеству строк
            }
        }

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.07.2011 в 22:52.
Aleks2012 вне форума Ответить с цитированием
Старый 13.07.2011, 22:08   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Комп просто глючит - искать не реально..
А Вы считаете нам, реально?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.07.2011, 22:20   #3
Aleks2012
Новичок
Джуниор
 
Регистрация: 13.07.2011
Сообщений: 4
По умолчанию

Я вообще-то просил оказать Мне помощь, а не задавать вопрос.
И если не хотите помогать, зачем флудить?
Aleks2012 вне форума Ответить с цитированием
Старый 13.07.2011, 22:33   #4
Aleks2012
Новичок
Джуниор
 
Регистрация: 13.07.2011
Сообщений: 4
По умолчанию

Если для Вас тоже нереально, то могу уточнить:
В потоке работает Encoding.GetEncoding(1251).
Надо его заменить так, что бы код распознавал знаки и буквы как латиницы, так и кириллицы.
Aleks2012 вне форума Ответить с цитированием
Старый 13.07.2011, 23:17   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В потоке работает Encoding.GetEncoding(1251).
Надо его заменить так, что бы код распознавал знаки и буквы как латиницы, так и кириллицы.
Зачем его заменять? Файл который Вы читаете - в какой кодировке? В любой случайно/произвольной? Тогда (в общем случае) задача не решается...

и ещё,
позволю себе процитировать GunSmoker'а:
"Как должно быть известно любому программисту, не существует такой вещи как "просто текстовый файл". "
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.07.2011, 22:26   #6
Aleks2012
Новичок
Джуниор
 
Регистрация: 13.07.2011
Сообщений: 4
По умолчанию

Хорошо.. Можно не заменять, а просто дополнить или изменить...
Суть-то одна и таже.
И задача, кстати, решаема.
Aleks2012 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировкой nolz Microsoft Office Word 1 07.01.2012 22:20
Проблема с кодировкой Furyon PHP 3 13.04.2011 17:36
проблема с кодировкой tred Помощь студентам 7 05.07.2010 13:55
проблема с кодировкой Demonmov C++ Builder 1 02.06.2010 01:15
Проблема с кодировкой motorway Microsoft Office Excel 3 03.07.2009 22:27