IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Etat t�l�chargement par evenement en c++/cli


Sujet :

C++/CLI

  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par d�faut Etat t�l�chargement par evenement en c++/cli
    Bonjour a toutes et tous

    Voila j'ai un probl�me pour r�cup�rer l'�tat d'avancement d'un t�l�chargement en c++/cli.

    J'ai trouver dans la msdn ce bout de code pour r�cup�rer par �v�nment l'etat d'avancement du telechargement seulemen c'est en C# et je n'arrive pas a l'adapter en c++/cli.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Sample call : DownLoadFileInBackground2 ("http://www.contoso.com/logs/January.txt");
    public static void DownLoadFileInBackground2 (string address)
    {
        WebClient client = new WebClient ();
        Uri uri = new Uri(address);
     
        // Specify that the DownloadFileCallback method gets called
        // when the download completes.
        client.DownloadFileCompleted += new AsyncCompletedEventHandler (DownloadFileCallback2);
        // Specify a progress notification handler.
        client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
        client.DownloadFileAsync (uri, "serverdata.txt");
    }

    Voila mon code en c++/cli:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    objclient->DownloadFileCompleted += gcnew System::ComponentModel::AsyncCompletedEventHandler(ProgressBarCompleted);
    			objclient->DownloadProgressChanged += gcnew System::Net::DownloadProgressChangedEventHandler(ProgressBar);
    J'appelle les m�thodes ProgresBarCompleted et ProgressBar qui ce charge de faire varier l'�tat de la progressBarre.
    Le probl�me c'est que sa ne compile pas

    Merci d'avance pour ceux qui ce donneront la peine de m'aider encore un fois.

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    quelque chose du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     WebClient ^client = gcnew WebClient ();
     Uri ^uri = gcnew Uri(address);
     
     // Specify that the DownloadFileCallback method gets called
     // when the download completes.
     client->DownloadFileCompleted += gcnew AsyncCompletedEventHandler (DownloadFileCallback2);
     // Specify a progress notification handler.
     client->DownloadProgressChanged += gcnew DownloadProgressChangedEventHandler(DownloadProgressCallback);
     client->DownloadFileAsync (uri, "serverdata.txt");

  3. #3
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par d�faut
    C'est exactement ce que j'ai fais mais voila les erreurs que j'ai :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
     
    Erreur	1	error C3867: &'DailymotionDownloader::Form1::ProgressBarCompleted' : liste d'arguments manquante dans l'appel de fonction ; utilisez 'DailymotionDownloader::Form1::ProgressBarCompleted' pour créer un pointeur vers membre	d:\visual studio 2005\projects\programmes youdaily downloader\dailymotion-downloader revision n°3 en cours\dailymotion-downloader\Form1.h	556
     
    Erreur	2	error C3350: 'System::ComponentModel::AsyncCompletedEventHandler' : un constructeur délégué attend 2 argument(s)	d:\visual studio 2005\projects\programmes youdaily downloader\dailymotion-downloader revision n°3 en cours\dailymotion-downloader\Form1.h	556

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    h�h� 'DailymotionDownloader ...

    comme indiqu�, pour cr�er un pointeur de fonction, on utilise & devant, &Form1::M�thode

  5. #5
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par d�faut
    La reponse est vraiment rapide

    Merci pour ton aide le passage par ref marche.

    Mais j'ai encore un erreur sur le type de la fonction que j'appelle avec mon delege.

    Code d'appel de mes fonctions :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    objclient->DownloadFileCompleted += gcnew System::ComponentModel::AsyncCompletedEventHandler(&Form1::ProgressBarCompleted);
    objclient->DownloadProgressChanged += gcnew System::Net::DownloadProgressChangedEventHandler(&Form1::ProgressBar);
    Code de mes fonctions :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private: void ProgressBar(System::Object^  sender,System::Net::DownloadProgressChangedEventArgs^ e)
    {
    this->progressBarTelecharge->Value = e->ProgressPercentage;
    this->labelTelechEnCour->Text = " En cours (" + e->ProgressPercentage + "%)";
    }
     
     
    private: void ProgressBarCompleted(System::Object^  sender,System::ComponentModel::AsyncCompletedEventArgs^ e)
    {
     
    }

    Mais voila l'erreur retourn�e :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    Erreur	1	error C3352: 'void DailymotionDownloader::Form1::ProgressBarCompleted(System::Object ^,System::ComponentModel::AsyncCompletedEventArgs ^)' : la fonction spécifiée est incompatible avec le type délégué 'void (System::Object ^,System::ComponentModel::AsyncCompletedEventArgs ^)'	d:\visual studio 2005\projects\programmes youdaily downloader\dailymotion-downloader revision n°3 en cours\dailymotion-downloader\Form1.h	555
     
     
     
    Erreur	2	error C3352: 'void DailymotionDownloader::Form1::ProgressBar(System::Object ^,System::Net::DownloadProgressChangedEventArgs ^)' : la fonction spécifiée est incompatible avec le type délégué 'void (System::Object ^,System::Net::DownloadProgressChangedEventArgs ^)'	d:\visual studio 2005\projects\programmes youdaily downloader\dailymotion-downloader revision n°3 en cours\dailymotion-downloader\Form1.h	556
    Pourtant c'est exactement le meme type de fonction present dans la msdn

  6. #6
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    faut pas que ca soit une fonction static ?

  7. #7
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par d�faut
    Merci beaucoup nico-pyright(c)

    C'�tait bien sa il fallait mettre les fonctions en statics
    Pour r�sumer le code transposer en c++/cli pour les �ventuel lecteur :

    Code d'appel des fonctions par le delegue :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    objclient->DownloadFileCompleted += gcnew System::ComponentModel::AsyncCompletedEventHandler(&Form1::ProgressBarreCompleted);
    objclient->DownloadProgressChanged += gcnew System::Net::DownloadProgressChangedEventHandler(&Form1::ProgressBarre);
    Code des fonctions appell�es :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    static void ProgressBarre(System::Object^  sender,System::Net::DownloadProgressChangedEventArgs^ e)
    {
    }
     
    static void ProgressBarreCompleted(System::Object^  sender,System::ComponentModel::AsyncCompletedEventArgs^ e)
    {
    }
    Voila j'esp�re que sa pourra aider quelques personnes

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Etat t�l�chargement par evenement en c++/cli
    Par Zaltez dans le forum G�n�ral Dotnet
    R�ponses: 0
    Dernier message: 02/09/2007, 12h00
  2. [Etat] comparatif par année et par mois
    Par peter2587 dans le forum IHM
    R�ponses: 11
    Dernier message: 05/10/2006, 17h05
  3. [Syst�me] T�l�chargement par HTTP d'un fichier
    Par Thierry8 dans le forum Langage
    R�ponses: 20
    Dernier message: 06/06/2006, 10h42
  4. Etat bloqu� par une table
    Par aujero dans le forum Access
    R�ponses: 4
    Dernier message: 06/02/2006, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo