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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2016, 00:17   #1
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию проблема с кодом

Дело в том что не меняется числа и во вторых после работы софта, строки идут не построчно а в ряд, почему-то, в чем проблема ?
Код:
class Program
    {
        static void Main(string[] args)
        {
            string folderPath = @"C:\Users\LowFrequencySound\Desktop\files\";
            try
            {
                StartReplaceThread(folderPath);
                Console.WriteLine("Выполнено без ошибок");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Ошибка: " + ex.Message);
            }
        }

        private static void StartReplaceThread(string folderPath)
        {
            string keyFile = @"C:\Users\LowFrequencySound\Desktop\числа от 1 до 50.txt";
            Dictionary<int, string> diction = new System.Collections.Generic.Dictionary<int, string>();
            string[] keyfiledata = File.ReadAllText(keyFile).Split('\n');
            for (int i = 0; i < keyfiledata.Length; i++)
            {
                if (keyfiledata[i].Trim() != string.Empty) diction.Add(i, keyfiledata[i].Replace("\r", ""));
            }


            string[] files = Directory.GetFiles(folderPath, "*.txt");
            string newfileText = string.Empty;
            foreach (string file in files)
            {
                using (StreamReader fs = new StreamReader(file, Encoding.GetEncoding(1251)))
                {
                    int totalfounded = -1;
                    while (true)
                    {
                        string lineText = fs.ReadLine();
                        if (lineText == null) break;
                        int lastIndex = lineText.IndexOf("thread"); 
                        if (lastIndex != -1)
                        {
                            newfileText = newfileText + lineText.Substring(0, lastIndex);
                            for (int i = lastIndex; i < lineText.Length; i++)
                            {
                                if (i == lineText.Length)
                                {
                                    newfileText = newfileText + "\n"; break;
                                }
                                int leth = 0;
                                if (lineText[i] == 't' && lineText[i + 1] == 'h' && lineText[i + 2] == 'r' && lineText[i + 3] == 'e' && lineText[i + 4] == 'a' && lineText[i + 5] == 'd')
                                {
                                    totalfounded++;
                                    try
                                    {
                                        int j = 5;
                                        while (true)
                                        {
                                            int value = int.Parse(lineText[i + j].ToString());
                                            leth++;
                                            j++;
                                        }
                                    }
                                    catch { i = i + leth + 4; newfileText = newfileText + "thread" + diction[totalfounded]; }
                                }
                                else newfileText = newfileText + lineText[i];
                            }
                        }
                        else newfileText = newfileText + lineText;
                    }
                }
                StreamWriter sw = new StreamWriter(file, false, Encoding.GetEncoding(1251));
                sw.WriteLine(newfileText);
                sw.Close();
            }
        }
    }
}
komra2 вне форума Ответить с цитированием
Старый 23.11.2016, 08:12   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Вот этот кусок никогда не выполнится
Код:
if (i == lineText.Length)
                                {
                                    newfileText = newfileText + "\n"; break;
                                }
т.к. цикл идёт по условию: i < lineText.Length
вот и нет деления на строки, а всё в строку пишется.
тут:
Код:
if (lineText[i] == 't' && lineText[i + 1] == 'h' && lineText[i + 2] == 'r' && lineText[i + 3] == 'e' && lineText[i + 4] == 'a' && lineText[i + 5] == 'd')
                                {
безалаберно лезете за границы строки.

сюда попадаете только при условии, что lineText[i + 5] == 'd'
Код:
try
                                    {
                                        int j = 5;
                                        while (true)
                                        {
                                            int value = int.Parse(lineText[i + j].ToString());
                                            leth++;
                                            j++;
                                        }
                                    }
                                    catch { i = i + leth + 4; newfileText = newfileText + "thread" + diction[totalfounded]; }
а следом выставляете j = 5 и пытаетесь эту несчастную 'd' преобразовать в число. Программа по идее вываливается в блок catch, а там в newfileText опять же не добавляется символ конца строки и опять всё в одну строку пишется.
pu4koff вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодом на СИ chakalov Общие вопросы C/C++ 2 25.04.2016 15:48
Проблема с кодом Dkey PHP 4 20.08.2012 14:17
проблема с кодом net_probelam Общие вопросы C/C++ 1 19.10.2011 02:06
Проблема с кодом. scottie Паскаль, Turbo Pascal, PascalABC.NET 3 11.04.2010 15:44
Проблема с кодом( DM_bite Помощь студентам 3 02.08.2008 20:02