2. Tc2_System

2.10. 文本文件的插入写入FB_filetell,FB_fileseek

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=> );



2020.7.3 罗晓晨 编辑