Il problema sopra scritto (non più da considerare) era che la barra di un wxGauge non avanzava mai ( SetValue(int) )se passavo un size_t prelevato da un wxStreamInput tramite il metodo size_t GetSize().
Ho tentato di modificato il thread perché, dopo altri innumerevoli tentativi, mi sono accorto che non era un problema di conversione, ma il fatto che il medoto usato per prelevare la dimensione dello stream ritorna sempre 0 (come del resto GetLastRead() ).
A questo punto mi sorge un immenso dubbio. Come può questo listato funzionare se il medoto sopracitato non restituisce il giusto valore?? (eppure funziona egregiamente... )
codice:
wxFTP ftp;
// La connessione sarà anonima se si eliminano queste 2 righe
ftp.SetUser( d_user );
ftp.SetPassword( d_pass );
WxGauge1->SetValue(0);
//Connessione in corso!
WxLog->AppendText(l_con_cors);
if ( !ftp.Connect( d_host ) )
{
wxLogError("Impossibile connettersi");
WxLog->AppendText(e_conn);
return;
}
//Connessione effettuata
WxLog->AppendText(l_con_eff);
ftp.ChDir( d_path );
in = ftp.GetInputStream( d_file );
if ( !in )
{
wxLogError("File non presente sul server");
WxLog->AppendText(e_acc_file);
}
else
{
size_t size = in->GetSize();
char *data = new char[size];
//Download in corso.
WxLog->AppendText(l_in_down);
WxGauge1->SetRange( size ); // Range Gauge= Stream
WxTimer1->Start(1);//Attivo timer per ProgressBar
if ( !in->Read(data, size) )
{
wxLogError("Errore di scrittura del file");
WxLog->AppendText(e_read_file);
}
else
{
// file data is in the buffer
wxTransferStreamToFile(*in, d_file );
//Download eseguito
WxGauge1->SetValue(size);
WxLog->AppendText(l_ok_down);
}
WxLog->AppendText(l_con_close);
WxTimer1->Stop();
delete [] data;
in->Reset();
}
Come posso rimediare al mio problemuccio??
Grazie mille