[SOLVED] QFtp - crash podczas pobierania plików

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Jaszczomb
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 01 maja 2011, 09:46
Kontakt:

[SOLVED] QFtp - crash podczas pobierania plików

Post autor: Jaszczomb »

Witam
W ramach nauki biblioteki Qt piszę prosty klient FTP, w oparciu o informacje znalezione w internecie. Na podstawie artykułów z linux.com.pl napisałem już obsługę listowania katalogów i plików na serwerze. Kolejnym krokiem jest pobieranie plików, i na tym się zatrzymałem. Bazując na referencjach Qt napisałem taki kod:

Kod: Zaznacz cały

void KlientFtp::pobieraj()
{
    if(ui->pobierz->isEnabled())
    {
    QString nazwa = ui->listaSerwer->currentItem()->text(0);
    plik = new QFile(nazwa);
    if(!plik->open(QIODevice::WriteOnly))
    {
        ui->statusBar->showMessage("Blad pobierania pliku",1000);
        ftp->abort();
        delete plik;
        return;
    }
    else
    {
    ui->statusBar->showMessage("Rozpoczynam pobieranie");
    ftp->setTransferMode(QFtp::Passive);
    ftp->get(ui->listaSerwer->currentItem()->text(0),plik);
    ui->statusBar->showMessage("zakonczono");
    plik->close();
    delete plik;
    }
    }
}
Kompiluje się on bez błędów, natomiast podczas próby pobrania pliku następuje Crash, a w folderze zbudowanej aplikacji pojawia się wybrany do pobrania plik, aczkolwiek wielkości 0 bajtów. Debugowanie wykazało, że plik jest ustawiony jako tylko do odczytu (komunikat: QIODevice::write: Read only device).
Dziwi mnie to, ponieważ linijka "if(!plik->open(QIODevice::WriteOnly))" jednoznacznie stwierdza że plik ma być otwarty w trybie zapisu.
Będę bardzo wdzięczny za pomoc.
Pozdrawiam.
Ostatnio zmieniony 22 maja 2011, 14:55 przez Jaszczomb, łącznie zmieniany 2 razy.
Jaszczomb
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 01 maja 2011, 09:46
Kontakt:

Re: QFtp - crash podczas pobierania plików

Post autor: Jaszczomb »

Sam doszedłem do rozwiązania. Problem był w zamykaniu i niszczeniu obiektu "plik" zanim transfer został zakończony.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości