mikrocontroller.net

Forum: Compiler & IDEs Zeichenketten aus externen Dateien


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich würde gerne einen längeren Text den ich im Flash ablegen möchte aus
einer externen Datei in mein Programm übernehmen.
Habe das eben mal so gemacht:

const uint8_t index_html[] PROGMEM=
#include "index.html"

In der Datei index.html muss ich dann aber die Anführungszeichen am
Anfang und am Ende hineinschreiben. Außedem kann ich keine
Zeilenumbrüche in diese Datei einfügen, dann bekomme ich ein:

index.html:1: error: missing terminating " character

Schön sieht das mit dem include an dieser Stelle ja auch nicht aus.
Gibt es hierfür eine komfortablere Lösung? Schön sieht das mit dem
include an der Stelle ja auch nicht aus.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne die *.html Datei zu bearbeiten hast du so keine
Chance.

Dann kannst du die Sache mit dem #include durchziehen.

Hint: Diese Bearbeitung kann aber ein anderes, von dir
zu schreibendes, Programm machen :-)

  Original Datei auf
  Neue Datei erzeugen
  solange eine Zeile gelesen werden konnte
    Am Anfang der Zeile ein " einfügen
    Am Ende der Zeile ein "\n\"" einfügen
    geänderte Zeile in die neue Datei schreiben
  Neue Datei zu
  Original Datei zu
  Original Datei löschen
  Neue Datei umbennenen auf den Namen der Origianldatei

Alternativ könnte man das auch mit Stream-Editoren
ala awk oder sed machen. Aber ein Pgm dafür zu schreiben
ist eine gute Übung.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HTML-Dateien enthalten oft selbst das ", also sollte man das noch
escapen.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs mal mit sed probiert:

sed
's/\''/\\\'\'/g;s/"/\\\"/g;s/^^/\\"/g;s/$/\\"/g'
index.html > index.tmp
sed $'s/$/;/g' index.tmp > index_inc.html
rm index.tmp

Escaped ' und ", fügt am Zeilenanfang und -ende ein " hinzu. In der
letzten Zeile wird noch ein ; angehängt. Die Newlines habe ich
weggelassen um Platz zu sparen.
Für den Zeilenanfang muss man unter der Windows-Umgebung ein ^^
einsetzen, laut Doku sollte aber ein einfaches ^ reichen.
Muss nur noch sehen wie man das ein das Makefile einbauen kann...

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Um das Ganze mal abzuschließen:

Anbei eine Batchdatei mit den sed-Befehlen die die Umwandlung
vollzieht. Das Einbinden der konvertierten Dateien geschieht dann
folgendermaßen:

const char index_html[] PROGMEM=
#include "index.html_inc"

Im Makefile dann im Abschnitt all: folgendes hinzufügen:

# Default target.
all: begin htmltoinc

Einen neuen Abschnitt htmltoinc (wichtig sind die Tabs für die
Einrückungen):

# HTML-Dateien in Format für includierung wandeln
htmltoinc:
  @echo Konvertiere HTML-Dateien...
  html_to_inc.bat index.html index.html_inc
  @echo ...beendet.
  @echo


unter clean_list:
$(REMOVE) *.html_inc

fertig.

Mit Make all werden dann die angegebenen HTML-Dateien konvertiert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.