Запись переменной на C# с использованием условия если

  • Автор темы Автор темы littleKongo
  • Дата начала Дата начала

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Реакции
24
Баллы
18
Добрый вечер, зенномейкеры!

Прошу помочь с решением задачи на С-шарпе, так как делать 100 экшенов - это перебор)

Выполенние проекта начинается с парсинга переменной 1 и перменной 2. Они всегда есть на странице

Переменная 1 - определяет название файлы, куда будет записана переменная 2 (принимает более 90 значений)
Переменная 2 - ее необходимо за каждое выполнение записовать в Фаил txt.
Сам Фаил txt, в который записывается переменная 2, зависит от значения 1 и по совему именни совпадает чаще всего с значением переменной 1.


Есть 40 наиболее частых значений переменной 1 и соответсвенно есть 40 файлов txt в которые они записываются, для отсальных 50 значенний переменной 1 есть один фаил txt куда они должны записоваться

Подскажите пожалуйста как на С-шарпе будет выглядеть шабло записи в фаил txt по типу

Если переменная 1 = "мартышка" - записываем значение переменной 2 в фаил "мартышка.txt"
Если переменная 1 = "дерево" - записываем значение переменной 2 в фаил "дерево.txt"
Если переменная 1 = "сушка" - записываем значение переменной 2 в фаил "Другое.txt"
Если переменная 1 = все остальное - записываем значение переменной 2 в фаил "Другое.txt"


Проект выполняется много раз поэтому необходимо дописовать каждый раз в конец строки и разумеется с новой строки

Думал делать таблицей, но для дальнейшей обработки делать таблицей нельзя.

П.С: значение переменной2 бывает несколько строк
 
Добрый вечер, зенномейкеры!

Прошу помочь с решением задачи на С-шарпе, так как делать 100 экшенов - это перебор)

Выполенние проекта начинается с парсинга переменной 1 и перменной 2. Они всегда есть на странице

Переменная 1 - определяет название файлы, куда будет записана переменная 2 (принимает более 90 значений)
Переменная 2 - ее необходимо за каждое выполнение записовать в Фаил txt.
Сам Фаил txt, в который записывается переменная 2, зависит от значения 1 и по совему именни совпадает чаще всего с значением переменной 1.


Есть 40 наиболее частых значений переменной 1 и соответсвенно есть 40 файлов txt в которые они записываются, для отсальных 50 значенний переменной 1 есть один фаил txt куда они должны записоваться

Подскажите пожалуйста как на С-шарпе будет выглядеть шабло записи в фаил txt по типу

Если переменная 1 = "мартышка" - записываем значение переменной 2 в фаил "мартышка.txt"
Если переменная 1 = "дерево" - записываем значение переменной 2 в фаил "дерево.txt"
Если переменная 1 = "сушка" - записываем значение переменной 2 в фаил "Другое.txt"
Если переменная 1 = все остальное - записываем значение переменной 2 в фаил "Другое.txt"


Проект выполняется много раз поэтому необходимо дописовать каждый раз в конец строки и разумеется с новой строки

Думал делать таблицей, но для дальнейшей обработки делать таблицей нельзя.

П.С: значение переменной2 бывает несколько строк

C#:
Развернуть Свернуть Копировать
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
string path = project.Directory + '\\';
bool appendNewLine = true;


switch(var1)
{
case "мартышка":
    FileSystem.FileAppendString(path + var1 + ".txt", var2, appendNewLine);
break;
       
case "дерево":
    FileSystem.FileAppendString(path + var1 + ".txt", var2, appendNewLine);
break;
       
default:
    FileSystem.FileAppendString(path + "Другое.txt", var2, appendNewLine);
break;
           
}

return var1;
 
  • Спасибо
Реакции: orka13
это 40 case -ов ему строчить ), у него 40 текстовиков
Если все файлы находятся в одной папке или если ложить путь до файла в переменную то можешь так
C#:
Развернуть Свернуть Копировать
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
bool appendNewLine =true;

string filePath = project.Directory + '\\';
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
 
Последнее редактирование:
  • Спасибо
Реакции: CSS, zlodey и littleKongo
это 40 case -ов ему строчить ), у него 40 текстовиков
Если все файлы находятся в одной папке или если ложить путь до файла в переменную то можешь так
C#:
Развернуть Свернуть Копировать
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;

string filePath = project.Directory + '\\';
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
Возможно я не правильно понял)
Если файлы изначально присутствуют, то мой пример не подходит, так как нет смысла в кейсах, проще получить список файлов и исходить из него, а если файлов изначально нет, но есть шаблон фильтров, по которым нужно формировать эти файлы, то кейсы вроде как раз подходят. Можно было и по-другому, конечно, сделать, завести массив этих фильтров, и динамически генерить кейсы из массива, правда не знаю, позволяет ли c# использовать динамические названия в кейсах)
Я подумал просто, что есть фильтры изначально, по которым нужно что-то отбирать и записывать в файл под названием этого фильтра.
 
