2008-11-11 99 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