Embutir HTML em código VB6
Pergunta
Fundo: nós temos um aplicativo que gera relatórios de HTML (que podem ou não podem ter script in-line). HTML é normalmente armazenada como um blob no banco de dados.
Existe agora a necessidade de codificar um relatório específico para a aplicação (ou seja, de modo que não é dependente de banco de dados). A primeira vez que tentou fazê-lo da maneira força bruta (recortando e colando o relatório inteiro em uma string const e anexando um monte de & vbNewLine & _
a ela, que não funcionou porque parece haver um limite para o número de & _
que pode ser usado . Eu pensei de comprimir tudo em (mais ou menos) uma única linha, mas não só que a legibilidade ferido, ele também não iria funcionar para a criação de scripts em linha.
Algo me ocorreu enquanto escrevia este: Eu poderia abrir o arquivo (que contém o código HTML que eu quero para codificar) programaticamente e escrever o conteúdo do arquivo em uma string. Eu vou dar um que ir agora ...
Alguém pode sugerir uma maneira melhor / mais elegante de fazer isso?
Solução 3
acabei incorporar o arquivo HTML em um recurso de arquivo (res) e carregá-lo a partir daí usando LoadResData. I fez outra pergunta href="https://stackoverflow.com/questions/280211/loading-html-from-a-res-file"> relativo à carga de arquivos de HTML a partir de arquivos res ( e obteve uma resposta muito bom também). Note-se que uma outra opção poderia ser a de incorporar o HTML (ou qualquer outro arquivo de texto) como um recurso personalizado; Desta forma, você será capaz de referenciar o recurso por nome (ou seja, o nome do recurso personalizado) ao usar LoadResData em vez de um número (que pode não significar muito para alguém que vem e tenta entender o seu código). Note também que se você quiser carregar o HTML em um string (como eu), você precisa chamar StrConv no resultado retornado por LoadResData (LoadResData retorna um array de bytes).
Outras dicas
Você pode ler cada linha do arquivo e anexá-lo como você vai. Alternativamente, você pode usar uma classe StringBuilder. Você precisaria quer escrever este classe ou copiá-lo de algum lugar como este . Fazendo as coisas desta maneira tem potencial para melhorar o desempenho também.
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
Se essa é a maneira que você tem que ir em seguida, pensar em usar a string html como um modelo com espaços reservados, como @@ var1 @@ na seqüência que você pode então substituir com os valores dinâmicos reais ao invés de tentar gerar a saída final em linha, deve ser muito mais fácil de depurar problemas.