View Full Version : [C++]Scaricare files da usare nel programma
Ciao a tutti!
Vorrei fare in modo che dato un indirizzo di un file di un sito, il mio programma lo vada a scaricare per poi effettuare le operazioni di cui ho bisogno...
bhe come faccio? qualche funzione di wxwidgets utile?
grazie! :)
:muro:
Puoi usare questo se è un file HTTP:
http://www.wxwidgets.org/manuals/2.6.2/wx_wxhttp.html#wxhttp
#include <wx/wx.h>
#include <wx/wfstream.h>
#include <wx/protocol/ftp.h>
class
downloadapp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(downloadapp)
bool
downloadapp::OnInit()
{
wxFTP ftp;
if ( !ftp.Connect(_("biolpc22.york.ac.uk")) ) {
wxLogError(_("Couldn't connect"));
return false;
}
ftp.ChDir(_("/pub/2.6.2/"));
wxInputStream *in = ftp.GetInputStream(_("wxWidgets-2.6.2-HTML.zip"));
if ( !in ) {
wxLogError(_("Couldn't get file"));
} else {
wxFileOutputStream out(_("wxWidgets-2.6.2-HTML.zip"));
if ( out.Ok() ) {
in->Read(out);
} else {
wxLogError(_("Couldn't open output file"));
}
delete in;
}
return false;
}
grazie ragazzi, darò un'occhiata ad entrambi
:)
il frammento di codice di Qu@ker salva anche il file nella cartella del programma giusto?
ah si provato e lo fa ;)
altra piccola domanda più o meno legata a internet..
è possibile fare aprire il browser predefinito cliccando su un url in un wxTextCtrl?
al momento ho notato lo window style wx_Auto_URL nel wxtextctrl ma cliccando sull'url nel runtime non sembra fare nulla quindi immagino che crei solo un evento a cui dovrei collegare una funzione.. giusto?
grazie
Esatto. A occhio ti sarebbe utile wxLaunchDefaultBrowser()...
si avevo appena visto quella funzione.. ma il problema che ho è.. dove prendo la stringa, da dare a LaunchDefaultBrowser, corrispondente all'Url evidenziata dal wxAUTO_URL?
Se dai un'occhiata ai samples, nell'esempio text mostrano come gestire l'evento wxTextUrlEvent.
stavo guardando proprio quello, e avevo pensato di modificare un attimo il sample per vedere se mi apriva la pagina...
però a meno che non hofatto qualche errore, non me l'apre
void MyTextCtrl::OnTextURL(wxTextUrlEvent& event)
{
const wxMouseEvent& ev = event.GetMouseEvent();
// filter out mouse moves, too many of them
if ( ev.Moving() )
return;
long start = event.GetURLStart(),
end = event.GetURLEnd();
wxString auto_url = GetValue().Mid(start, end - start).c_str(),
wxLaunchDefaultBrowser( auto_url);
}
io avevo modificato come sopra aggiungendo la libreria di wxLaunchDefaultBrowser
Se io lo cambio cosi' l'originale in text:
void MyTextCtrl::OnTextURL(wxTextUrlEvent& event)
{
const wxMouseEvent& ev = event.GetMouseEvent();
// considero solo la pressione del tasto sinistro
if ( !ev.LeftDown() )
return;
long start = event.GetURLStart(),
end = event.GetURLEnd();
wxString miaUrl = GetValue().Mid(start, end-start);
::wxLaunchDefaultBrowser(miaUrl);
}
Il risultato e' che sulla logwindow appare:
This is the log window.
04:09:28 PM: Error: No default application can open .html extension
Che mi pare vada abbastanza bene... :D
ottimo invece così me l'ha aperta :D
mi pare di aver capito che questa funzione funzioni solo su windows e non funziona con firefox.. forse rientri nei due casi..
No, io sono sotto Linux e uso le wxGTK. Significa solo che dovrei configurare da qualche parte l'associazione tra i file .html e Firefox.
Ma la cosa al momento non mi interessa affatto... :D
il bello è che adesso non so perchè non mi funziona sul programma mio.. :muro: :doh:
adesso sono riuscito a capire l'errore che facevo.. ma ho il problema che mi apre al click sull'url 2 pagine di Internet.. una, la prima totalmente vuota anchesenza indirizzo, e l'altra invece con l'indirizzo corretto..
bho
edit: sistemato :)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.