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



  • 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.



  • Naja Indy ist halt schon fertig(FtpDaten eintragen, verbinden und dann uploaden mit ner funktion) wärend du mit Clientsocket alles nochmal selber erfinden müsstest(man lernt mehr dadurch, fehlersuche geht schneller weil man genau weiss was passiert dauert aber länger bis das fertig ist, daher nicht unbedingt effizient 😃 aber wenn du sowas nie machst wrist du auch nie erfahren wie das ftp Protokoll funktioniert).

    Und wieso Richedit? Mach das doch so in der Art:
    generier eine Textdatei namens temp1.txt und tippe einen Text oder eine Htmldatei die ein oder mehrmals {$Name} enthält

    // Form enthält 1 Memo(Memo1) und 1 Button(Button1)
    
    bool generate_htm(char* schablone, char* output)
    {
    
      bool retval = false;
      ifstream htm_template(schablone, ios::binary);
      if(htm_template)
      {
    
        string inhalt;
    
        while(!htm_template.eof())
        {
          char zwischen;
          if(htm_template.get(zwischen))
          {
            inhalt += zwischen;
          }
        }
        htm_template.close();
        inhalt = StringReplace(inhalt.c_str(), "{$Name}", rand(), TReplaceFlags() << rfReplaceAll  << rfIgnoreCase).c_str();
    
        Form1->Memo1->Text = inhalt.c_str();// nur zum anschauen, das memo wird nicht benötigt damit der kram funzt
    
        ofstream htm_output(output, ios::binary | ios::trunc);
        if(htm_output)
        {
          htm_output.write(inhalt.c_str(), inhalt.length());
          retval = true;
        }
    
      }
      else ShowMessage("Fehler beim Öffnen der Templatedatei");
    
      return retval;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      generate_htm("temp1.htm", "output1.htm");
    }
    //---------------------------------------------------------------------------
    

    [ Dieser Beitrag wurde am 18.06.2003 um 10:50 Uhr von dreaddy editiert. ]



  • Aufjedenfall ein genialer Code, viel kürzer und effizienter als mein Newbie-Code, aber es funzt trotzdem soweit, dass er mir jetzt die HTML Datei auf Platte erstellt. :p (werd sicher mal nebenbei deinen Code analysieren, also danke noch mal, deine Schreibarbeit war net umsonst) Mein momentanes Problem ist, dass ich gar keine Indy-Komponenten bei mir installiert habe, bzw. sie nicht finden kann.. 😕 ..so ein Mist...aber warum sollte alles ohne Probleme funktionieren, ich meine, immerhin programmieren wir ja!! 😉 Kannst du mir/jemand weiter helfen?

    *tiefineurerschuldstehundmichnochmalsbedank*

    Mario A.



  • Die war eh nicht umsonst weil ich die für mich selber auch benutze. 😃
    Ich wollt dich halt nur erstmal selber bauen lassen :p .
    Und Indy Komponenten sind ab BCB 6.0 gleich mit dabei, wenn du den noch nicht hast lad sie bei http://www.indyproject.org/ runter.



  • So, nu sind die ganzen Indy Kompnenten installiert und werden ordnungsgemäß angezeigt. Leider habe ich überhaupt keine Ahnung und auch nach ewiger Suche habe ich keine wirklich guten Hinweise gefunden, um die FTP Übertragung zum laufen zu bringen. Ich habe folgenden Quelltext:

    IdFTP1->Host="www.heute-schon-spaß-gehabt.de";
    IdFTP1->User="willspass";
    IdFTP1->Password="drin";
    
    IdFTP1->Put(OpenDialog1->FileName, ExtractFileName(OpenDialog1->FileName), OpenDialog1->Execute());
    

    Als Fehlermeldung erhalte ich:
    Im Projekt ist eine Exception der Klasse EIdConnClosedGracefully aufgetreten. Meldung: Die Verbindung wurde erfolgreich geschlossen. Proßez wurde angehalten....

    Muß ich bei diesem IndyFTP noch nen Pfad angeben oder irgendwas beachten? Ich will übrigens nur diese eine (HTML-)Datei übertragen.



  • Ich fürchte da bin ich dann auch am Ende :d
    hab ehrlichgesagt noch nie mit Indy gearbeitet.
    Beim BCB ist aber ein Beispiel bei das eine Datei auf einen FTP uploaded, das kannich dir gern schicken wenn du mir deine mail verrätst.
    Ansonsten kann ich dir beim Indy nimmer weiterhelfen 😉 .



  • ok, nivada@firemail.de

    (jeder, der sich für diesen thread interessiert hat glück, werde, wenn alles klappt mit meinem prog, die lösung des problems hier weiterhin posten => bin ich nicht nett? 🕶

    MfG. Mario A. (aka Nivada)



  • so, wenn der proxy hier vernünftig funzt sollte die mail innerhalb der nächsten 3 minuten da sein 😛



  • Also erst mal vielen Dank, geniales Script was scheinbar genau das darstellt, was ich realisieren möchte. Ich hatte es vorher mit dem IdFTP probiert, dass schien das richtige zu sein, aber TrivialFTP sagt mir ja nu überhaupt nix. Da steht auch nirgends was von Eigenschaften á la Username und Passwort, frag ich mich wie ich da ne Datei uploaden, bzw. download soll!?

    Mario A.



  • hm.. ich seh auch grad das das Ding nicht FTP sondern TFTP ist... wusste garnet das es sowas gibt oops 😃
    Aber ein FTP Beispiel ist da net bei =[

    "Trivial FTP is an extremely lightweight and simple UDP-Based file transfer protocol that is normally used read and write files from/to a remote server. TFTP cannot list directories, and currently has no provisions for user authentication."


Anmelden zum Antworten