Funktions Problem



  • Hallo,

    Hab da noch ein Problem mit einer Funktion und zwar bekomme ich dort ne menge Fehler(Zeilenangabe stimmt nicht, wie man sehen kann, da ich den Rest weggelassen habe):

    Error E2451 window.c 154: Undefined symbol 'string' in function URLStart
    Error E2379 window.c 154: Statement missing ; in function URLStart
    Error E2188 window.c 165: Expression syntax in function URLStart
    Error E2451 window.c 165: Undefined symbol 'i' in function URLStart
    Error E2379 window.c 165: Statement missing ; in function URLStart
    Error E2134 window.c 199: Compound statement missing } in function URLStart

    void URLStart(HWND hWnd, HWND hURL, HWND hStatus, HWND hView)
    {
        char host_name[50];
    
            string files[1] = {{"index.html"}};
    
        SendMessage(hURL, WM_GETTEXT, 50, (LPARAM)(LPCSTR)host_name);
    
        hnet  = InternetOpen("Inet",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
            hhost = InternetConnect(hnet,host_name,INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
    
            if((hnet || hhost) == NULL)
            SendMessage(hStatus, WM_SETTEXT, 50, (LPARAM)(LPCSTR)"Error! Keine Verbindung");
    
            for(int i=0; i<1; i++)
            {
                if(TestFile(files[i]))
                {
                SendMessage(hView, WM_SETTEXT, 50, (LPARAM)(LPCSTR) files[i]);
            }
    
            else
            {   
                SendMessage(hView, WM_SETTEXT, 50, (LPARAM)(LPCSTR) files[i]);
        }
    
        InternetCloseHandle(hhost);
        InternetCloseHandle(hnet);
    }
    

    Danke schonmal, für jede Hilfe



  • Wenn du kein "using namespace std;" hast, dann musst du std::string verwenden, das würde erklären, warum string bei dir nicht definiert ist. Auf jeden Fall musst du <string> includieren.

    cya & Fröhliche Weihnachten



  • Hab die Funktion nun mal ein bischen umgeschrieben, kann mir dabei einer sagen wie ich es machen kann das ich mehrere Dateien überprüfen kann. Ich dachte das mit einer for Schleife zu lösen, weiss aber ncith genau wie ich die da einbauen kann. Kann mir einer helfen?.

    void URLStart(HWND hWnd, HWND hURL, HWND hStatus, HWND hView)
    {
        char host_name[50];
        HINTERNET hnet, hhost, hdata;
        DWORD status = 0;
            DWORD size = sizeof(DWORD);
            BOOL result = FALSE;
    
        SendMessage(hURL, WM_GETTEXT, 50, (LPARAM)(LPCSTR)host_name); // Die URL aus der EditBox Lesen
    
        hnet  = InternetOpen("Inet",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
            hhost = InternetConnect(hnet,host_name,INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
    
        /*if((hnet || hhost) == NULL)
            SendMessage(hStatus, WM_SETTEXT, 50, (LPARAM)(LPCSTR)"Error, kann nicht Verbinden!");*/
    
        hdata = HttpOpenRequest(hhost,"HEAD","forumstart.htm",NULL,NULL,NULL,0,0);  
    
        if(hdata == NULL)
                result = FALSE;
    
        HttpSendRequest(hdata,NULL,0,0,0);
    
        if(HttpQueryInfo(hdata,HTTP_QUERY_STATUS_CODE,&status,&size,0))
                if(status == 3158066)
                    result = TRUE;
    
        if(result == TRUE)
            SendMessage(hView, WM_SETTEXT, 50, (LPARAM)(LPCSTR)"Datei vorhanden!");
        else
            SendMessage(hView, WM_SETTEXT, 50, (LPARAM)(LPCSTR)"Datei nicht vorhanden!");
    
        InternetCloseHandle(hdata);
        InternetCloseHandle(hhost);
            InternetCloseHandle(hnet);
    }
    


  • Hmm... du könntest bei dem zweiten Parameter nicht den Handle zum URL-Fenster nehmen, sondern gleich die URL, dann wäre das einfacher.

    cya



  • Ja gut aber, wie soll ich das machen wenn ich z.B. 3 Dateien habe (index.asp, home.asp, start.asp) und die sollen alle geprüft werden, ob sie auf dem angegebenen server vorhanden sind. Kann mir da einer mal ein Beispiel angeben, wenns möglich wäre?



  • Wenn du jetzt eine Funktion hast, die die Datei überprüft, z.B. TestFile(LPCTSTR file) dann kannst du das so machen:

    string files[3];
    files[0] = "index.htm";
    files[1] = "forumstart.htm";
    files[2] = "xyz.htm";
    
    for(int i = 0;i < 3;i++)
    {
       TestFile(files[i].c_str());
    }
    

    cya


Anmelden zum Antworten