Vielen Dank für Deine Antwort!
Die Ursache des Problems ist aber, daß das QByteArray nicht mehr in mainwidget.cpp gelangt. Alles andere kann ich leicht korrigieren.main.cpp
Code: Alles auswählen
int main(int argc, char *argv[])
{
QApplication a( argc, argv );
char separator, step='d',tags;
QString symbol="AAPL";
int startDay=20,startMonth=6,startYear=2014,endDay=31, endMonth=12,endYear=2014,sM,eM;
sM=startMonth-1;
eM=endMonth-1;
QUrl histUrl(QString("http://ichart.finance.yahoo.com/table.csv?s=%1&a=%2&b=%3&c=%4&d=%5&e=%6&f=%7&g=step&y=0&ignore=.cvs").arg(symbol).arg(sM).arg(startDay).arg(startYear).arg(eM).arg(endDay).arg(endYear),QUrl::TolerantMode);
FileDownloader demo(histUrl);
QByteArray B;
demo.trans(B);
qDebug("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
qDebug(B);
mainWidget w;
QObject::connect(&demo,SIGNAL(DataA(const QByteArray&)),&w,
SLOT(Receiver(const QByteArray &)));
QString result;
w.helper(result);
qDebug(qPrintable(result));
w.show();
return a.exec();
}
habe ich ein wenig verändert ebenso wie mainwidget.cpp
Code: Alles auswählen
mainWidget::mainWidget()
{
setWindowTitle ( "paintEvent - Demo");
resize( 1000, 400 );
}
void mainWidget::paintEvent ( QPaintEvent * event ) {
QPainter painter(this);
painter.begin( this );
painter.setPen( QPen(Qt::blue, 2) );
painter.drawLine(0,90,110,90);
painter.setPen( QPen(Qt::green, 2) );
int u,x1,ku,ku1,Vo,Vo1;
for(int i=1;i<Vect;i++)
{ u=i*2;
x1=2+2*i;
ku=CloseAdj[i];
ku1=CloseAdj[i+1];
painter.drawLine(u,ku,x1,ku1);
}
painter.setPen( QPen(Qt::red, 2) );
for(int i=1;i<Vect;i++)
{ u=i*2;
x1=2+2*i;
Vo=Volume[i]/1000000;
Vo1=Volume[i+1]/1000000;
painter.drawLine(u,Vo,x1,Vo1);
}
painter.setPen(
QPen(Qt::black, 5, Qt::DotLine, Qt::RoundCap));
painter.drawRect( Koordinate,40,120,150 );
}
void mainWidget::Receiver(const QByteArray &QBA){
qDebug(A);
groesseA=A.size()-10;
if(groesseA>40){
int j=0;
while(A[j]!='2')
{j++;
}
QVector<QString> days;
QVector<float> CloseAdj;
QVector<int> Volume;
for(int i=j;i<7100;i++)
{QString day =" ";
QString volume = " ";
QString CloseAd =" ";
qint32 volume_=0;
float Close=0;
for (int k=0;k<10;k++)
{day+=A[i+k];
}
i+=9;
while(A[i]!=',')
{//qDebug(" Problem bis Komma ");
i++;
}
while(A[i+1]!=',')
{i++;}
while(A[i+2]!=',')
{i++;}
while(A[i+3]!=',')
{i++;}
while(A[i+4]!=',')
{i++;}
while(A[i+5]!=',')
{volume+=A[i+5];
i++;
}
while(((A[i+6]>='0' && A[i+6]<='9') || A[i+6]== '.')&& !(A[i+6]=='2' && A[i+7]=='0' && A[i+8]<='1' && A[i+9]<='5'))
{CloseAd+=A[i+6];
i++;
}
i+=6;
Close=CloseAd.toFloat();
days.append(day);
CloseAdj.append(Close);
volume_=volume.toInt();
Volume.append(volume_);
}
int Vect=Volume.size();
}
Koordinate=160;
return;
}
void mainWidget::helper(QString &result){
result="Hallo";
}
und filedownloader.cpp
Code: Alles auswählen
FileDownloader::FileDownloader(const QUrl &KUrl ) : kUrl(KUrl)
{
connect(&m_WebCtrl, SIGNAL(finished(QNetworkReply*)),
SLOT(fileDownloaded(QNetworkReply*)));
QNetworkRequest request(kUrl);
m_WebCtrl.get(request);
}
FileDownloader::~FileDownloader()
{
}
void FileDownloader::fileDownloaded(QNetworkReply* pReply)
{
m_DownloadedData = pReply->readAll();
pReply->deleteLater();
emit downloaded();
emit DataA(m_DownloadedData);
qDebug("aaaaaaaaaaaaaaaaaaaaaaaaaa");
//qDebug(m_DownloadedData);
int j=0;
while(m_DownloadedData[j]!='2')
{j++;
}
QVector<QString> days;
QVector<float> CloseAdj;
QVector<int> Volume;
for(int i=j;i<7100;i++)
{QString day =" ";
QString volume = " ";
QString CloseAd =" ";
qint32 volume_=0;
float Close=0;
for (int k=0;k<10;k++)
{day+=m_DownloadedData[i+k];
}
i+=9;
while(m_DownloadedData[i]!=',')
{//qDebug(" Problem bis Komma ");
i++;
}
while(m_DownloadedData[i+1]!=',')
{i++;}
while(m_DownloadedData[i+2]!=',')
{i++;}
while(m_DownloadedData[i+3]!=',')
{i++;}
while(m_DownloadedData[i+4]!=',')
{i++;}
while(m_DownloadedData[i+5]!=',')
{volume+=m_DownloadedData[i+5];
i++;
}
while(((m_DownloadedData[i+6]>='0' && m_DownloadedData[i+6]<='9') || m_DownloadedData[i+6]== '.')&& !(m_DownloadedData[i+6]=='2' && m_DownloadedData[i+7]=='0' && m_DownloadedData[i+8]<='1' && m_DownloadedData[i+9]<='5'))
{CloseAd+=m_DownloadedData[i+6];
i++;
}
i+=6;
Close=CloseAd.toFloat();
days.append(day);
CloseAdj.append(Close);
volume_=volume.toInt();
Volume.append(volume_);
}
int Groesse=Volume.size();
std::cout<<" Groesse="<<Groesse<<std::endl;
for(int l=0;l<10;l++)
{QString tag=days[l];
qDebug(qPrintable(tag));
}
return ;
}
void FileDownloader::trans(QByteArray &B){
B.append(m_DownloadedData);
return;
}
Das Programm stürzt zwar nicht mehr ab, aber man sieht, daß das QByteArray nicht in mainwidget.cpp gelangt. Daran hapert es.