Gast
#2776977
Hallo, gibt es ein Programm, das eine HTML-Datei in einen C-Quelltext (ARRAY) konvertiert? mfg Jürgen
|
Anzeige
|
Suche Konverter: HTML-Datei in C-Quelltext
Gast
#2776977
Hallo, gibt es ein Programm, das eine HTML-Datei in einen C-Quelltext (ARRAY) konvertiert? mfg Jürgen Hallo, was genau willst Du denn machen? Kannst Du nicht einfach das Html durch google: Addslashes Stripslashes Escape string jagen und dann in einen char* schreiben? Vlg Timm Ich hab mir für sowas schnell in Tool in BCB zusammengehackt. - öffne Datei (egal welcher Typ) zum Lesen - öffne Datei neu zum Schreiben - lese ein Byte - schreibe "0x" und Hex(Byte) und ", " - wiederhole bis anzahl=16 , schreibe "\r\n" - wiederhole bis dateiende - schliessen beider dateien Klammern drum, Variablenname davor, fertsch
Gast
#2777037
Für einen AVR-NET-IO Webserver habe ich eine HTML-Seite erstellt und diese soll in den Quelltext (Beispiel siehe Anhang) eingebunden werden. mfg Jürgen Jürgen schrieb: > Für einen AVR-NET-IO Webserver habe ich eine HTML-Seite erstellt und > diese soll in den Quelltext (Beispiel siehe Anhang) eingebunden werden. > Ja, ok. Schreib dir ein Tool welches den Text aufbereitet und in einer neuen Datei ablegt. Und die inkludest du dann ganz einfach
Einzig die Aufbereitung müsstest du dir halt schreiben. Aber das ist ja für einen C-Programmierer kein Hexenwerk. Im Grunde brauchst du nicht mehr tun, als vor jede Zeile ein " setzen, am Ende einer Zeile ein " setzen und ein paar Buchstaben durch andere zu ersetzen. Zb " durch \", \ durch \\, Tabulator durch \t und noch ein paar andere. Ist ein einfaches C-Programm welches diese Aufbereitung macht und eigentlich sollte jeder C-Programmierer in der Lage sein, sich in einer halben Stund ein entsprechendes Tool zu machen. Ja, manchmal macht man sich seine Werkzeuge auch selber, weils einfach schneller geht als 2 Stunden nach einem Tool zu suchen. Hat man natürlich einen entsprechenden Editor, dann kann auch der die Aufbereitung mittels Makro-Programmierung machen oder man benutzt einen Stream-Editor wie "sed" für solche Aufgaben. Je nach Lust und Laune und Tools die man hat und die man kennt. Aus
wird dann eben nach der Aufbereitung
und das ist perfekt, um als String durch den C-Compiler zu gehen. Wenn du ein System hast auf dem Python zur Verfügung steht, dann versuche das beigefügte Skript. Könnte ggfs. noch ein wenig verbessert werden. Ich habe sowas in Perl geschrieben. Das Programm konvertiert alle Dateien in einem Verzeichnis in C Arrays. Unter Windows empfehle ich Strawberry Perl, falls Du noch kein Perl installiert hast. http://stefanfrings.de/qtwebapp/QtWebApp-src.zip Darin ist es die Datei makefsdata. Du kannst auch abgucken, wie ich es in mein Makefile eingebunden habe. Das Ergebnis sieht z.B. so aus:
Erklärung dazu: Die Arrays enthalten jeweils Dateiname und Datei-Daten nacheinander. Die Strukturen enthalten das Inhaltsverzeichnis, jeweils eine Struktur pro Datei: 1) Zeiger auf die Struktur der nächste Datei 2) Zeiger auf den Dateinamen 3) Zeiger auf die Datei-Daten 4) Größe der Datei in Bytes HTTPD_FS_ROOT zeigt auf die Struktur der ersten Datei. Wenn man eine Datei mit einem bestimmten Namen zur Laufzeit suchen will, beginnt man bei der ersten Datei und hangelt sich über die Zeiger von Struktur zu Struktur. Das Ende der Kette ist durch eine 0 gekennzeichnet. Im obigen Beispiel ist die erste Datei in der Kette file_raster_png (mit dem Dateinamen "/raster.png"). Deren Struktur zeigt an, dass die nächste Datei file_404_html (mit dem Dateinamen "/404.html") ist. Deren Struktur wiederum zeigt auf nichts (0), weil es die letzte Datei in der Kette ist. PS: Falls mir jemand verraten kann, wie ich die Formatierung der Hexadezimal-Zahlen elegant einheitlich gestalten kann, so dass alle Zeilen immer genau gleich lang sind, würde ich mich freuen. Ich bin eigentlich kein Perl Spezialist, deswegen habe ich es nicht schöner hinbekommen. Hallo Stefan, ich habe das bei meinen Scripten so gelöst:
Jörg
Gast
#2777317
Es geht auch mit einer Kommandozeile:
@Joerg Dankeschön. So sind schonmal alle Hexadezimazahlen zweistelling. Ich habe auch herausgefunden, wie man die Sonderbehandlung der 0 Werte einsparen kann: printf DFILE "0x%2.2x",$byte_wert; Ist eigentluch ganz naheliegend. Nur manchmal sehen wir den Wald vor lauter Bäume nicht :-) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|