[C/C++] Kontakt mit Server aufnehmen, Daten aus Textdatei runterladen & in memo ausgeben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von StonedClown, 1. Dezember 2006 .

  1. 1. Dezember 2006
    Kontakt mit Server aufnehmen, Daten aus Textdatei runterladen & in memo ausgeben

    Hallo, ich arbeite derzeit mit dem Borland C++ Builder 6 an nem ziemlich simplen Proxy Leecher, der nichts weiter machen soll als sich mit meinem Server zu verbinden, den Text aus einer Txt datei am server rausholen und dann im Memo ausgeben.

    Nun ja, nun hab ich es soweit das ich mit dem Verbinden anfangen könnte, laut C++ Builder 6 Hilfe brauch ich für File Transfer die Datei idftp.pas (oder besser gesagt ich muss Sie includen)

    Nun ja, die lässt sich auch ziemlich sorgenfrei includen, aber wenn ich dann auf Compilen gehe spuckt er mir ziemlich viele fehlermeldungen aus, da C++ Builder 6 denkt das es ein Aktives objekt ist obwohl ich es doch nur so include wie die Anderen Header dateien...

    Nun ja, könntet Ihr mir deswegen nen anderen weg zeigen wie ich mit dem BC++ Builder 6.0 das oben genannte konzept realisieren kann?

    Mfg
     
  2. 1. Dezember 2006
    AW: Kontakt mit Server aufnehmen, Daten aus Textdatei runterladen & in memo ausgeben

    Soweit ich weiß ist .pas ned für C++, sondern für Pascal/Delphi.
    Schau dir mal Winsock an...Klick#

    mfg r90
     
  3. 1. Dezember 2006
    AW: Kontakt mit Server aufnehmen, Daten aus Textdatei runterladen & in memo ausgeben

    hab noch nen code auf der blatte rumliegen. wart ich such ihn mal raus....



    da hab ihn gefunden:
    Code:
    bool SetUrl (char* pcUrl)
    {
     // wininet.h und wininet.lib müssen eingebunden bzw. gelinkt sein
     HINTERNET hInternet = InternetOpen("Microsoft Internet Explorer",
     INTERNET_OPEN_TYPE_PRECONFIG,
     0,0,0);
     if(!hInternet) 
     {
     MessageBox(NULL, "Fehler beim anfordern des Handle!","Fehler",MB_OK);
     return 1;
     }
    
     // URL öffnen
     HINTERNET hUrl = InternetOpenUrl(hInternet, pcUrl,
     0, 0, INTERNET_FLAG_RELOAD, 0);
     if(!hUrl)
     {
     CloseHandle(hInternet);
     MessageBox(NULL, "Fehler beim öffnen der Url!","Error", MB_OK);
     return 1;
     }
    
     DWORD dwNumByrsRead;
     char text[5000] = "";
    
     do
     {
     InternetReadFile(hUrl, text, 4999, &dwNumByrsRead);
     }while(dwNumByrsRead);
    
     MessageBox(NULL, text, "Text", MB_OK);
    
     // Alles schließen 
     CloseHandle(hInternet);
     CloseHandle(hUrl);
    
     return 0;
    }
    
     
  4. 1. Dezember 2006
    AW: Kontakt mit Server aufnehmen, Daten aus Textdatei runterladen & in memo ausgeben

    such mal in der Hilfe nach "CppWebBrowser". Damit sollte das 100 %tig gehen. Leider weiß ich nicht genau wie, aber das musst du dann rausfinden.

    Ungefähr so sollte es aussehen:

    Code:
    WideString url="[U]http://www.DEINE SEITE .De[/U]"; 
    CppWebBrowser1->Navigate(url,0,0,0,0); 
     
    [I]//#################################[/I] 
    IHTMLDocument2 *HTMLDoc = NULL; 
    [B]if[/B](SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, 
     (LPVOID*)&HTMLDoc))) 
    { 
     IHTMLElementCollection *pAll = NULL; 
     [B]if[/B](SUCCEEDED(HTMLDoc->get_all(&pAll))) 
     { 
     TVariant name = "[U]filecontent[/U]";[I]// hier kommt der name des Feldes hin (siehr HTML source)[/I] 
     IDispatch *pDisp = NULL; 
     TVariant index=0; 
     [B]if[/B](SUCCEEDED(pAll->item(name, index, &pDisp))) 
     { 
     [B]if[/B](pDisp) 
     { 
     IHTMLInputElement *pInput = NULL; [I]// mshtml.h[/I] 
     pDisp->QueryInterface(IID_IHTMLInputElement, (LPVOID*)&pInput); 
     pDisp->Release(); 
     [B]if[/B](pInput) 
     { 
     WideString mybuffer; 
     pInput->put_value (WideString("[U]Test123[/U]")); [I]//hier der String, der zu schreiben ist.[/I] 
     } 
     pInput->Release(); 
     } 
     } 
     } 
     pAll->Release(); 
    } 
    HTMLDoc->Release(); 
    }
    Das ist dafür da, um einen string in ein fenster zu kopieren. Jetzt musst du das nurnoch umschreiben.
     
  5. 1. Dezember 2006
    AW: Kontakt mit Server aufnehmen, Daten aus Textdatei runterladen & in memo ausgeben

    also kommt drauf an mit welchem Protokoll du das laden möchtest.

    in den header includen:
    #include <IdBaseComponent.hpp>
    #include <IdComponent.hpp>
    #include <IdHTTP.hpp>
    #include <IdFTP.hpp>
    #include <IdTCPClient.hpp>
    #include <IdTCPConnection.hpp>
    (oder du legst eine Indy-Komponente auf dein Formular, dann includet er das automatisch)

    HTTP:
    Code:
    TMemoryStream *ms = new TMemoryStream();
    TIdHTTP *HTTP = new TIdHTTP(NULL);
    HTTP->Get("http://www.URL.com/deinedatei.txt",ms);
    ms->Position=0; // ganz wichtig!!! sonst schreibt er nichts in die StringList
    TStringList* sl = new TStringList();
    sl->LoadFromStream(ms);
    delete ms;
    Memo1->Text=sl->Text;
    delete sl;
    FTP:
    Code:
    TMemoryStream *ms = new TMemoryStream();
    TIdHTTP *FTP = new TIdFTP(NULL);
    IdFTP1->Host="192.168.0.1"; // oder DNS
    FTP->Connect();
    FTP->ChangeDir("/deine/ordner/hier/");
    FTP->Get("deinedatei.txt",ms);
    FTP->Disconnect();
    ms->Position=0; // ganz wichtig!!! sonst schreibt er nichts in die StringList
    TStringList* sl = new TStringList();
    sl->LoadFromStream(ms);
    delete ms;
    Memo1->Text=sl->Text;
    delete sl;
    @r90: der Borland C++Builder wurde mit Delphi programmiert, er kann Delphi-Quelltext und C++Quelltext compilieren. Ebenso ist es möglich Komponenten im .pas-Format zu installieren, sofoern diese kompatibel sind.
     
  6. 2. Dezember 2006
    AW: Kontakt mit Server aufnehmen, Daten aus Textdatei runterladen & in memo ausgeben

    So wie KingKaos das beschrieben hat (die FTP-Möglichkeit) hab ichs auch mal gemacht. Das hat wunderbar funktioniert, weil Borland eben schon ein tolles Objekt dafür hat: Du findest es unter FastNet --> NMFTP. Wenn Du willst, kann ich Dir mal ein Beispiel schicken...
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.