FB_filetell是获取光标的当前位置。
FB_fileseek是改变光标的位置,但是由于光标不能为-,所以使用FB_FILEOPEN的模式不可以使用Fopen_modeappend,这样会导致光标无法前移。模式的具体描述:https://infosys.beckhoff.com/content/1033/tcplclib_tc2_system/30983691.html?id=8233380726918996109
例程如下:(测试效果为将光标移到指令位置,之后如果写入内容则会从该位置覆盖后续内容,所以如果要执行插入的话,必须读取后续内容和当前需要插入的内容合并后写入)
fileopen( //打开文件,模式为r+和t模式,r+是可读可写且会覆盖原内容,t是text方式打开
sNetId:= '',
sPathName:= 'D:\filetest.txt',
nMode:= FOPEN_MODEREAD OR FOPEN_MODEPLUS OR FOPEN_MODETEXT,
ePath:= ,
bExecute:= bopen,
tTimeout:= T#2S,
bBusy=> ,
bError=> ,
nErrId=> ,
hFile=> hFile);
//获取当前光标位置
filetell(
sNetId:= '',
hFile:= hFile,
bExecute:= btell,
tTimeout:= ,
bBusy=> ,
bError=> ,
nErrId=> ,
nSeekPos=>tellSeekPos );
//设置光标位置,模式SEEK_CUR为相对模式
fileseek(
sNetId:= '',
hFile:= hFile,
nSeekPos:= nSeekPos,
eOrigin:= SEEK_CUR,
bExecute:= bseek,
tTimeout:= ,
bBusy=> ,
bError=> ,
nErrId=> );
//内容是以光标的位置进行插入
filewrite(
sNetId:= '',
hFile:= hFile,
pWriteBuff:= ADR(string1),
cbWriteLen:= LEN(string1),
bExecute:= bwrite,
tTimeout:= ,
bBusy=> ,
bError=> ,
nErrId=> ,
cbWrite=> );
//关闭文件
fileclose(
sNetId:= '',
hFile:= hFile,
bExecute:= bclose,
tTimeout:= ,
bBusy=> ,
bError=> ,
nErrId=> );