2008-11-11 87 views
1

背景:我们有一个应用程序可以从HTML(可能有或没有内嵌脚本)生成报告。 HTML源通常作为blob存储在数据库中。将HTML硬编码为VB6代码

现在需要将特定的报告硬编码到应用程序中(即,使其不依赖于数据库)。我首先尝试了蛮力的方式(将整个报表剪切并粘贴到一个常量字符串中,并为其添加了大量的& vbNewLine & _;这不起作用,因为似乎可以使用的数量限制为& _ 。我想将所有东西压缩成一条线(或多或少),但这不仅会损害可读性,而且也不适用于内联脚本。

写这篇文章时我刚刚发生了什么:我可以以编程方式打开文件(包含HTML我想要硬编码),并将文件的内容写入一个字符串。我现在就去...

任何人都可以提出一个更好/更优雅的方式做到这一点?

回答

1

我最终将HTML文件嵌入资源(res)文件并使用LoadResData从那里加载它。我问另一个question有关从res文件加载HTML文件(并得到了一个很好的答案)。请注意,另一个选项可以是将HTML(或任何其他文本文件)作为自定义资源嵌入;这样,当使用LoadResData而不是一个数字(对于那些出现并试图理解你的代码的人可能不会意味着太多)时,你将能够通过名称(即自定义资源的名称)引用该资源。还要注意的是,如果你想把HTML加载到一个字符串中(就像我这样做),你需要调用StrConv对LoadResData返回的结果(LoadResData返回一个字节数组)。

1

如果这是您必须去的方式,那么可以考虑在字符串中使用带有@@ var1 @@的占位符作为模板的html字符串,然后用实际的动态值替换,而不是尝试生成最终输出内联,应该更容易调试问题。

2

您可以阅读文件的每一行并随时追加它。或者,你可以使用一个StringBuilder类。你需要写这个课程或从like this的地方复制它。这样做也有可能提高性能。

 
Dim oSB as CStringBuilder 
Dim sHtml as String 

Set oSB = new CStringBuilder 
With oSB 
    Call .Append("Some HTML here") 
    Call .Append("Some more HTML here") 
    ' etc... 
    sHtml = .ToString() 
End With 

Set oSB = Nothing