HTML Generator in C++ (Dateien editieren, speichern und anzeigen)



  • Ich habe ein Problem. (sicherlich, sonst würd ich ja hier net posten) Es geht darum, per C++ eine Art Assisstent zu programmieren, welcher mir durch Eingabe einiger Daten in Textfelder (Grundgerüst steht schon, keine Frames sondern Tabellen) letztendlich (fertig verlinkte) Seiten erstellen soll. Kann mir nicht jemand ein Beispielprogramm zukommen lassen, was mir zur Veranschaulichung dient? Da ich selber nicht weiß, wie umfangreich das Programm wird, benötige ich jede Hilfe! Diese Seiten sollen übrigens halbautomatisch erstellt werden:

    http://193.149.56.140/leipzig/de/start.html

    Ich hoffe ihr kommt mit meinem Ausdruck klar, ist schwer sich auszudrücken, wenn man selber nicht weiß, was man eigentlich will....sorry!

    MfG. Mario



  • Und wo ist das Problem?
    Alles was du brauchst ist fstream und ein html Grundgerüst.



  • Das Problem ist, dass ich kaum Ahnung von C++ habe. Danke für den Hinweis mit fstream, werd gleich ma gucken was dat ist. Kann mir eventuell jemand kurz nen Code tippen, in dem ein Wert aus einem Textfeld (von C++) auf das HTML Gerüst übertragen und angezeigt, bzw. gespeichert wird? MfG. Mario



  • was denn für ein HTML-Gerüst?

    beispiel um den text aus nem TEdit auszulesen und in einem AnsiString einzubinden.

    AnsiString EditText = Edit1->Text;
    
    AnsiString HTMLHead = "<html><head><title>TITEL</titel></head><body>";
    AnsiString HTMLFoot = "</body></html>";
    
    AnsiString HTMLLink = "<a href=" + EditText + ">Link aus Edit1</a>";
    
    AnsiString HTMLPage = HTMLHead + HTMLLink + HTMLFoot;
    

    was rauskommt, ist ne einfache HTML-Seite die in nem AnsiString steht. den String musst du dann in einer datei als .html speichern. dafür würde ich aber nicht fstream nutzen, sondern eine TStringList oder den generierten Code in einem TMemo oder TRichEdit (als Klartext zur Kontrolle) oder in nem TCppWebBrowser (als HTML-Anzeige) und diesen dann per SaveToFile speichern.

    [ Dieser Beitrag wurde am 10.06.2003 um 13:56 Uhr von Sunday editiert. ]



  • Danke! Das sieht doch gut aus...mit HTML Gerüst meine ich folgendes: Es bestehen schon Seiten á la http://193.149.56.140/leipzig/de/start.html , es sollen nur per Generator, weitere Seiten erstellt werden können, das ist alles. Also nehme ich theoretisch den Quellcode der vorhandenen Seiten und versehe die individuellen Felder mit Variablen, welche durch die Maske in C++ an die HTML Seite übergeben werden. (ganz grob gesagt) MfG. Mario!



  • am besten liest du dir erstmal das durch http://www.cpp-home.com/loobian/tutorials/file_io/1.php

    und die Grundlage könnte so funktionieren(nicht getestet):

    #include <fstream>
    using namespace std;
    
    void htmlbauen(void)
    {
      ofstream html_datei("seite1.htm");
      html_datei << "<html><head></head><body><b>In Edit1 steht:";
      html_datei << Edit1->Text.c_str()<<"</b></body></html>";
      html_datei.close();
    }
    

    [ Dieser Beitrag wurde am 10.06.2003 um 14:05 Uhr von dreaddy editiert. ]



  • naja du kannst entweder die vorlagen-seiten hart im programm verdrahten, wie in etwa in meinem beispiel oder du hast eine externe vorlagen-datei die du einliest und in der du die zu ersetzenden felder mit eigenen "tags" versiehst, nach denen du dann suchst und dann ersetzt. am ende speicherste das ganze wieder.



  • hmpf.. doppelpost...

    [ Dieser Beitrag wurde am 10.06.2003 um 14:07 Uhr von Sunday editiert. ]



  • Vielen Dank erstmal, dreaddy & sunday... Suchen und ersetzen mit Tags? 😕 Genau die Idee hatte ich auch, der Mist ist nur, egal wie ich an die Sache rangehe, durch meine geringen Kenntnisse, werden meine Möglichkeiten gleich wieder eingeschränkt, sinnlos.... 🙄



  • Ich denke Sunday meint du baust eine ganz normale htmldatei"Schablone" mit einem html Programm deiner Wahl und setzt dann an die Stellen wo du Variablen Inhalt haben willst eine Markierung, beispielsweise {<Name>} und {<Strasse>}
    jetzt liest du diese Schablone ein, ersetzt die von dir gesetzte Markierung durch den Namen oder die Strasse und schreibst sie in eine andere Datei hinein.

    Also aus

    "Hier ist das Grab von {<Name>} sein Haus in der {<Strasse>} erbt dreaddy"
    wird nach der Umwandlung
    "Hier ist das Grab von Nivada sein Haus in der Nordstrasse erbt dreaddy"

    wenn du in Edit1 "Nivada" und in Edit2 "Nordstrasse" eingetragen hast

    hoffe das war verständlich 😛

    [ Dieser Beitrag wurde am 10.06.2003 um 15:12 Uhr von dreaddy editiert. ]



  • Schon klar..danke..ich werde es einfach mal probieren, also dann, bis eventuell morgen! ;o)



  • Wie ersetze ich Tags in einem HTML Dokument mit den Werten, welche ich in meinem Programm eingegeben habe? Auch die fetig generierte Datei abzuspeichern, macht mir so meine Gedanken...ich brauch wirklich jede kleine Hilfe! Danke, Mario!



  • Würd sagen
    -Den gesamten Inhalt der Datei in einen AnsiString speichern
    -Mal in der Hilfe unter Suchen "StrUtils" eingeben und alles was verwendbar klingt durchlesen (besonders StringReplace 🙄 ).
    -Das frisch erworbene Wissen anwenden um den AnsiString mit dem Inhalt der Schablone zu bearbeiten und danach alles wieder unter anderem Namen auf die Festplatte zurückzuschreiben.

    [ Dieser Beitrag wurde am 11.06.2003 um 15:37 Uhr von dreaddy editiert. ]



  • Klappt wunderbar, obwohl ich von den meisten Hilfedatein überhaupt nicht begeistert bin, war sie mir jedoch dieses mal recht hilfreich. Ich bedanke mich bei allen, die mitgeholfen haben....thanx!!!



  • Ich habe das jetzt probiert mit dem Ansi String, klappt soweit ganz gut. Die Frage ist nun, wie ich Strings á la

    <body bgcolor="#FFCC33" text="black">

    einlese? Da Ich sicherlich Probleme mit den Gänsefüsschen bekommen werde!?
    Wie kann ich das Problem umgehen, bzw. gibts nen Trick?

    Bitte um Antwort, danke, Mario A.



  • gibt keine Probleme, du musst nur dadrauf achten das wenn du mit denen etwas machen willst du \" verwendest



  • Vielleicht noch etwas deutlicher: solange du nur mit Variablen arbeitest (String bla = Edit1->Text;) brauchst du dir um Sonderzeichen keine Gedanken zu machen, der AnsiString erledigt das alles intern.

    Nur wenn du direkt im Quellcode Zuweisungen durchführst (String bla = "Er sagte \"Hallo!\" bevor er ging.";), dann, und nur dann musst du für die Sonderzeichen Escape-Sequencen benutzen.



  • Okay, mein Projekt nimmt seinen Lauf...das klappt jetzt schon alles wunderbar, der HTML Code wird einwandfrei generiert und in einem RichEdit Feld angezeigt. Dieser Code muß an sich nicht angezeigt werden, am liebsten wäre mir das er bei Klick auf Button in eine HTML Datei geschrieben wird. (datei muß angelegt werden) Wäre es, soweit dann alles klappt, eigentlich möglich, dass ich auf Buttonklick, den generierten Code in einer HTML-Datei speichere und diese dann, auf den Server übertrage? Welche Komponente nutze ich dazu?

    MfG. Mario A.



  • Möglich ist fast alles 😃
    Du speicherst den Kram erstmal auf der Festplatte und danach baust du dir entweder selbst mit nem ClientSocket einen Uploader oder du benutzt die Indy Komponenten.



  • Hi Dreaddy! Kannst du dir vielleicht mal mein anderes Posting ansehen:

    SaveDialog => Datei mit teilweise merkwürdigem Inhalt

    Denn bevor ich den Upload realisiere, steht mir noch dieses plötzlich aufgetretene Problem im Wege. Was ist der Unterschied zwischen Indy, bzw. ClientSocket, eventuell Vor- und Nachteile?!

    MfG. Mario A.


Anmelden zum Antworten