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.
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.
HTML-Dateien enthalten oft selbst das ", also sollte man das noch escapen.
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...
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.