2008-11-11 3 views
1

Фон: У нас есть приложение, которое генерирует отчеты из HTML (которые могут иметь или не иметь встроенные скрипты). Источник HTML обычно хранится как БЛОБ в базе данных.Жесткий код HTML в код VB6

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

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

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

ответ

1

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

1

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

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