Frage

Hintergrund: wir eine Anwendung, die Berichte von HTML-Code generiert (das kann oder nicht Inline-Scripting hat). Die HTML-Quelle wird normalerweise als ein Klecks in der Datenbank gespeichert.

Es ist nun die Notwendigkeit einer festen Code einen bestimmten Bericht in der Anwendung (das heißt so, dass es nicht Datenbank abhängig ist). Ich versuchte es zuerst die Brute-Force-Weg (Schneiden und den gesamten Bericht in eine const String einfügen und eine ganze Menge & vbNewLine & _ ihm anhängt, das nicht funktioniert, weil es scheint eine Grenze für die Anzahl der & _ zu sein, die verwendet werden können, . ich dachte an alles, was in (mehr oder weniger) eine einzige Zeile komprimiert, aber nicht, dass nur das tut weh Lesbarkeit, es wäre auch nicht für das Inline-Scripting arbeiten.

Etwas nur fiel mir ein, während das Schreiben: ich die Datei (mit der HTML ich hart codieren möchten) öffnen könnte programmatisch und den Inhalt der Datei in einen String zu schreiben. Ich gebe, dass ein jetzt gehen ...

Kann jemand empfehlen, eine bessere / elegantere Art und Weise, dies zu tun?

War es hilfreich?

Lösung 3

Ich landete die HTML-Datei in eine Ressource Einbettung (res) Datei und es von dort mit LoadResData geladen. Ich fragte eine andere Frage von res-Dateien zum Laden aus HTML-Dateien beziehen ( und bekam eine ziemlich gute Antwort zu). Beachten Sie, dass eine weitere Option sein könnte, die HTML (oder jede andere Textdatei) als benutzerdefinierte Ressource einzubetten; Auf diese Weise werden Sie auch die Ressource nach Namen (das heißt den Namen der benutzerdefinierten Ressource) bei der Verwendung von LoadResData statt einer Zahl (die zu viel für jemanden bedeuten nicht, wer kommt und versucht, den Code zu verstehen) verweisen. Beachten Sie, dass auch, wenn Sie den HTML-Code in eine Zeichenfolge geladen werden soll (wie ich), werden Sie StrConv auf das Ergebnis von LoadResData zurückrufen müssen (LoadResData gibt ein Array von Bytes).

Andere Tipps

Sie können jede Zeile der Datei lesen und fügen Sie es, wie Sie gehen. Alternativ können Sie eine Klasse String verwenden. Sie müssten entweder diese Klasse schreiben oder kopieren Sie es von irgendwo wie diese . Dinge zu tun, auf diese Weise hat das Potenzial zur Verbesserung der Leistung als auch.

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

Wenn das der Weg Sie gehen müssen, dann denken Sie an unter Verwendung des HTML-String als Vorlage mit Platzhalter wie @@ var1 @@ in der Zeichenfolge, die Sie dann mit den tatsächlichen dynamischen Werten ersetzen können anstatt zu versuchen, die endgültige Ausgabe zu erzeugen, inline, sollte viel einfacher zu debuggen Probleme sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top