oretovalley (Normal User)
Pro
Messaggi: 109
Iscritto: 12/04/2009
|
Ciao a tutti, devo eseguire una lettura ciclica su una pagina in php che scarico continuamente da internet e voglio stampare il valore, adesso il mio file è diviso in due parte un exe che scarica il file e l'altro che lo legge...
Codice sorgente - presumibilmente C# |
#include<iostream> #include<fstream> using namespace std; int main() { ifstream leggi; string risposta; do { system("receive.exe"); leggi.open("ricevi"); system("pause"); leggi >> risposta; leggi.close(); cout << risposta << endl; system("pause"); }while(true); }
|
utilizzo questo codice per eseguire l'exe, "receive.exe" che mi scarica la pagina e la mette nella stessa cartella dell'eseguibile e successivamente dovrei leggere quel file e stamparlo, il problema è che il primo valore lo legge e lo stampa perfettamente dal secondo in poi invece non legge più niente ma mi stampa sempre lo stesso valore, ho provato a controllare a mano il file receive.exe ma funziona correttamente xkè preleva valori via via diversi, ora mi chiedo xkè quindi il mio file in C++ non stampa tutti i valori letti ?
|
|
Matthew (Member)
Expert
Messaggi: 387
Iscritto: 29/01/2007
|
Una possibile spiegazione potrebbe essere che il tuo programma "receive.exe" appende solo i valori alla fine del file, senza cancellare quello che c'è prima. In tal modo tu apri e chiudi il file e ogni volta leggi solo il primo valore, che ovviamente resta invariato.
Ultima modifica effettuata da Matthew il 16/10/2009 alle 6:25 |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Inserisci una
remove("ricevi");
subito dopo la close.
|
|
oretovalley (Normal User)
Pro
Messaggi: 109
Iscritto: 12/04/2009
|
ho provato cn la remove niente, continua a stamparmi sempre gli stessi valori, inoltre non può aggiungere i valori xkè nel download io scrivo questo codice:
Codice sorgente - presumibilmente C++ |
#include <windows.h> #include <fstream> using namespace std; int main(int argc, char *argv[]){ typedef int * (*URLDownloadToFileA)(void*,char*,char*,DWORD,void*); HINSTANCE LibHnd = LoadLibrary("Urlmon.dll"); URLDownloadToFileA URLDownloadToFile = (URLDownloadToFileA) GetProcAddress(LibHnd,"URLDownloadToFileA"); URLDownloadToFile(NULL, "http://www.zackfairsite.altervista.org/tictactoe_online/ricevi.php", "ricevi", NULL, NULL); }
|
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Non ho capito ... e quest'altro codice cosa e' ???
|
|
Matthew (Member)
Expert
Messaggi: 387
Iscritto: 29/01/2007
|
A prima vista sembrerebbe il sorgente del "receive.exe"...
|
|
oretovalley (Normal User)
Pro
Messaggi: 109
Iscritto: 12/04/2009
|
Postato originariamente da oretovalley:
ho provato cn la remove niente, continua a stamparmi sempre gli stessi valori, inoltre non può aggiungere i valori xkè nel download io scrivo questo codice:
Codice sorgente - presumibilmente C++ |
#include <windows.h> #include <fstream> using namespace std; int main(int argc, char *argv[]){ typedef int * (*URLDownloadToFileA)(void*,char*,char*,DWORD,void*); HINSTANCE LibHnd = LoadLibrary("Urlmon.dll"); URLDownloadToFileA URLDownloadToFile = (URLDownloadToFileA) GetProcAddress(LibHnd,"URLDownloadToFileA"); URLDownloadToFile(NULL, "http://www.zackfairsite.altervista.org/tictactoe_online/ricevi.php", "ricevi", NULL, NULL); }
|
|
questo è il codice del receive.exe come vedi scarica il file e lo mette nella stessa cartella dove è eseguito, nel caso esiste viene sovrascritto, è l'altro file quello che legge deve solamente leggere ciò che viene scaricato da questo file... ma sembra che al posto di leggere ogni volta, legge solo una volta e stampa sempre lo stesso valore... |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Scusa se ti faccio qualche domanda per capire ...
1) Perche' non hai inserito tutto il codice che ti serve in un solo programma?
2) Perche' carichi dinamicamente la URLDownloadToFile al posto di utilizzarla staticamente?
3) La URL che utilizzi e' quella nel codice? Perche' non restituisce nulla ...
|
|
oretovalley (Normal User)
Pro
Messaggi: 109
Iscritto: 12/04/2009
|
Postato originariamente da theprogrammer:
Scusa se ti faccio qualche domanda per capire ...
1) Perche' non hai inserito tutto il codice che ti serve in un solo programma?
2) Perche' carichi dinamicamente la URLDownloadToFile al posto di utilizzarla staticamente?
3) La URL che utilizzi e' quella nel codice? Perche' non restituisce nulla ...
|
1) Perchè il codice per scaricare il file necessita delle librerie windows.h, siccome io utilizzando questo codice per un gioco con una modalità online, è il gioco utilizza le allegro.h, il compilatore mi ha segnalato vari problemi di incompatibilità tra le due librerie.
2) Perchè sto facendo un test, successivamente mi serve modificare più volte il link nello stesso file.
3) Io scarico l'intera pagina con il valore stampato a schermo è quello che mi serve leggere. Anche se la pagina non restituisce un download, il codice mi scarica la pagina html, con ciò che viene mostrato a schermo, ciò che serve leggere a me e che legge solo una volta... |
|