问题描述
我在使用 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);
});
});
解决方法
在
delete
ing: 时,.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')
会给你你想要的。