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

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 - всё время получаю сообщения об ошибке.
 

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 301
Реакции
7 863
При чём здесь Индизайн?
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Код:
var lines = [];
var fo = File('Spisok.txt');
fo.open('r');
while (!fo.eof) {
    lines.push(fo.reanln());
}
fo.close();
 
  • Спасибо
Реакции: Cool Shaman

eugeny

15 лет на форуме
Сообщения
855
Реакции
210
а по какому параметру вы собираетесь их объединять?
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434

Cool Shaman

Участник
Топикстартер
Сообщения
11
Реакции
0
Попробую конкретизировать задачу. Текстовый файл содержит в себе строки с кодами всех товаров магазина. Когда мне нужно получить список товаров по кодам из таблицы, то я копирую их из ячеек Эксель, создаю текстовый фрейм в Индизайне, вставляю туда и запускаю скрипт, который в файле Spisok.txt находит строку с данными кодами и выводит во фрейм уже не их, а наименование товаров. А когда проводятся акции, то несколько товаров одной линейки объединяются в одну позицию, типа:

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

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

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

Вложения

  • Снимок экрана 2018-09-18 в 11.55.10.png
    Снимок экрана 2018-09-18 в 11.55.10.png
    89.3 КБ · Просм.: 704
Последнее редактирование:

Cool Shaman

Участник
Топикстартер
Сообщения
11
Реакции
0
Вот полное окно скрипта. В текстовое окно слева вставляется список кодов линейки из буфера, нажимается кнопка "Найти" и коды и наименование каждой позиции появляется в строках правее, а ниже - комбинированный код для линейки. В самой нижней строке (Наименование) из всех наименований линейки вручную будет формироваться название линейки и при нажатии на "Сохранить" полученный комбинированный код и наименование линейки будет добавляться в тот же текстовый файл.
 

Вложения

  • Снимок экрана 2018-09-24 в 14.15.39.png
    Снимок экрана 2018-09-24 в 14.15.39.png
    89.2 КБ · Просм.: 684

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
reanln на readln исправьте только

либо можно lines = fo.read().split("\r");
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434
Стрим?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
стринг

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)

документацию читаем иногда?
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434
@Skvoznyak, а в js, вообще, есть стримы?