Domanda

Background: abbiamo un'applicazione che genera report da HTML (che può avere o meno script inline). Il sorgente HTML viene normalmente archiviato come un BLOB nel database.

Ora è necessario codificare un determinato report nell'applicazione (ovvero in modo che non dipenda dal database). L'ho provato per la prima volta in modo brutale (tagliando e incollando l'intero rapporto in una stringa const e aggiungendo un sacco di & amp; vbNewLine & amp; _ ad esso; che non ha funzionato perché sembra che ci sia essere un limite al numero di & amp; _ che posso usare. Ho pensato di comprimere tutto in (più o meno) una singola riga, ma non solo danneggerebbe la leggibilità, ma non lo farebbe lavorare per gli script in linea.

Mi è appena successo qualcosa mentre scrivevo questo: potevo aprire il file (contenente l'HTML che voglio hardcode) programmaticamente e scrivere il contenuto del file in una stringa. Ci proverò ora ...

Qualcuno può suggerire un modo migliore / più elegante per farlo?

È stato utile?

Soluzione 3

Ho finito per incorporare il file HTML in un file di risorse (res) e caricarlo da lì usando LoadResData. Ho fatto un'altra domanda relativa al caricamento di file HTML da file res ( e ho ottenuto anche una risposta abbastanza buona). Si noti che un'altra opzione potrebbe essere quella di incorporare l'HTML (o qualsiasi altro file di testo) come risorsa personalizzata; in questo modo sarai in grado di fare riferimento alla risorsa per nome (cioè il nome della risorsa personalizzata) quando usi LoadResData piuttosto che un numero (che potrebbe non significare troppo per qualcuno che arriva e cerca di capire il tuo codice). Si noti inoltre che se si desidera caricare l'HTML in una stringa (come faccio io), è necessario chiamare StrConv sul risultato restituito da LoadResData (LoadResData restituisce una matrice di byte).

Altri suggerimenti

Puoi leggere ogni riga del file e aggiungerlo mentre procedi. In alternativa, è possibile utilizzare una classe StringBuilder. Dovresti scrivere questa classe o copiarla da qualche parte come questo . Fare le cose in questo modo ha anche il potenziale per migliorare le prestazioni.

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 questo è il modo in cui devi procedere, pensa di utilizzare la stringa html come modello con segnaposto come @@ var1 @@ nella stringa che puoi quindi sostituire con i valori dinamici effettivi anziché cercare di generare l'output finale in linea, dovrebbe essere molto più facile eseguire il debug dei problemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top