Жесткое кодирование HTML в код VB6
Вопрос
Фон : у нас есть приложение, которое генерирует отчеты из HTML (которые могут иметь или не иметь встроенные сценарии). Источник HTML обычно хранится в виде блоба в базе данных.
Теперь необходимо жестко закодировать конкретный отчет в приложение (т. е. чтобы он не зависел от базы данных). Сначала я попробовал это методом грубой силы (вырезая и вставляя весь отчет в константную строку и добавляя к нему много & amp; vbNewLine & amp; _
; это не сработало, потому что быть ограниченным числом & amp; _
, которое можно использовать. Я думал о сжатии всего в (более или менее) одну строку, но это не только ухудшит читабельность, но и не повредит работать для встроенных сценариев.
Что-то со мной произошло, когда я писал это: я мог открыть файл (содержащий HTML-код, который я хочу жестко закодировать) программно и записать содержимое файла в строку. Я сейчас попробую ...
Кто-нибудь может предложить лучший / более элегантный способ сделать это? Р>
Решение 3
Я закончил встраивать HTML-файл в файл ресурсов (res) и загружать его оттуда с помощью LoadResData. Я задал еще один вопрос , касающийся загрузки файлов HTML из файлов res ( и получил довольно хороший ответ тоже). Обратите внимание, что другим вариантом может быть внедрение HTML (или любого другого текстового файла) в качестве пользовательского ресурса; таким образом вы сможете ссылаться на ресурс по имени (то есть по имени пользовательского ресурса) при использовании LoadResData, а не по номеру (что может не слишком много значить для того, кто приходит и пытается понять ваш код). Также обратите внимание, что если вы хотите загрузить HTML в строку (как я), вам нужно вызвать StrConv для результата, возвращаемого LoadResData (LoadResData возвращает массив байтов). Р>
Другие советы
Вы можете прочитать каждую строку файла и добавлять ее по мере необходимости. В качестве альтернативы вы можете использовать класс 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
Если вы идете по этому пути, подумайте об использовании строки html в качестве шаблона с заполнителями, такими как @@ var1 @@ в строке, которые затем можно заменить действительными динамическими значениями, а не пытаться сгенерировать окончательный результат. встроенный, должно быть намного проще для устранения проблем.