Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Konstruktor

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.02.2009, 12:21 Uhr
wulfgang



Hallo,ich versuche einen Ftp-Clienten zu schreiben.
Das Problem: Wenn ich in delete_textfile den Konstruktor von Connect nicht ausführe, bekomme ich die Meldung dass das File nicht gefunden wurde, obwohl ich den Konstruktor von Connect in der main aufrufe. Führe ich erst delete_textfile und dann transfer_textfile aus funktioniert es. Wieso aber?

Connect.h

Code:
class Connect : public read_serverlist
{
public:
    Connect(void);
    static CFtpConnection * Connect::getLastConnection();
    static CFtpConnection *connection_pointer;
    void give_connection(void);
public:
    ~Connect(void);
};


Connect.cpp


Code:
CFtpConnection* Connect::connection_pointer=NULL;
CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY ,
                              (_T( "proxy")), NULL, 0);  
    
Connect::Connect(void)
{
    
    //Objekt session wird erzeugt

    //Zeiger auf CFtpConnection
    CFtpConnection *connection;
    //Objekt der Klasse read_serverlist wird erzeugt
    read_serverlist LeseListe;CFtpConnection *
                     if(connection = session.GetFtpConnection(pstrServer, LeseListe.servername, LeseListe.password, port, bPassive))
            {
            cout << "Verbindung wurde aufgebaut\n";    
            connection_pointer=connection;
            }
    
    }
Connect::getLastConnection()
{
    return connection_pointer;
}


delete_transfer cpp

Code:
delete_textfile::delete_textfile(void)
{        
            Connect();
            CFtpConnection* connection_pointer;
            connection_pointer=Connect::getLastConnection();
            
            //Objekt der Klasse read_serverlist wird erzeugt
            read_serverlist LeseListe;
            //Textdatei wird gelöscht
            BOOL bWorking = connection_pointer->Remove
            (LeseListe.source_txt);
            if (bWorking)
                {
                    cout << "Datei ist gelöscht worden";
                }

            else
                {
                    cout << GetLastError();
                }




}


transfer_textfile


Code:
transfer_textfile::transfer_textfile(void)
{    
    
    
    CFtpConnection* connection_pointer;
    
        read_serverlist LeseListe;

    
    connection_pointer=Connect::getLastConnection();
    CFtpFileFind finder(connection_pointer);
    try
    {
        //Verzeichnis wird gewechselt
        if(connection_pointer->SetCurrentDirectory(_T("automatic/get_bu")))                                
        {
            cout<<"Verzeichnis wurde mit Erfolg! gewechselt\n";
            
            //Datei wird gesucht
            BOOL bWorking = finder.FindFile(_T("bu.txt"));
            if(bWorking)
                {
                    //Datei wird vom  Server auf lokale Festplatte transferriert
                    BOOL bGot = connection_pointer->GetFile(_T("bu.txt"),LeseListe.destination_txt,FALSE);
                    if (bGot)
                    {
                        cout << "Transfer sollte erfolgt sein\n";
                    }
                    else
                    {
                        cout << GetLastError() << "\n";
                    }
                }
                        else
                {
                        

                        cout << "The File specified could not be found.!"<<GetLastError();
        }        }
                    else
        {
            DWORD dwInfo = 0;
            TCHAR puffer[250] = _T("");
            DWORD dwSize = sizeof(puffer) / sizeof(TCHAR);
            if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) )
                    {
                        cout << GetLastError();
                        cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich";
            
            else
                    {
                        wcout << puffer;
                        cout << "Aufruf InternetGetLastResponseInfo erfolgreich";
                    }

        }
    }
            
    catch(CException* error)
    {
        TCHAR szCause[1024];
        error->GetErrorMessage(szCause,1024);
        printf_s("ERROR!  %S\n", szCause);
        error->Delete();
    }

    
}


main

Code:
int _tmain(int argc, _TCHAR* argv[])
{    
    int warte;
    Connect();
    transfer_textfile();// in umgekehrter Reihenfolge funktioniert es
    delete_textfile();// in umgekehrter Reihenfolge funktioniert es
    read_textfile();
    cin >> warte;
    
    return 0;
    
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.02.2009, 12:31 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

du rufst Connect nich in transfer auf
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.02.2009, 12:54 Uhr
wulfgang



Transfer ist nicht das Problem. Ich bekomme ja den Pointer durch
Code:
connection_pointer=Connect::getLastConnection();

Connect rufe ich ja in der main auf und anschließend soll
Code:
connection_pointer=Connect::getLastConnection();
den Pointer zurückgeben. Bei delete_textfile funktioniert es aber nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: