3

我正在处理一些从另一个程序员继承的 HTML 代码,它使用以下形式的 include 语句:

~inc:filename.inc~

但是,我遇到的问题是这个包含语句不能可靠地工作。大约 90% 的时间,包含文件中的所有信息都可以毫无问题地导入,但是当我刷新页面时,所有这些内容经常会丢失,当我再次刷新时又会返回。我已经尝试将包含语句更改为更广泛使用的形式,例如:

<!-- FILE="filename.inc"-->
<!-- virtual="../filename.inc"-->
<!-- virtual="/filename.inc"-->

但这只会导致文件始终不被包含在内。我一直在互联网上的其他地方四处寻找,但似乎找不到任何解决方案,甚至找不到任何使用 '~inc:' 包含语句的方法。

值得注意的是,此 HTML 是从托管在低功耗设备上的固件加载的,并且页面上的某些项目会定期更新。更新方法是否可能运行得太快而硬件无法处理?

有人对我如何解决这个问题有任何想法吗?

4

1 回答 1

0

OK,于是我下载了应用程序库的文档,查看了一下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未重置。我还假设您没有尝试修改模板文件,但您确实说过:

页面上的某些项目会定期更新

如果您希望包含的文件正在更改,您可能会遇到并发问题。您可能需要使用锁定或同步来确保不会发生这种情况,或者尝试等待包含方法,检查偏移量,直到您成功包含正数的字节。

于 2011-06-06T11:31:51.720 回答