[gelöst] ;-) Textdatei von FTP holen und auslesen
[gelöst] ;-) Textdatei von FTP holen und auslesen
Hallo zusammen
ich habe ein kleines Problem. Ich fange gerade erst an mit QT und C++.
Jetzt habe ich mir gleich ein ehrgeiziges Ziel gesetzt.
Auf einem FTP Server liegt eine Textdatei mit Highscores Verschiedener Spiele und Spieler z.B.
Spiel 1
Martin 100
Max 80
Peter 3
Spiel 2
Peter90
Max 50
Martin 30
Nun will ich diese Datei herunterladen, auslesen und eine Statistik machen.
Nur leider habe ich keine Ahnung wie ich anfangen soll. Ist es überhaupt möglich auf diesem Weg eine Datei vom FTP zu holen? Kann mir hier jemand helfen?
Danke schonmal im Vorraus
ich habe ein kleines Problem. Ich fange gerade erst an mit QT und C++.
Jetzt habe ich mir gleich ein ehrgeiziges Ziel gesetzt.
Auf einem FTP Server liegt eine Textdatei mit Highscores Verschiedener Spiele und Spieler z.B.
Spiel 1
Martin 100
Max 80
Peter 3
Spiel 2
Peter90
Max 50
Martin 30
Nun will ich diese Datei herunterladen, auslesen und eine Statistik machen.
Nur leider habe ich keine Ahnung wie ich anfangen soll. Ist es überhaupt möglich auf diesem Weg eine Datei vom FTP zu holen? Kann mir hier jemand helfen?
Danke schonmal im Vorraus
Zuletzt geändert von aed am 30. August 2011 14:24, insgesamt 1-mal geändert.
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Textdatei von FTP holen und auslesen
Doku zum QtNetwork-Modul lesen und mindestens zwei Möglichkeiten entdecken.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Textdatei von FTP holen und auslesen
Der übliche Weg:
* Doku aufmachen (Qt Assistant)
* Dort nach Stichwort suchen, hier "FTP"
* Ergebnisse sichten, auswerten: Es gibt ein "FTP Example" hört sich gut an. Weiter unter gibts die Klasse "QFtp"
* Die Doku zu QFtp sagt "QFtp ist veraltet, besser sollte man QNetworkAccessManager
* Doku zu QNetworkAccessManager öffnen, die Beispiele lesen und daran seinen eigenen Code ausrichten.
Nur, falls du in Zukunft wieder vor einer ähnlichen Frage stehst - die Doku weiß (fast) alles.
Jetzt versuch erstmal selbständig ein wenig rum, wenn du hängst kannst du hier ja weiter fragen
* Doku aufmachen (Qt Assistant)
* Dort nach Stichwort suchen, hier "FTP"
* Ergebnisse sichten, auswerten: Es gibt ein "FTP Example" hört sich gut an. Weiter unter gibts die Klasse "QFtp"
* Die Doku zu QFtp sagt "QFtp ist veraltet, besser sollte man QNetworkAccessManager
* Doku zu QNetworkAccessManager öffnen, die Beispiele lesen und daran seinen eigenen Code ausrichten.
Nur, falls du in Zukunft wieder vor einer ähnlichen Frage stehst - die Doku weiß (fast) alles.
Jetzt versuch erstmal selbständig ein wenig rum, wenn du hängst kannst du hier ja weiter fragen
Re: Textdatei von FTP holen und auslesen
Ah, ich werd mich mal schlaumachen.
Danke
Danke
Re: Textdatei von FTP holen und auslesen
Doppelpost
Zuletzt geändert von aed am 26. August 2011 11:47, insgesamt 1-mal geändert.
Re: Textdatei von FTP holen und auslesen
Hallo zusammen,
es funktioniert soweit. Textdatei wird ausgelesen.
Jedoch habe ich mim FTP noch n kleines Problem.
Ich kann connecten und das file auch runterladen, allerdings ist es immer leer.
Wo liegt hier der Fehler? Ich glaube es fehlt das done() Signal nur hab ich ka wie ich das schreiben soll.
QFile *file = new QFile( "C:\\test.txt" );
QFtp *ftp = new QFtp();
void MainWindow::getftpdatei(void)
{
ftp->connectToHost("localhost");
ftp->login("test","test");
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
//Pause? Signal?
ftp->close();
file->close();
}
ich habs mal folgendermaßen versucht:
...
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
connect( this, SIGNAL(commandFinished(int,bool)), SLOT(on_commandFinished(int,bool)));
}
void MainWindow::on_commandFinished(void)
{
ftp->close();
file->close();
}
aber das funktioniert auch nicht
es funktioniert soweit. Textdatei wird ausgelesen.
Jedoch habe ich mim FTP noch n kleines Problem.
Ich kann connecten und das file auch runterladen, allerdings ist es immer leer.
Wo liegt hier der Fehler? Ich glaube es fehlt das done() Signal nur hab ich ka wie ich das schreiben soll.
QFile *file = new QFile( "C:\\test.txt" );
QFtp *ftp = new QFtp();
void MainWindow::getftpdatei(void)
{
ftp->connectToHost("localhost");
ftp->login("test","test");
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
//Pause? Signal?
ftp->close();
file->close();
}
ich habs mal folgendermaßen versucht:
...
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
connect( this, SIGNAL(commandFinished(int,bool)), SLOT(on_commandFinished(int,bool)));
}
void MainWindow::on_commandFinished(void)
{
ftp->close();
file->close();
}
aber das funktioniert auch nicht
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Textdatei von FTP holen und auslesen
QFtp ist ansynchron. Du muss vor dem close natürlich warten bzw QFtp fertig ist. Wird ja genau in der Detailed Description beschrieben.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Textdatei von FTP holen und auslesen
Ja das hab ich auch gelesen nur ist mir nicht ganz klar wie genau ich das mach.
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Textdatei von FTP holen und auslesen
Signals und Slots verwedenen und wenn QFTp fertig meldet dann in deinem Slot die Datei schliessen bzw. alles ordentlich aufrufen.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Textdatei von FTP holen und auslesen
Jop, des hilft mir jetzt auch nicht weiter wenn ich nicht weis wie ichs umsetzen (programmieren) soll.
Funktioniert das so?
...
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
connect( this, SIGNAL(commandFinished(int,bool)), SLOT(on_commandFinished(int,bool)));
}
void MainWindow::on_commandFinished(void)
{
ftp->close();
file->close();
}
Bitte um Beispiele
Funktioniert das so?
...
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
connect( this, SIGNAL(commandFinished(int,bool)), SLOT(on_commandFinished(int,bool)));
}
void MainWindow::on_commandFinished(void)
{
ftp->close();
file->close();
}
Bitte um Beispiele
Re: Textdatei von FTP holen und auslesen
connection prinzipiell VOR einem Funktionsaufruf, der SIGNALS werfen kann (wird hier jetzt nicht wichtig sein, kann aber durchaus mal zu Problemen führen).
Dann sollte der sender schon korrekt angegeben werden.
-> Wer sendet? ftp und nicht this!
Und so etwas bekommt man mit, wenn man das Programm auf einer Konsole startet, da werden solche Warnings ausgegeben.
Dann sollte der sender schon korrekt angegeben werden.
-> Wer sendet? ftp und nicht this!
Und so etwas bekommt man mit, wenn man das Programm auf einer Konsole startet, da werden solche Warnings ausgegeben.
Re: Textdatei von FTP holen und auslesen
Also dann quasi so oder?
QFile *file = new QFile( "C:\\test.txt" );
QFtp *ftp = new QFtp();
void MainWindow::on_commandFinished(void)
{
ftp->close();
file->close();
}
void MainWindow::getftpdatei(void)
{
ftp->connectToHost("localhost");
ftp->login("test","test");
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
connect( ftp, SIGNAL(commandFinished(int,bool)), SLOT(on_commandFinished(int,bool)));
}
Aber das funktioniert leider nicht. Die Datei ist weiterhin leer.
QFile *file = new QFile( "C:\\test.txt" );
QFtp *ftp = new QFtp();
void MainWindow::on_commandFinished(void)
{
ftp->close();
file->close();
}
void MainWindow::getftpdatei(void)
{
ftp->connectToHost("localhost");
ftp->login("test","test");
file->open(QIODevice::ReadWrite);
ftp->get("test.txt",file);
connect( ftp, SIGNAL(commandFinished(int,bool)), SLOT(on_commandFinished(int,bool)));
}
Aber das funktioniert leider nicht. Die Datei ist weiterhin leer.
Re: Textdatei von FTP holen und auslesen
Dann sollte auch noch die beim connect angegebene Signatur des SLOTS mit der der tatsächlich implementierten Funktion übereinstimmen (sowas wird auch auf die Konsole geprintet).
TIP: In der Doku steht sicher, dass man beim SLOT die Parameter weg lassen/reduzieren kann.
TIP: In der Doku steht sicher, dass man beim SLOT die Parameter weg lassen/reduzieren kann.
Re: Textdatei von FTP holen und auslesen
ja tut sie dass denn nicht? Hab ich mich vertippt?franzf hat geschrieben:Dann sollte auch noch die beim connect angegebene Signatur des SLOTS mit der der tatsächlich implementierten Funktion übereinstimmen
wenn du glaubst das MainWindow fehlt:
connect( ftp, SIGNAL(commandFinished(int,bool)), SLOT(MainWindow::on_commandFinished(int,bool)));
ändert auch nichts. Jedoch markiert er das on_commandFinished auch wenn ichs reinschreib gleichzeitig mit dem in dem im Funktionskopf.
Zuletzt geändert von aed am 29. August 2011 07:45, insgesamt 1-mal geändert.
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Textdatei von FTP holen und auslesen
Slot:
Connect:
connect() gibt definitiv false zurück und auf der Konsole kommt eine Qt-Warnung...
Code: Alles auswählen
void MainWindow::on_commandFinished(void)
Code: Alles auswählen
connect( ftp, SIGNAL(commandFinished(int,bool)), SLOT(on_commandFinished(int,bool)));
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung