Text aus Datei vom Internet server einlesen ?



  • Hallo,
    ich bin neu (ok ganz neu 🙂

    Wie kann ich einen Text aus einer Datei, die im Internet auf einem Server liegt einlesen und in einem Dialogfeld wieder ausgeben?

    Denkt bitte daran, das ich neu bin 😉 einen Source mit .dsw file von msv c++ 6 könnte ich relativ gut bearbeiten und verstehen.

    Danke schon mal,

    Joker_X



  • Hi
    Geht eigendlich ganz leicht

    ich hab folgende Funktion in der FAQ gefunden:

    CString getHtmlSource(CString url)
    {      
       CString somecode, s;      
       CInternetSession session;
       CInternetFile* file = NULL;
    
       try
       {      
          file = (CInternetFile*) session.OpenURL(url); 
       }
       catch (CInternetException* m_pException)
       {      
          file = NULL; 
          m_pException->Delete();
       }
    
       if(file)
       {      
          while (file->ReadString(somecode) != NULL) 
          {
             s = s + somecode;
          }
       }
    
       file->Close();
       return s;
    }
    

    Diese Funktion beschafft eigendlich den Quellcode einer HTML Datei, du kannst sie aber trotzdem verwenden :p

    Beispiel:

    CString Inhalt_der_Textdatei;
    Inhalt_der_Textdatei = getHtmlSource("http://members.tripod.de/deinbenutzername/deinetextdatei.txt");
    

    Ich hoffe das hilft dir.

    Grüße Raphael

    [ Dieser Beitrag wurde am 04.07.2003 um 19:30 Uhr von Rapha editiert. ]



  • Danke.

    Aber wie kann ich das ganze in einem Dialogfeld wieder geben?
    Der Text soll dann da stehen.
    Außerdem weiß ich nicht, wie ich die funktion einbinden soll.



  • Ok,
    ich erklärs dir Schritt für Schritt
    Ich nehm mal an du hast Visual C++
    Geh auf Datei->Neu, stell sicher, dass oben im Registerbereich "Projekte" gewählt ist. Wähl in der Liste "MFC-Anwendungs-Assistent (exe)", gib rechts bei "Projektname" "Test" oder irgendwas anderes 🙂 ein und klick auf "OK".
    Wähl im nächsten Schritt "Dialogfeldbasierend" und drück auf "fertigstellen" (sonst wird der text zu lange). Bestätige das Informationsfenster mit OK.
    So, jetzt siehst du einen Text "ZU ERLEDIGEN: Dialogfeld-Steuerelemente hier plazieren.". Lösche diesen, indem du ihn markierst (wenn dus nicht schon gemacht hast) und drücke Entf.
    Irgendwo müsste ein Fenster "Steuerelemente" rumschwirren. Wähle dort "Eingabefeld" und ziehe ein groß genuges Eingabefeld auf das Fenster im Ressourceneditor. Damit du dieses Eingabefeld "ansprechen" kannst, musst du ihm eine ID geben. Also klick auf das markierte Eingabefeld rechts und wähle Eigenschaften. Im Register Allgemein steht id: trage dort IDC_ANZEIGE ein.
    Außerdem brauchst du eine Variable, über die du auf den Inhalt des Steuerelements zugreifen kannst (ok geht auch anders, aber so ists leichter).
    also halt STRG gedrückt und klick mit der linken Maustaste doppelt auf das Steuerelement. Stell im darauf erscheindenden Fenster folgende Dinge ein:
    Name der Membervariable: m_Anzeige
    Kategorie: Wert
    Variablentyp: CString
    Klick auf OK
    So, jetzt füg einen Button ein, der bei einem Klick den Inhalt der Textdatei aus dem Internet herunterläd:
    Wähl aus der Liste, wo du vorher auch das "Eingabefeld" gwählt hast jetzt "Schaltfläche" aus und erstelle einen Button in deinem Fenster.
    Ändere wie vorher die ID per Rechtsklick auf IDC_DATEILADEN und den Titel zum Beispiel auf "Informationen runterladen".
    Um eine Funktion zu erstellen, die aufgeruft wird, wenn du auf den Button klickst, klick ganz einfach (ohne strg) doppelt mit der linken Maustaste auf den Button. Es öffnet sich ein Fenster "Memberfunktion hinzufügen". Bestätige den Namen "OnDateiladen" mit OK.
    So, jetzt befindest du dich mitten im Quelltext.
    Stell erstmal sicher, dass die linken Hälfte des Fenster auf "Klassen" eingestellt ist (Register ist unten, nicht oben).
    In der Liste existiert ein Klasse mit Namen: CTestDlg (Test steht für den Namen, den du für dein Projekt vergeben hast). Klapp die Ansicht nach unten (klick auf das + :D).
    Füg jetzt die Funktion zum downloaden der Datei hinzu:
    Klick rechts auf die Klasse, die du vorher "Aufgeklappt" hast und wähle im Menü "Memberfunktion hinzufügen...".
    Trag folgendes ein:
    Funktionstyp: CString
    Funktionsdeklaration: getHtmlSource(CString url)
    Klick auf OK
    Du erstellst somit die Funktion jetzt als eine Methode (Funktion) von deiner Dialogklasse.
    So, du landest wieder im Quelltext.
    füg einfach den Code zwischen die { } ein:
    CString CSdfDlg::getHtmlSource(CString url)
    {
    ALSO HIER
    }
    Der Code ist der Gleiche, der Funktion aus dem FAQ, also:

    CString somecode, s;      
    CInternetSession session;
    CInternetFile* file = NULL;
    
    try
    {      
       file = (CInternetFile*) session.OpenURL(url); 
    }
    catch (CInternetException* m_pException)
    {      
       file = NULL; 
       m_pException->Delete();
    }
    
    if(file)
    {      
       while (file->ReadString(somecode) != NULL) 
       {
          s = s + somecode;
       }
    }
    
    file->Close();
    return s;
    

    So, fast fertig. Speichere am besten mal ab
    Wähle jetzt nocheinmal die OnDateiladenfunktion, die du vorher für den button erstellt hast:
    - klick wieder doppelt auf den Button
    oder
    - doppelklicke (linke Maustaste) auf den OnDateladen Eintrag unter der Klasse, die du vorher "aufgeklappt" hast
    Du Müsstest jetzt folgendes (oder ähnlich) sehen:

    void CTestDlg::OnDateiladen() 
    {
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
    }
    

    lösche den Text "// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen"
    und füg ein:

    m_Anzeige = getHtmlSource("http://www.c-plusplus.net/links.htm");
    UpdateData(FALSE);
    

    (Sorry Webadmin für den hohen Tarrific 😃 :D)
    Jetzt musst du nur noch eins machen, nämlich die Headerdatei einbinden, damit dein Compiler auch die Funktionen und Klassen für das Internet "kennt".
    Scroll ganz hoch, dort siehst du sowas:

    #include "stdafx.h"
    #include "sdf.h"
    #include "sdfDlg.h"
    

    füg einfach noch folgendes hinzu:
    #include <afxinet.h>
    also siehts dann so aus:

    #include "stdafx.h"
    #include "sdf.h"
    #include "sdfDlg.h"
    #include <afxinet.h>
    

    😉
    Jetzt noch abspeichern und dann STRG + F5 Drücken und es müsste klappen.

    Wenn du irgendwo hängengeblieben bist, sags einfach.

    Uh, der Text ist lang geworden 😃

    Grüße Rapha



  • Hey, danke 🙂

    Es hat funktioniert !

    Das du dier so viel Muehe gegeben hast, finde ich gut.

    Kann man hier user voten?

    Also wenn ich noch mal ein Problem habe, darf ich dann noch mal fragen 🙂 ?



  • Immer Doch 😃



  • Da steht aber immer nur dieses hier:

    ?????????????????????????????????????????????????????????????????

    super 🙂

    Wollte schon immer japanisch lernen *g*

    Wie muss ich das Formatieren?



  • Hast du den Link(der Parameter von getHtmlSource) geändert?
    Wenn ja, post ihn mal (wenns dir nichts ausmacht)

    Gute Nacht euch allen:D

    Greetz Raphael

    [ Dieser Beitrag wurde am 04.07.2003 um 22:54 Uhr von Rapha editiert. ]



  • Danke es geht doch 😉
    Mein Fehler.

    Nacht


Anmelden zum Antworten