Взять строку из файла

rennigeB

Client
Регистрация
22.03.2017
Сообщения
19
Благодарностей
4
Баллы
3
Вроде бы самая простая вещь, но не могу найти как сделать.

Приходится изворачиваться через списки и там где могло быть одно действие (взять строки 0-4 из файла и положить в переменную) приходится делать пять:

1. Создать основной список из файла (из которого брать строки)
2. Создать дополнительный список
3. Выделить подписок чтобы взять диапазон строк из основного списка и поместить их в дополнительный
4. Объединить элементы дополнительного списка чтобы положить их в переменную
5. Очистить дополнительный список чтобы можно было его еще раз использовать в этом проекте
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Писал от руки, так что возможна грамматическая ошибка
Код:
return string.Join(Environmant.NewLine, project.Lists["mylist"].Take(4));
 

rennigeB

Client
Регистрация
22.03.2017
Сообщения
19
Благодарностей
4
Баллы
3
Писал от руки, так что возможна грамматическая ошибка
Код:
return string.Join(Environmant.NewLine, project.Lists["mylist"].Take(4));
Не разбираюсь в коде, но я так понял здесь все-равно задействованы списки? Мне же нужно обойтись без них.

Дело даже не в том что из-за них мне приходится городить костыли, а в том что их нельзя динамически обновлять.

Разберем на примере email-спамера. Есть список серверов (например, файл smtp.txt) и несколько списков почт по которым нужно спамить (файлы cars.txt, iphone.txt и т.д. - там просто email в каждой строке).

Каждый сервер заточен под определенную аудиторию поэтому нельзя выбирать рандомно и, уж тем более, объединять все файлы с почтами в один. Нужно чтобы каждый сервер работал только по своей аудитории, поэтому я решил добавить в файл smtp.txt еще один параметр который бы и указывал каждому серверу на файл с подходящими для него почтами.

Таким образом файл smtp.txt выглядит вот так:

Код:
IP        Login    Password    ContactsFile    Status
103.83.247.233    root    8F6f90^0    china.txt    sent
111.7.174.189    root    977f%R69    china.txt    sending
63.243.252.244    root    Uo97266%    iphone.txt    sending
164.132.161.3    root    U6i9356#    iphone.txt    ready
63.243.252.114    root    0L02f4#2    cars.txt    ready
Но указывая в настройках списка пусть до файла {-Project.Directory-}\{-Variable.ContactsFile-} мы на самом старте проекта получим пустой список потому что переменная {-Variable.ContactsFile-} еще не взята с файла smtp.txt. Поэтому, по мимо тех костылей что я описал в первом посте, мне приходится еще и обновлять список довольно тупым образом - брать содержимое файла, помещать в переменную и затем уже через Добавить текст заполнять этот злосчастный список.

Может быть конечно у меня изначально не правильная логика построения проекта, но в любом случае мне не понятно почему такую простую функцию вырезали, ведь раньше же вроде было https://help.zennolab.com/ru/v3/zennoposter/index.html?data_prepearing_and_set.htm
 

rennigeB

Client
Регистрация
22.03.2017
Сообщения
19
Благодарностей
4
Баллы
3
Вот для сравнения - слева как сейчас, а справа как хотелось бы)

 

Вложения

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-4"; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);
 

rennigeB

Client
Регистрация
22.03.2017
Сообщения
19
Благодарностей
4
Баллы
3
C#:
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-4"; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);
Вот спасибо! Прям то что надо)
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
556
Баллы
93
Наверно удаление добавить надо. bool removeLine
 

rennigeB

Client
Регистрация
22.03.2017
Сообщения
19
Благодарностей
4
Баллы
3
Наверно удаление добавить надо. bool removeLine
Да я просто без переменной на true изменил. Ща осталось только сообразить как туда путь {-Project.Directory-}\{-Variable.ContactsFile-} впихнуть)
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Наверно удаление добавить надо. bool removeLine
Просто подумал, что ТСу не нужно было брать с удалением или чтоб можно проще делать выбор, поэтому по-умолчанию false указал.
Ща осталось только сообразить как туда путь {-Project.Directory-}\{-Variable.ContactsFile-} впихнуть)
C#:
string path = project.Directory + @"\" + project.Variables["ContactsFile"].Value;
 
  • Спасибо
Реакции: ks1989 и rennigeB

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
556
Баллы
93
project.Directory+project.Variables["ContactsFile"].Value

Опередил :-)
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: ks1989 и rennigeB

rennigeB

Client
Регистрация
22.03.2017
Сообщения
19
Благодарностей
4
Баллы
3
  • Спасибо
Реакции: ks1989 и Dimionix

colcefer

Новичок
Регистрация
20.01.2016
Сообщения
20
Благодарностей
0
Баллы
1

impul5e

Client
Регистрация
15.08.2017
Сообщения
202
Благодарностей
40
Баллы
28
C#:
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-4"; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);
Подскажите, а если диапазон нужно указать из переменной, то в каком формате её указывать?
Разобрался, в таком случае нужно использовать такой код:
C#:
string path = @"C:\file.txt"; // путь к файлу
string numberOfLine = "0-"+project.Variables["n"].Value;; // номера строк (можно указать диапазон или перечислить через запятую и т.д. = http://zennolab.com/wiki/ru:ranges)
string[] tmp = FileSystem.FileGetLines(path, numberOfLine, false, false);
return string.Join("\r\n", tmp);
 
Последнее редактирование:

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