FTP was ist hier falsch?



  • Hallo leute

    Hab mal wieder ein prob. Ich habe mir ne funktion gebaut die die version einer anwendung auf der lokalen platte mit einem update das auf einem FTP liegt vergleichen soll. jetzt das prob wenn ich in der anwendung auf prüfen klicke wird die verbindung aufgebaut doch kommt dann die messagebox "die verbindung konnte nicht hergestellt werden" doch is eine verbindung hergestellt worden. ich abe das mal auf meinem FTP getestet wo ich auch sehe ob da einer war und es ist 100%ig ne verbindung aufgebaut worden und auch der login ging super. was soll das sein?

    void CUpdateDlg::OnStart() 
    {
        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
       UpdateData(true); 
       m_Updated  = ""; 
       m_Release  = ""; 
       m_FileSize = ""; 
       m_Duration = ""; 
       char     updated_version[50]  = ""; 
       char     updated_release[50]  = ""; 
       char     updated_filesize[50] = ""; 
       char     updated_duration[50] = ""; 
       GetDlgItem(IDC_START)->EnableWindow(false);  
       UpdateData(false); 
    
       CInternetSession Session("Update-Session"); 
       CFtpConnection*  FTP; 
    
       FTP = Session.GetFtpConnection("die ip", "user", "pass", NULL, false);
    
       CString strPath = GetCommandLine();// Pfad + Name der Exe holen
       int pos = strPath.ReverseFind( '\\'); // letztes '\' finden
       strPath = strPath.Mid(1, pos-1); // Name der Exe abtrennen, so dass nur noch der Pfad übrig bleibt
       CString strStatusPath;
       strStatusPath.Format("%s\\data\\status.txt", strPath);
    
       if (!FTP->GetFile("status.txt", strStatusPath, true, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 1)) //in der status.txt
       //stehen dann die Infos über die aktuelle Version; C:\status.txt ist nur temporär 
       { 
          MessageBox("Die Verbindung konnte nicht hergestellt werden.\n\nStellen Sie sicher, dass Sie über eine "
          "aktive Internet-Verbindung verfügen\nund / oder versuchen Sie es später noch einmal.", "Fehler", MB_ICONSTOP); 
          delete FTP; 
          Session.Close(); 
       } 
       else 
       { 
          ifstream file; 
    
          file.open(strStatusPath, ios_base::in); 
    
          file.getline(updated_version,  50); //aktuelleste verfügbare Version 
          file.getline(updated_release,  50); //Release-Date 
          file.getline(updated_filesize, 50);  //Dateigröße 
          file.getline(updated_duration, 50); //Dauer für Download bei 56K Modem 
    
          file.close(); 
    
          m_Updated  = updated_version; //Daten anzeigen (in statics) 
          m_Release  = updated_release; 
          m_FileSize = updated_filesize; 
          m_Duration = updated_duration; 
          UpdateData(false); 
    
          if(strcmp(current_version, updated_version) == 0) //aktuelle Version, kein Update nötig 
          { 
             MessageBox("Sie nutzen die aktuellste Version von FCp1, ein Update ist \n\n       N I C H T   N O T W E N D I G.\n",
             "Vorgang beendet", MB_ICONINFORMATION); 
             GetDlgItem(IDC_START)->EnableWindow(true); 
          } 
          else //Update empfehlenswert 
          { 
             MessageBox("Es liegt eine aktualisierte Version von FCp1 vor. Ein Update ist \n\n       E M P F E H L E N S W E R T.",
             "Vorgang beendet", MB_ICONINFORMATION); 
             GetDlgItem(IDC_START)->EnableWindow(true); 
          } 
          } 
    
       //CFile cfile; //Datei löschen 
    
       //cfile.Remove(strStatusPath); //Datei löschen
    
    }
    

    EDIT:
    Code umgebrochen
    -dEUs

    [ Dieser Beitrag wurde am 01.11.2002 um 00:25 Uhr von dEUs editiert. ]



  • Wie wärs wenn du erst mal nur den Code Teil Postest um den es eigentlich geht ?

    Devil



  • Mmh, ich weiß nicht woran dein Problem liegt, aber was sagt den GetLastError dazu ??



  • @devil81
    das is der teil des codes um den es geht.

    @Headhunter

    sorry ich verstehe jetzt erlich gesagt nich ganz was du damit meinst (GetLastError)?!

    MfG Nico



  • Existiert die status.txt in dem verzeichnis auf deiner Platte schon?
    Teste mal aus, was passiert, wenn du Parameter 3 von GetFile auf false änderst.

    bFailIfExists

    Indicates whether the file name may already be used by an existing file. If the local file name already exists, and this parameter is TRUE, GetFile fails. Otherwise, GetFile will erase the existing copy of the file.



  • Sach mal, Nikolaus, das mit dem

    "...Ich habe mir ne funktion gebaut..."

    ist wohl nicht ganz die Wahrheit, gell? Der Quellcode kommt mit irgendwie so bekannt vor... Ist aber net so schlimm, ich hab mir eh einen besseren gebaut. Mit Statusanzeige, Fortschrittsbalken und Abbruch-Möglichkeit. Kann ihn dir ja schicken, wenn du willst. Oder soll ich ihn posten (seeehr lang!)?

    Aber egal. Ich würd erst mal gucken, ob die "status.txt" auch wirklich genau in diesem Verzeichnis liegt. Vielleicht musst du ja noch einen Unterordner angeben. Und wenn das net geht, versuch mal den vollständigen Pfad. Also sowas wie "ftp://www.deine-hp.de/ordner/status.txt".

    MP



  • GetLastError liefert erweiterte Informationen zu vorher passierten Fehlern.
    Die MSDN erwähnt diese Funktion ebenfalls.


Anmelden zum Antworten