Hallo zusammen,
Gibt es eine Möglichkeit, um vor dem Kompilieren html-Dateien als
String/chararray einzulesen?
Background: ich benutze ein Esp12 Modul für einen kleinen Webserver, und
ich möchte die Seiten möglichst komfortabel erstellen und dann einbinden
können.
Wenn ich den html-Text im Quellcode zurdne, dann muss ich ja lauter
Escape-Chracter und quotes setzen. Das macht nachträgliche Änderungen
etwas mühsam.
Also anstatt:
Phillip H. schrieb:> Wenn ich den html-Text im Quellcode zurdne, dann muss ich ja lauter> Escape-Chracter und quotes setzen.
Schreib Dir ein Script, das das erledigt, und rufe das Script vor dem
Compilieren auf. Das lässt sich auch als "pre-build-step" in die
Projektverwaltung des Visual Studio integrieren.
Als Funktion im Quelltext kann das nicht funktionieren, oder hat Dein
ESP8266 ein Dateisystem, auf das er zugreifen kann?
> Schreib Dir ein Script, das das erledigt, und rufe das Script vor dem> Compilieren auf. Das lässt sich auch als "pre-build-step" in die> Projektverwaltung des Visual Studio integrieren.
Hab ich noch nie gemacht, werd mich mal einlesen, danke!
> Als Funktion im Quelltext kann das nicht funktionieren, oder hat Dein> ESP8266 ein Dateisystem, auf das er zugreifen kann?
Ne hat er per sé nicht. Es sollte eben auch nicht zur Laufzeit geparsed
werden sondern vor dem Compilen, als Makro o.ä., nur um mir das Leben
leichter zu machen, die Seiten sind statisch.
Dazu ja deine erste Antwort mit dem Skript. Danke nochmal.
Es gibt Tools, die einen Hexdump einer Datei in einem C-kompatiblen
Format erzeugen. Diese Hexdump-Dateien lassen sich zwar im Editor nicht
sinnvoll verarbeiten, aber das kann Dir bei o.g. Vorgehensweise ja auch
wurscht sein.
Auf linuxartigen Systemen gibt es da xxd, das mit der
Kommandozeilenoption -i genau das erledigt.
Hier ein Beispiel anhand einer Textdatei namens "bla.txt":
Rufus Τ. F. schrieb:> Was hat das mit der bash zu tun? Die ist nur 'ne shell.
bash ist ein Script Interpreter mit nem interaktiven Prompt. Scripte
dafür nennt man umganssprachlich "shell script". Und ja, als shell kann
man das auch gut nutzen, zu dem Zweck wurde es ja auch mal erfunden.
Rufus Τ. F. schrieb:> Das ist sicherlich enorm hilfreich, insbesondere, wo es um xxd geht.
Evtl. schon (falls der TO Windows 10 verwendet).
Rufus Τ. F. schrieb:
> xxd ist auch für Windows verfügbar, z.B. findet es sich in den "gnu> utilities".
Max schrieb:
> Alternativ in Windows 10 einfach per Bash.
Bash öffnen und dann xxd laut deiner Anleitung verwenden (als
Alternative zur Installation der GNU utilities).
sudo apt-get install xxd
sollte doch neuerdings auch unter Windows 10 gehen hab ich gelesen,
nachdem MS jetzt unter der Macht der Konkurrenz eingeknickt ist und
endlich Anstalten macht ihr System kompatibel zur Rest der Welt zu
machen.
Also, GNUUtilities gibts nicht für Win64 (oder doch? Link?), die
UbuntuEnvironment mit Bash unter Windows findet xxd nicht
-> sudo apt-get install xxd -> Paket xxd kann nicht gefunden werden.
Habe diverse xxd Installationen probiert, aber keine mit mit Parameter
-i tatsächlich das .c file mit der variable[]{...} Struktur draus, wie
es laut doku eigentlich sein sollte...Weitere Ideen?
Ich nehm alles zurück, es geht. Doofi wollte test.html "dumpen", wo die
Datei doch test.htm heisst...
Jetzt der nächste Schritt, wie kriege ich das ganze als Pre Build Step
in Visual Studio.
Habe schon im Projektmappenexplorer in den Eigentschaften die
"Benutzerdefinierten Buildschritte" gefunden, unter "allgemein" und
"vorher ausführen".
Und da endet es bisher. Kann ich den Bash command "xxd -i datei.html
datei.c" hier direkt aufrufen, oder schreibe ich ein script und rufe das
auf? Bei beidem ist mir nicht klar, wie ich das hier eingebe.
Sorry wenn die Fragen doof sind, mit C und C++ Code komme ich gut klar,
aber für das ganze gescripte fehlt mir einfach die Erfahrung.
LG
Wenn es nicht bash sein muss, sondern xxd auch auf normalen Wege
aufgerufen werden kann, kannst Du tatsächlich "xxd -i datei.html
datei.c" in Deinen "benutzerdefinierten Buildschritt" eintragen.
Allerdings wirst Du entweder absolute Pfade für die Dateien angeben
müssen (schlecht) oder aber die verschiedenen Umgebungsvariablen nutzen,
die Dir das Visual Studio zur Verfügung stellt. Zum Aufruf von xxd muss
xxd entweder in einem Verzeichnis liegen, das im Pfad enthalten ist
(Umgebungsvariable "PATH") oder aber der absolute Pfad auf xxd.exe
angegeben werden.
Die schnellste, wenn auch nicht zu bevorzugende Variante ist also
Hm ok, schau ich mir an. Soweit ich verstanden habe, kann ich
shellscripte nur aus bash.exe heraus aufrufen, aber man kann sie
irgendwie in batch-dateien einbauen. Dann könnte ich ja die batch in den
Projektordner legen und von da aus ausführen... Einfach geht anders
oder?
Hm ok, da hängts bei mir aus. Meine Version von xxd kam mit der Windows
Ubuntu Environment. Kann ich das auch auf anderem Weg aufrufen
/ausführen als über die bash.exe?
Keine Ahnung.
Ich habe Dir einen Link auf das Sourcefile von xxd gepostet, daraus ein
natives Windows-Exe-File zu machen ist mit Visual Studio (resp. dem
darin enthaltenen C-Compiler) eine Sache von fünf Minuten.
Warum man deswegen eine Linux-Emulationsumgebung mit anderer Shell
verwenden muss, entzieht sich meinem Verständnis, aber das Konzept ist
ja auch andernorts beliebt (cygwin).