Возможно я не правильно понял)
Если файлы изначально присутствуют, то мой пример не подходит, так как нет смысла в кейсах, проще получить список файлов и исходить из него, а если файлов изначально нет, но есть шаблон фильтров, по которым нужно формировать эти файлы, то кейсы вроде как раз подходят. Можно было и по-другому, конечно, сделать, завести массив этих фильтров, и динамически генерить кейсы из массива, правда не знаю, позволяет ли c# использовать динамические названия в кейсах)
Я подумал просто, что есть фильтры изначально, по которым нужно что-то отбирать и записывать в файл под названием этого фильтра.
Честно сам раз пять перечитывал, и то не знаю правильно ли я понял))
 
  • Спасибо
Реакции: littleKongo
это 40 case -ов ему строчить ), у него 40 текстовиков
Если все файлы находятся в одной папке или если ложить путь до файла в переменную то можешь так
C#:
Развернуть Свернуть Копировать
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;

string filePath = project.Directory + '\\';
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
А куда, в какую переменную путь ложить? У меня все 40 файлов в папке result хранятся, которая в папке проекта лежит
 
значит никуда нинадо project.Directory - это путь к папке проекта
в переменной например "мартышка" , код по значению из переменной ищет текстовый файл в папке, если такой файл есть то запись в файл по значению переменной, если нет то в файл другое
 
  • Спасибо
Реакции: littleKongo
так а папку result где прописать
Папка "result" в "project.Directory"
 
Такую ошабку двойную выдает
l2kY6gI.png
 
вот эту строку запиши вверху
bool appendNewLine =true;
 
  • Спасибо
Реакции: littleKongo
никуда нинадо прописывать, у тебя в переменной окружении путь до этой папки если проект запускаешь из этой папки
можешь так прописать
string path = @"C\asdf\asdf\result\";
 
  • Спасибо
Реакции: littleKongo
никуда нинадо прописывать, у тебя в переменной окружении путь до этой папки если проект запускаешь из этой папки
Не совсем так. Сам проект находится в папке project.Directory а Папка "result" вложена в нее и получается что сам фаил проекта находится не в одной папке с 40 фаилами
 
Не совсем так. Сам проект находится в папке project.Directory а Папка "result" вложена в нее и получается что сам фаил проекта находится не в одной папке с 40 фаилами
C#:
Развернуть Свернуть Копировать
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
bool appendNewLine =true;
string filePath = @"C\asdf\asdf\result\";
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
 
  • Спасибо
Реакции: CSS и littleKongo
А можно прописать путь как-то через переменную project.Directory?
Просто если переносить проект - каждый раз заново прописывать путь
 
А можно прописать путь как-то через переменную project.Directory?
Просто если переносить проект - каждый раз заново прописывать путь
во входных настройках только, пропиши и задай переменную, в коде замени на переменную
 
:D

Или собака

string filePath = project.Directory + @"\result\";
 
C#:
Развернуть Свернуть Копировать
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
bool appendNewLine =true;
string filePath = @"C\asdf\asdf\result\";
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
Самый нормальный вариант, я что-то сколько не сталкиваюсь с разного рода задачами по C# - так ниразу и не понадобился этот свитч, при том чистота кода не страдала
 
  • Спасибо
Реакции: ssXXXss
Кстати, а с таким кодом корректно будет идти запись в фаилы в многопотоке ?
 
не факт. для записи в многопотоке используйте списки и таблицы
 
  • Спасибо
Реакции: littleKongo
40 списков заколбасить надо :D
на С# можно и одним обойтись если правильно перепривызывать, и можно вообще их не создавать, а так же програмно создать, просто заранее положить в список назвагния текстовых файлов которые должны быть
 
на С# можно и одним обойтись если правильно перепривызывать, и можно вообще их не создавать, а так же програмно создать, просто заранее положить в список назвагния текстовых файлов которые должны быть
Покажешь как сделать? Скину названия текстовых :-)
 
нет )))))есть поиск, один пример показал
 
Покажешь как сделать? Скину названия текстовых :-)
Так смотрите, если есть заранее известны фильтры, то можно либо все их в кейсах прописать из моего примера, либо создать массив с этими фильтрами, а кейсы генерировать динамические из массива, тогда найденные результаты соответствующие этому фильтру будут складываться в файл с названием этого фильтра. Разве не это требуется?
Дайте свой список фильтров, запилю кесы под него)
 
Так смотрите, если есть заранее известны фильтры, то можно либо все их в кейсах прописать из моего примера, либо создать массив с этими фильтрами, а кейсы генерировать динамические из массива, тогда найденные результаты соответствующие этому фильтру будут складываться в файл с названием этого фильтра. Разве не это требуется?
Дайте свой список фильтров, запилю кесы под него)
При таком подходе многопоток будет корректно работать? Сейчас запустил в 3 потока и вроде работает, но кажется иногда делает лишние пробелы. Наверное тогда, когда хочет в один и тот же фаил записать одновременно с двух и более потоков
 
При таком подходе многопоток будет корректно работать? Сейчас запустил в 3 потока и вроде работает, но кажется иногда делает лишние пробелы. Наверное тогда, когда хочет в один и тот же фаил записать одновременно с двух и более потоков
а ты уверен что он записать что то должен был, может в переменной2 была пустота вот и пустоту записал
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)