Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Проблема. Огромная проблема!

Автор: Vova 17.12.2011, 17:04

В прошлый раз я тупанул =) забыл поставить режим. А вот сейчас ошибочка посерьезнее.
Т.к дебаггер не знает как выводить значение файла. Стал заниматься само дебаггингом =)
Вот что получается.
Ошибка ftp: Unkown error =)
Значенье ftp 0 ??
код такой:

#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QTextStream>
#include <QMessageBox>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(&ftp,SIGNAL(done(bool)),this,SLOT(done_void()));
    connect(ui->send,SIGNAL(clicked()),this,SLOT(send_button_on_pushed()));

}

void Widget::send_button_on_pushed()
{
     ftp.connectToHost("*********************");
     ftp.login("*****************","***************");


     QFile file(ui->name_lineedit->text()+".html");
     if
     (file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
         ftp.put(&file,ui->name_lineedit->text());
         QMessageBox::about(0,"",ftp.errorString());
         file.close();
     }
     else{
         QMessageBox::critical(0,"Ошибка","Ошибка: невозможно открыть файл, возможно, он не создан или используется в другой программе.");
     }
}
void Widget::done_void()
{
     //ftp.deleteLater(); незнаю что тут писать =)

}

Widget::~Widget()
{
    delete ui;
}

Ну собственно, файл не качается.




P.S логин и пароль на картинке, уже не пользую. =)

моя ошибка на столько глупая?

Автор: crashsp 17.12.2011, 17:26

По моему ошибка Unkown error как раз говорит что нет ошибки )).
Уберите QMessageBox::about(0,"",ftp.errorString());
есть сигнал void QFtp::dataTransferProgress ( qint64 done, qint64 total ) , соедините со своим слотом и там посмотрите передача точно не идет.

Автор: Vova 17.12.2011, 17:42

да я знаю, что нет ошибки =) в этом вся проблема. да, да, передача 0

QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "upl.stg957.ifolder.ru"

Автор: crashsp 17.12.2011, 17:54

Еще перед тем что б закрыть файл надо сначала получить сигнал void commandFinished ( int id, bool error ) там выяснять по его id какая именно команда завершена и если это конец закачки то тогда закрывать файл.

Автор: Vova 17.12.2011, 18:15

QFile::setFileName: File (gg.html) is already opened
QFile::setFileName: File (gg.html) is already opened
QFile::setFileName: File (gg.html) is already opened
QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "upl.stg957.ifolder.ru"


он 4 раза подряд вызывается???
я вас не понял =)

#include "widget.h"
#include "ui_widget.h"
#include <Qfile>
#include <QTextStream>
#include <QMessageBox>
Qfile file;
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(&ftp,SIGNAL(done(bool)),this,SLOT(done_void()));
    connect(ui->send,SIGNAL(clicked()),this,SLOT(send_button_on_pushed()));
    connect(&ftp,SIGNAL(commandFinished(int,bool)),this,SLOT(send_button_on_pushed()));

}

void Widget::send_button_on_pushed()
{
     ftp.connectToHost("upl.stg957.ifolder.ru");
     ftp.login("vovapodlesnov@gmail.com","123");
     ::::file.set::fileName(ui->name_lineedit->text()+".html");

     //Q::file ::file(ui->name_lineedit->text()+".html");
     if
     (::file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
         ftp.put(&::file,ui->name_lineedit->text());
         QMessageBox::about(0,"",ftp.errorString());
         //::file.close();
     }
     else{
         QMessageBox::critical(0,"Ошибка","Ошибка: невозможно открыть файл, возможно, он не создан или используется в другой программе.");
     }
}
void Widget::command_fineshed_void()
{
     ::file.close();
}

void Widget::done_void()
{
     //ftp.deleteLater();

}

Widget::~Widget()
{
    delete ui;
}



ой =)

#include "widget.h"
#include "ui_widget.h"
#include <Qfile>
#include <QTextStream>
#include <QMessageBox>
Qfile file;
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(&ftp,SIGNAL(done(bool)),this,SLOT(done_void()));
    connect(ui->send,SIGNAL(clicked()),this,SLOT(send_button_on_pushed()));
    connect(&ftp,SIGNAL(commandFinished(int,bool)),this,SLOT(command_fineshed_void()));

}

void Widget::send_button_on_pushed()
{
     ftp.connectToHost("upl.stg957.ifolder.ru");
     ftp.login("vovapodlesnov@gmail.com","123");
     ::::file.set::fileName(ui->name_lineedit->text()+".html");

     //Q::file ::file(ui->name_lineedit->text()+".html");
     if
     (::file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
         ftp.put(&::file,ui->name_lineedit->text());
         QMessageBox::about(0,"",ftp.errorString());
         //::file.close();
     }
     else{
         QMessageBox::critical(0,"Ошибка","Ошибка: невозможно открыть файл, возможно, он не создан или используется в другой программе.");
     }
}
void Widget::command_fineshed_void()
{
     ::file.close();
}

void Widget::done_void()
{
     //ftp.deleteLater();

}

Widget::~Widget()
{
    delete ui;
}

Автор: crashsp 17.12.2011, 18:28

Попробуйте так .

#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QTextStream>
#include <QMessageBox>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(&ftp,SIGNAL(done(bool)),this,SLOT(done_void()));
    connect(ui->send,SIGNAL(clicked()),this,SLOT(send_button_on_pushed()));
    connect(&ftp,SIGNAL(commandFinished(int,bool)),this,SLOT(slotCommandFinish(int,bool)));
}

/*соответственно этот слот сначала объявите у себя в widget.h*/
void Widget::slotCommandFinish( int id, bool error){
     if(id == QFtp::Put){
             file.close();
         QMessageBox::information(this,"Инфо","Загрузка завершена");
     }
        
}

void Widget::send_button_on_pushed()
{
     ftp.connectToHost("*********************");
     ftp.login("*****************","***************");


     file.setFileName(ui->name_lineedit->text()+".html");
    
     if(file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
         ftp.put(&file,ui->name_lineedit->text());  
     }
     else{
         QMessageBox::critical(0,"Ошибка","Ошибка: невозможно открыть файл, возможно, он не создан или используется в другой программе.");
     }
}
void Widget::done_void()
{


}

Widget::~Widget()
{
    delete ui;
}

Автор: Vova 17.12.2011, 19:05

спасибо. проблема та же =(

команда вообще не выполняется, похоже =)

Автор: crashsp 17.12.2011, 20:31

Цитата(Vova @ 17.12.2011, 19:05) *
спасибо. проблема та же =(

команда вообще не выполняется, похоже =)

Попозже скину исходник

Автор: Vova 17.12.2011, 21:17

crashsp, спасибо =)

Единственное, что радует, то что я код писать умею =) а то... тогда б получилось, что я дебил, не знающий не фига =)

Автор: crashsp 17.12.2011, 21:50

http://ubuntuone.com/6fOnOnU58cSGwXumdZLZ17

Автор: Litkevich Yuriy 18.12.2011, 9:05

Vova, думай над названием тем.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)