[ID CC-CC2022] Чтение текстового файла в массив

Cool Shaman

Участник
Топикстартер
Сообщения
11
Реакции
0
Всем привет!
Имеется скрипт, который из большого текстового файла Spisok.txt по коду находит товар и выводит его наименование в текстовый фрейм. Строка в этом файле выглядит так:

"grep {findWhat:"4000047062"} {changeTo:"Тарелка десертная ~hЭтника-2,~h 21,4см"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}"

Всего более 35000 строк. Хочу написать скрипт объединения позиций товаров в одну линейку, типа:

"1000005531|1000197552|2400022466 - Шампунь SCHAUMA®, Интенсив от Sперхоти/ Энергия природы/ Драгоценный медовый эликсир/ 7 трав, 380мл".

Реализацию сего действа вижу через чтение файла в массив посредством FileReader'a и присвоение его элементов переменным, т.е. сначала записывается массив, потом строка делится на 2 позиции - код товара и наименование, а затем код присваивается одной переменной, а наименование, соответственно, другой. Ну, а дальше - дело техники!

Покажите, пожалуйста, пример кода для чтения текста в массив с разделением на подстроки, т.к. сам не смог разобраться с синтаксисом FileReader'a - всё время получаю сообщения об ошибке.
 
При чём здесь Индизайн?
 
Код:
var lines = [];
var fo = File('Spisok.txt');
fo.open('r');
while (!fo.eof) {
    lines.push(fo.reanln());
}
fo.close();
 
  • Спасибо
Реакции: Cool Shaman
а по какому параметру вы собираетесь их объединять?
 
Попробую конкретизировать задачу. Текстовый файл содержит в себе строки с кодами всех товаров магазина. Когда мне нужно получить список товаров по кодам из таблицы, то я копирую их из ячеек Эксель, создаю текстовый фрейм в Индизайне, вставляю туда и запускаю скрипт, который в файле Spisok.txt находит строку с данными кодами и выводит во фрейм уже не их, а наименование товаров. А когда проводятся акции, то несколько товаров одной линейки объединяются в одну позицию, типа:

"1000005531|1000197552|2400022466 - Шампунь SCHAUMA®, Интенсив от перхоти/ Энергия природы/ Драгоценный медовый эликсир/ 7 трав, 380мл".

Так вот я хочу создать скрипт, который найдёт эти коды в файле, выведет наименования этих товаров в окно, соединит в одну линейку и допишет их в тот же текстовый файл, скажем, в конец или в определённую строку. И в следующий раз при запуске скрипта по поиску кода он выдаст уже не три отдельных строки с разными наименованиями, а одну строку с линейкой акционных товаров.

Прилагаю набросок диалогового окна (оно ещё не полное). В нём загружена не линейка товаров, а просто список наобум, но это не важно. ))
 

Вложения

  • Снимок экрана 2018-09-18 в 11.55.10.png
    Снимок экрана 2018-09-18 в 11.55.10.png
    89.3 КБ · Просм.: 762
Последнее редактирование:
Вот полное окно скрипта. В текстовое окно слева вставляется список кодов линейки из буфера, нажимается кнопка "Найти" и коды и наименование каждой позиции появляется в строках правее, а ниже - комбинированный код для линейки. В самой нижней строке (Наименование) из всех наименований линейки вручную будет формироваться название линейки и при нажатии на "Сохранить" полученный комбинированный код и наименование линейки будет добавляться в тот же текстовый файл.
 

Вложения

  • Снимок экрана 2018-09-24 в 14.15.39.png
    Снимок экрана 2018-09-24 в 14.15.39.png
    89.2 КБ · Просм.: 740
reanln на readln исправьте только

либо можно lines = fo.read().split("\r");
 
Стрим?
 
стринг

File.read (chars: number ): string
Core JavaScript Classes
Reads the contents of the file, starting at the current position.
Returns a string that contains up to the specified number of characters. If a number of characters is not supplied, reads from the current position to the end of the file. If the file is encoded, multiple bytes might be read to create single Unicode characters.
chars (optional): Data Type: number
An integer specifying the number of characters to read.
Example:
aFile.read(chars)

документацию читаем иногда?
 
@Skvoznyak, а в js, вообще, есть стримы?