Жесткое кодирование HTML в код VB6 - PullRequest
1 голос
/ 11 ноября 2008

Справочная информация: у нас есть приложение, которое генерирует отчеты из HTML (которое может иметь или не иметь встроенные сценарии). Источник HTML обычно хранится в виде блоба в базе данных.

Теперь необходимо жестко закодировать конкретный отчет в приложение (т. Е. Чтобы он не зависел от базы данных). Сначала я попробовал это методом грубой силы (разрезал и вставил весь отчет в строку констант и добавил к нему целую партию & vbNewLine & _; это не сработало, поскольку, как представляется, существует ограничение на число & _ это можно использовать. Я думал о сжатии всего в (более или менее) одну строку, но это не только ухудшит читабельность, но и не будет работать для встроенных сценариев.

Что-то со мной произошло, когда я писал это: я мог открыть файл (содержащий HTML-код, который я хочу жестко закодировать) программно и записать содержимое файла в строку. Я сейчас попробую ...

Кто-нибудь может предложить лучший / более элегантный способ сделать это?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2008

Вы можете прочитать каждую строку файла и добавить его, как вы идете. В качестве альтернативы вы можете использовать класс StringBuilder. Вам нужно будет либо написать этот класс, либо скопировать его откуда-то , например . Подобные действия также могут улучшить производительность.

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
1 голос
/ 11 ноября 2008

Я закончил встраивать файл HTML в файл ресурса (res) и загружать его оттуда с помощью LoadResData. Я задал еще один вопрос , касающийся загрузки файлов HTML из файлов res (и тоже получил довольно хороший ответ). Обратите внимание, что другим вариантом может быть внедрение HTML (или любого другого текстового файла) в качестве пользовательского ресурса; таким образом вы сможете ссылаться на ресурс по имени (то есть по имени пользовательского ресурса), когда используете LoadResData, а не число (что может не слишком много значить для того, кто приходит и пытается понять ваш код). Также обратите внимание, что если вы хотите загрузить HTML в строку (как я), вам нужно вызвать StrConv для результата, возвращаемого LoadResData (LoadResData возвращает массив байтов).

1 голос
/ 11 ноября 2008

Если вы идете по этому пути, подумайте об использовании строки html в качестве шаблона с заполнителями, такими как @@ var1 @@ в строке, которые затем можно заменить действительными динамическими значениями, а не пытаться сгенерировать окончательный результат. встроенный, должно быть намного легче отладить проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...