1

背景: HTML からレポートを生成するアプリケーションがあります (インライン スクリプトがある場合とない場合があります)。HTML ソースは通常、データベースに BLOB として保存されます。

現在、特定のレポートをアプリケーションにハードコードする必要があります (つまり、データベースに依存しないようにするため)。私は最初にそれを強引な方法で試しました (レポート全体を切り取って const 文字列に貼り付け、そこに大量の文字列を追加します。使用できる& vbNewLine & _数に制限があるように見えるため、うまくいきませんでした。& _すべてを(多かれ少なかれ)1行に圧縮することを考えましたが、それは読みやすさを損なうだけでなく、インラインスクリプトでも機能しません。

これを書いているときに何かが思い浮かびました: ファイル (ハードコーディングしたい HTML を含む) をプログラムで開き、ファイルの内容を文字列に書き込むことができました。今やってみます...

誰かがこれを行うためのより良い/よりエレガントな方法を提案できますか?

4

3 に答える 3

2

ファイルの各行を読み取り、必要に応じて追加できます。または、StringBuilder クラスを使用することもできます。このクラスを作成するか、このような場所からコピーする必要があります。このように物事を行うことで、パフォーマンスも向上する可能性があります。

CStringBuilder として oSB を薄暗くする
Dim sHtml を文字列として

oSB を設定 = 新しい CStringBuilder
OSBあり
  Call .Append("HTML をここに")
  Call .Append("ここにもう少し HTML")
  」など...
  sHtml = .ToString()
で終わる

oSB = なしに設定
于 2008-11-11T04:25:45.677 に答える
1

それがあなたが行かなければならない方法である場合は、最終的な出力をインラインで生成しようとするのではなく、実際の動的な値に置き換えることができる文字列に @@var1@@ のようなプレースホルダーを持つテンプレートとして html 文字列を使用することを考えてください。問題のデバッグがはるかに簡単になります。

于 2008-11-11T04:01:50.937 に答える
1

最終的に、HTML ファイルをリソース (res) ファイルに埋め込み、そこから LoadResData を使用してロードしました。res ファイルからの HTML ファイルの読み込みに関する別の質問をしました (かなり良い回答もありました)。別のオプションとして、HTML (またはその他のテキスト ファイル) をカスタム リソースとして埋め込むこともできます。こうすることで、LoadResData を使用する際に数値ではなく名前 (つまり、カスタム リソースの名前) でリソースを参照できるようになります (これは、あなたのコードを理解しようとする人にとってはあまり意味がないかもしれません)。また、HTML を文字列にロードする場合 (私のように)、LoadResData によって返された結果に対して StrConv を呼び出す必要があることに注意してください (LoadResData はバイト配列を返します)。

于 2008-11-11T07:51:59.333 に答える