Question

Arrière-plan: , nous avons une application qui génère des rapports à partir de HTML (avec ou sans script intégré). La source HTML est normalement stockée sous forme de blob dans la base de données.

Il est maintenant nécessaire de coder en dur un rapport particulier dans l’application (c’est-à-dire pour qu’il ne dépende pas de la base de données). J'ai d'abord essayé la méthode de la force brute (couper / coller tout le rapport dans une chaîne const et y ajouter tout un tas de & vbNewLine & amp; _ ; cela ne fonctionnait pas car il semble que être une limite au nombre de & amp; _ pouvant être utilisé. J'ai pensé à tout compresser en (plus ou moins) une seule ligne, mais cela ne nuirait pas seulement à la lisibilité, mais ne le ferait pas non plus. travailler pour les scripts en ligne.

Quelque chose me vient à l'esprit en écrivant ceci: je pouvais ouvrir le fichier (contenant le code HTML que je veux coder en dur) par programme et écrire le contenu du fichier dans une chaîne. Je vais tenter le coup maintenant ...

Quelqu'un peut-il suggérer une manière meilleure / plus élégante de procéder?

Était-ce utile?

La solution 3

J'ai fini par incorporer le fichier HTML dans un fichier de ressources et le charger à partir de là en utilisant LoadResData. J'ai posé une autre question sur le chargement de fichiers HTML à partir de fichiers res ( et obtenu une très bonne réponse aussi). Notez qu'une autre option pourrait consister à incorporer le HTML (ou tout autre fichier texte) en tant que ressource personnalisée; De cette façon, vous pourrez référencer la ressource par son nom (c'est-à-dire le nom de la ressource personnalisée) en utilisant LoadResData plutôt qu'un nombre (ce qui peut ne pas vouloir dire grand chose à quelqu'un qui cherche à comprendre votre code). Notez également que si vous souhaitez charger le code HTML dans une chaîne (comme je le fais), vous devez appeler StrConv sur le résultat renvoyé par LoadResData (LoadResData renvoie un tableau d'octets).

Autres conseils

Vous pouvez lire chaque ligne du fichier et l’ajouter au fur et à mesure. Vous pouvez également utiliser une classe StringBuilder. Vous devez écrire cette classe ou la copier quelque part. like cette . Faire les choses de cette façon pourrait également améliorer les performances.

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

Si vous devez suivre cette méthode, envisagez d'utiliser la chaîne html comme modèle avec des espaces réservés tels que @@ var1 @@ dans la chaîne, que vous pourrez ensuite remplacer par les valeurs dynamiques réelles plutôt que d'essayer de générer la sortie finale. inline, devrait être beaucoup plus facile à résoudre les problèmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top