Problem mit WinApi FTP Funktion



  • machs lieber mit dem A, is besser. bei belli knallts trotzdem noch in InternetOpen^^



  • Sorry, es muß natürlich:

    TCHAR dat1[] = TEXT("c:\\dateiname");
    TCHAR dat2[] = TEXT("//dateiname");

    heißen.



  • Jochen Kalmbach schrieb:

    Kannst Du Deine Frage auch so formulieren, dass man es versteht?

    Sorry, ich merke grad selber... Also...

    Nehmen wir an ich habe einen C++ String. Der C++ String hat den Namen "Dateiname". Dateiname ist initialisiert mit "C:\\Users". Dann habe ich eine WinApi Funktion, die als 2. und 3. Argument jeweils den WERT eines Strings erwartet:

    Funktioniert:

    FtpPutFile(hConnection, "C:\\dateiname", "//dateiname",
                      FTP_TRANSFER_TYPE_BINARY, 0);
    

    Funktioniert nicht:

    FtpPutFile(hConnection, Dateiname, "//dateiname",
                      FTP_TRANSFER_TYPE_BINARY, 0);
    

    Ich möchte den INHALT des Strings "Dateiname" als Argumente an die Funktion übergeben. Wie?
    ------------------------------------------------------------------------------

    Belli schrieb:

    Öhhhh, Du kannst ohne weiteres so etwas machen:

    void upload(char *server, char *account, char *passwort)
    {
    
    TCHAR dat1[] = "c:\\dateiname";
    TCHAR dat2[] = "//dateiname";
    
    [...]
    
        FtpPutFile(hConnection, dat1, dat2,
                      FTP_TRANSFER_TYPE_BINARY, 0);
    
    [...]
    
    }
    

    ... falls Du das überhaupt gemeint hast ...

    Wie konvertiere ich einen C++ String in eine WinApi TCHAR?



  • Mit C++ String meinst du wohl std::string. Dann guck dir mal die Methode c_str an...



  • _matze schrieb:

    Mit C++ String meinst du wohl std::string. Dann guck dir mal die Methode c_str an...

    Das macht daraus eine C-Char, richtig?

    Funktioniert das dann auch mit WinApi-Zeichenketten?



  • skullyan schrieb:

    Funktioniert das dann auch mit WinApi-Zeichenketten?

    Was sind WinAPI-Zeichenketten??

    Das funktioniert mit allen Funktionen, die halt einen C-String (char*) erwarten, was bei den meisten WinAPI-Funktionen der Fall ist.



  • _matze schrieb:

    skullyan schrieb:

    Funktioniert das dann auch mit WinApi-Zeichenketten?

    Was sind WinAPI-Zeichenketten??

    Das funktioniert mit allen Funktionen, die halt einen C-String (char*) erwarten, was bei den meisten WinAPI-Funktionen der Fall ist.

    Ich dachte so nennt man die TCHAR's. Ich werde es probieren, sobald ich zuhause bin! Danke für den Vorschlag.



  • Habe versucht, std::string mittels c_str() zu konvertieren. Dabei kam das raus:

    Deklaration der Funktion:

    void upload(char *newname);
    

    Funktion in main():

    std::string newname;
    
    // [...]
    
    upload(newname.c_str());
    

    WinApi Funktion:

    void upload(char *server, char *account, char *passwort, char *newname)
    {
        HINTERNET hOpen, hConnection;
    
        hOpen = InternetOpen("FTP Upload", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    
        hConnection = InternetConnect(hOpen, server, INTERNET_DEFAULT_FTP_PORT,
                                         account, passwort, INTERNET_SERVICE_FTP, 0, 0);
    
        FtpPutFile(hConnection, newname, "//Dateiname",
                      FTP_TRANSFER_TYPE_BINARY, 0);
    
        InternetCloseHandle(hConnection);
        InternetCloseHandle(hOpen);
    }
    

    DER FEHLER:

    error C2664: 'upload': Konvertierung des Parameters 4 von 'const char *' in 'char *' nicht möglich
    Durch die Konvertierung gehen Qualifizierer verloren
    


  • jo einmal hirn anschalten und nochmal versuchen.



  • skullyan schrieb:

    [/cpp]

    WinApi Funktion:

    [cpp]void upload(const char *server, const char *account, const char *passwort, const char *newname)


Anmelden zum Antworten