我正在处理从另一个程序员继承的一些HTML代码,它使用以下形式的include语句:
~inc:filename.inc~
但是,我遇到的问题是这个include语句无法可靠地工作。大约90%的时间,所包含文件中的所有信息都是导入的,没有任何问题,但是当我刷新页面时,所有这些内容都会丢失,并在我再次刷新时返回。我已经尝试将include语句更改为更广泛使用的形式,例如:
<!-- FILE="filename.inc"-->
<!-- virtual="../filename.inc"-->
<!-- virtual="/filename.inc"-->
但这只会导致文件根本不被包含在内。我一直在互联网上的其他地方闲逛,但似乎找不到任何解决方案,甚至没有使用'~inc:'include语句。
值得注意的是,此HTML正在从托管在低功耗设备上的固件加载,并且页面上的某些项目会定期更新。更新方法是否可能只是运行得太快而无法处理硬件?
有没有人对如何解决这个问题有任何想法?
答案 0 :(得分:0)
好的,所以我下载了应用程序库文档并查看了TCPIP Stack Help.chm
并找到了HTTPIncFile
函数:
void HTTPIncFile(ROM BYTE* cFile);
用户不应直接调用此函数,而应在其HTML代码中以~inc:filename.ext~的形式添加动态变量,以包含(例如)该指定位置的文件“filename.ext”。 MPFS2 Generator实用程序将处理其余的工作。
因此看起来您的原始语法是唯一记录的语法。现在,虽然它说没有直接调用函数,但是因为你遇到了问题,所以看看你是否得到相同的结果可能是值得的。
另请注意:
当curHTTP.callbackPos为0时,将打开文件并写入尽可能多的字节。然后将当前位置保存到curHTTP.callbackPos并关闭该文件。在后续呼叫中,从保存的位置开始读取并继续。到达输入文件的末尾后,curHTTP.callbackPos将重新设置为0以表示完成。
这是纯粹的推测,但如果您尝试多次包含该文件,或者尝试同时包含一个或多个文件,则可能会遇到问题。如果未包含文件,可能是因为callbackPos
未重置。我还假设您没有尝试修改模板文件,但您确实说过:
页面上的某些项目会定期更新
如果要包含的文件正在更改,则可能遇到并发问题。您可能需要求助于锁定或同步以确保不会发生这种情况,或者尝试在include方法上等待旋转,检查偏移量,直到成功包含正数字节为止。