#javascript #text #siemens #wincc
Вопрос:
Я создаю сценарии в WinCC unified, где используется javascript, у меня есть код, который находит определенные 3 строки в текстовом файле и удаляет там значения, это работает, но я также хочу в основном удалить всю строку, как если бы вы нажимали пробел, когда в текстовой строке нет текста.
Код
HMIRuntime.FileSystem.ReadFile(path, "utf8").then(
function(text) {
const lines = text.split('n');
delete lines[noteNumber];
delete lines[noteNumber 1];
delete lines[noteNumber 2];
//HMIRuntime.Trace("lines:" lines.join('n'));
FileSystem.WriteFile(path, lines.join('n'),"utf8" )
});
Спасибо вам за любую любезную помощь.
Я попробовал сращивание, но теперь часть, которая считывает файл .txt и записывает его данные в массивы HMI, не обновляется, и значения больше не считываются. Код, который считывает файл .txt, находится здесь
HMIRuntime.FileSystem.ReadFile(path, "utf8").then(
function(text) {
for (let i = 0; i < maxNoteNumber; i ) {
HMIRuntime.Trace("Trace Message" text.split('n',i));
Tags('strDate[' i ']').Write(text.split('n')[i*3]);
Tags('strName[' i ']').Write(text.split('n')[i*3 1]);
Tags('strNote[' i ']').Write(text.split('n')[i*3 2]);
}
}).catch(function(errorCode) {
HMIRuntime.Trace("read error:" errorCode)
for (let i = 0; i <= maxNoteNumber; i ) {
Tags('strNote[' i ']').Write('n')//emty overwrite
}
//create a emtpy file
HMIRuntime.FileSystem.WriteFile(path," ", 'utf8').then(
function() {
HMIRuntime.Trace('Write file finished sucessfully');
}).catch(function(errorCode) {
HMIRuntime.Trace('Write failed errorcode=' errorCode);
});
});
Ответ №1:
delete
ввод свойства из массива не остановит использование этой строки при вводе .join
:
console.log(
[1, , 3].join('n')
);
const arr = [1, 2, 3];
delete arr[1];
console.log(
arr.join('n')
);
Вместо этого соедините линии, которые вы хотите удалить:
lines.splice(noteNumber, 3);
а потом lines.join('n')
даст вам то, что вы хотите.
Комментарии:
1. Большое вам спасибо. Я попробовал это, и хотя он правильно делает то, что я хочу, в текстовом файле, часть, которая считывает текстовый файл и сохраняет эти данные в массивы тегов HMI, теперь сломана и не обновляется при удалении текстового файла. Извините, я новичок в stackoverflow, поэтому я не знаю, как отправить вам код, чтобы вы увидели, как я читаю текстовый файл. Я просто отвечу себе, я думаю, так как у меня недостаточно персонажей в этом комментарии
2. Поскольку вы удалили 3 строки, похоже, вам может потребоваться уменьшить
maxNoteNumber
их на 3, прежде чем снова читать файл?maxNoteNumber -= 3
?3. На самом деле он правильно читает файл. Но это выходит из строя, когда у меня нет «пустого места» в том месте, где его читают. Поэтому, когда я открыл текстовый документ и просто удержал клавишу enter, затем сохранил и перезагрузил свою программу, она работает правильно. Но это действительно странно, потому что раньше у меня не было этой проблемы.
4. Что именно вы имеете в виду под «вылетает»? Что произошло и чего вы ожидали?
5. Ну, в основном код работает так: каждые 3 строки он считывает данные в 3 разных массива для даты, имени и примечания. Как эта строка 0. — дата[0], строка 1 — имя[0], строка 2 — примечание[0], строка 3 — дата[1], строка 4 — имя[1] ,… Таким образом, у меня было бы 3 больших массива данных, которые считывались бы из «назначенного» места, и если бы в этой строке не было текста, она вернула бы пустую строку, что я и хотел. Теперь, когда я использую сращивание для удаления текста, я ожидал, что каждое значение массива переместит свою позицию назад на 1.