-1

我在使用 javascript 的 WinCC 统一中创建脚本,我有一些代码可以在文本文件中找到特定的 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);
});
});
4

1 回答 1

0

delete从数组中获取属性不会阻止该行在.joining 时被使用:

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')会给你你想要的。

于 2021-03-22T16:54:08.773 回答