Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

11 commentaire(s) de Kevin.Ory sur des sources sur tout CodeS-SourceS

Le : 06/12/2008 02:13:19
Source : LECTEUR RSS EN VB.NET
Bonsoir,
Cette fois j'ai regardé mon code, ma réponse sera donc nettement plus pertinente que la dernière.

Pour ce qui est de l'erreur "L'exception TargetInvocationException n'est pas été gérée", celle-ci ne provient pas de ma classe RssReader mais de son implémentation trop simpliste dans mon application servant d'exemple: je n'y gère pas les erreurs retourné par le RssReader.

Il s'agit de cette méthode:

    Private Sub Reader_Completed(ByVal Sender As Object, ByVal e As RSS.RssReader.CompletedEventArgs) Handles RssReader.Completed
        RssFeed = e.Result
        'RssFeed.LoadImage()

        ' Affichage des résultats
        ShowDetailed()
        ShowJoli()
    End Sub

Il s'agit donc de la méthode appelé lorsque l'événement RssReader.Completed survient. Comme on peut le voir, aucun test n'est effectué pour savoir si le résultat est correct ou non. Pour corriger le problème, il suffit de tester la propriété Result de l'argument e pour voir si elle est à Nothing. Si une erreur survient durant le téléchargement, Result vaut toujours Nothing. (On peut aussi tester la propriété Error de e. Si Error = Nothing, cela veut dire que le résultat est correct):

    Private Sub Reader_Completed(ByVal Sender As Object, ByVal e As RSS.RssReader.CompletedEventArgs) Handles RssReader.Completed
        ' Tester le résultat
        If e.Result IsNot Nothing Then
            RssFeed = e.Result

            ' Affichage des résultats
            ShowDetailed()
            ShowJoli()
        Else
            MsgBox("Une erreur est survenue: " & vbCrLf & e.Error.Message)
        End If

    End Sub


Par contre, suite à des test que je viens de faire, je constate qu'une autre erreur n'est pas géré, et cette fois-ci elle provient bien de ma classe RssReader. Celui-ci ne gère pas l'erreur qui survient lorsque le contenu téléchargé ne correspond pas à un flux RSS (lorsque on essaie d'ouvrir une adresse qui n'est pas un flux RSS). Pour corriger cela, il faut ajouter du code, déjà dans la méthode client_DownloadDataCompleted de la classe RssReader:

    Private Sub client_DownloadDataCompleted(ByVal sender As Object, ByVal e As System.Net.DownloadDataCompletedEventArgs) Handles client.DownloadDataCompleted
        client = Nothing
        Dim res As RssFeed = Nothing
        Dim err As Exception = e.Error

        If e.Error Is Nothing And e.Cancelled = False Then
            Try
                ' Créer le RssFeed
                res = New RssFeed(e.Result)
            Catch ex As Exception
                ' Le contenu téléchargé ne peut être ouvert
                res = Nothing
                err = ex
            End Try
        End If

        Dim args As New CompletedEventArgs(res, e.Error, e.Cancelled, e.UserState)
        RaiseEvent Completed(Me, args)
    End Sub

De cette façon, on gère l'erreur qui survient lorsque le contenu ne peut pas être ouvert par le RssFeed.

Voyons maintenant comme RssFeed gère le chargement des données (RssFeed.New). D'abord il ouvre le contenu avec un XmlDocument, une erreur surviendra lorsque le contenu n'est pas du XML, mais cela ne prouve pas que le contenu n'est pas un flux RSS. Il faudra donc aussi rajouter des tests pour savoir si le contenu correspond à un flux Rss ou à un autre contenu XML:

Avec quelques Try et ThrowException, on peut améliorer la gestion de ces erreurs, mais sans toutefois garantir que le flux RSS contient des données valides (la personne l'ayant publiée peut avoir fait des erreur de syntaxe...).
Remplacer ces 3 méthode dans la classe RssFeed:

        Public Sub New(ByVal Datas() As Byte)
            Me.New(New IO.MemoryStream(Datas))
        End Sub
        Public Sub New(ByVal Stream As IO.Stream)
            Dim doc As New XmlDocument
            Try
                doc.Load(Stream)
            Catch ex As Exception
                Throw New Exception("Les données téléchargé ne correspondent pas à un contenu XML", ex)
            End Try
            LoadXml(doc)
        End Sub

        Private Sub LoadXml(ByVal doc As Xml.XmlDocument)
            tags.Clear()
            If doc.DocumentElement.Name.ToLower = "rss" Then
                Dim version As String = doc.DocumentElement.GetAttribute("version")
                tags.Add(New RssTag("version", version))

                If version = "2.0" Or version = "0.92" Or version = "0.93" Then
                    Try
                        Dim channel As XmlElement = doc.DocumentElement.GetElementsByTagName("channel")(0)
                        For Each elem As XmlElement In channel
                            If elem.Name.ToLower = "item" Then
                                ' Un item
                                _Items.Add(New RssItem(elem))
                            Else
                                ' Un tag du channel
                                LoadElem("", elem)
                            End If
                        Next
                    Catch ex As Exception
                        Throw New Exception("Une erreur est survenue lors de la lecture du flux RSS")
                    End Try
                Else
                    Throw New Exception("Le contenu ne correspond pas à un flux RSS version 2.0")
                End If
            Else
                Throw New Exception("Le contenu ne correspond pas à un flux RSS")
            End If
        End Sub


En conclusion, je constate que je n'avais pas beaucoup travaillé sur la gestion des erreurs avant de publier cette source. J'ai aussi remarque que seul la version 2.0 était accepté dans mon code, ce qui n'est plus le cas dans mon code ci-dessus (ajout de la version 0.92 et 0.93). Mais le code donne une idée, et tout fonctionnait si le contenu téléchargé était soit un flux RSS, soit rien.


Pour ta 2ème question, je ne comprend pas de où vient ton problème. Je ne gère pas la sélection dans mon lstRssItems_DrawItem, et ça se voit si je test chez moi: rien ne change lorsque je clique sur un item.

Bonne nuit, et au plaisir de t'aider...


Le : 29/11/2008 00:53:02
Source : LECTEUR RSS EN VB.NET
Salut DSIGMOUN,

Il y a My.Computer.Network.IsAvailable qui te permet de savoir si l'ordinateur est connecté sur un réseau, mais ça n'assure pas pour autant que le flux RSS est accessible. Le mieux est de faire la connexion dans un Try/Catch pour gérer l'erreur à ta façon...

Pour la sauvegarde sur le disque dur, ce n'est pas implémenté mais c'est très facile à ajouter cette fonctionnalité puisque j'utilise un XmlDocument dans mon code pour charger le flux RSS. Un flux RSS n'est rien d'autre qu'un fichier XML, qu'il suffit d'enregistrer sur le disque dur si tu veux le recharger plus tard...


Le : 01/09/2008 02:00:12
Source : GRISER L'IMAGE, CONVERSION VERS LE NIVEAU DE GRIS
Salut,
La méthode de Charles Racaud est énormément plus lente. Les GetPixel et SetPixel sont à proscrire!
La méthode avec la matrice de transformation est bien meilleur niveau perfs...
Beau boulot boutemine


Le : 12/06/2008 10:50:58
Source : CARDGENERATOR
Salut,
Il ne faut pas réinventer la roue, mais pas non plus aller voler les roues des autres pour sa propre utilisation ;D
Rien de compliqué (corrigez moi si je me trompe, mais) il ne s'agit que de quelques images à superposer.
Source intéressante quand même pour quelqu'un qui ne connait pas DrawImage ou qui à besoin d'idées :)


Le : 12/06/2008 10:42:03
Source : EXTRAIRE TOUS LES ICONES D'UN ÉXÉCUTABLE OU D'UNE DLL
Salut les gens,
Comme tu l'a dit Megafan, les exemples en VB commencent à manquer sur MSDN (qui ne seraient dans ce cas que des traduction du code C#). Dans la plupart des cas ça ne nous arrête pas car la traduction est facile à faire, mais quelque-fois ce n'es pas si facile et un exemple en VB serait vraiment le bienvenu. Alors pourquoi n'y aurait-il pas de telles traductions sur VBFrance? On ne peut pas se plaindre de l'absence des traductions VB sur MSDN, puis se demander si il est bon de traduire du code C# en VB sur d'autres sites...
Je pense que ça ne fais aucun mal d'avoir une traduction d'un même code en différents langages, à condition bien-sûr que la sources soit réellement utile et que l'auteur signal qu'il s'agit d'une traduction en indiquant la source (ce que Gillardg a fait).

Voilà, même si je n'en ai pas l'utilité pour l'instant, je dis bienvenu à cette source :)
Merci Gillardg...



Le : 12/06/2008 10:06:27
Source : CREATION DU VERSION SHAREWARE
Salut Thiery,

Tout d'abord, merci à toi de m'avoir cité dans ton texte :)

Ensuite, je rejoins les autres au sujet de la non-efficacité de ton système de protection. Mais les commentaires ayant déjà été fait, je ne reviendrai pas la dessus. Par contre j'explique comment je ferais la chose (qui n'est peut-être pas non plus la meilleur d'ailleurs, je n'ai aucune expérience dans ce domaine):

- Du code .NET est facilement décompilable, n'importe qui s'y connaissant un peu peut donc voir comment fonctionne ton programme (pour trouver le chemin de ton fichier "config.xmlID.P00000444.txt" par exemple.
- Je crois qu'à peu-près toutes les limitations de temps de ce genre des versions shareware sont crackables (Microsoft n'est pas épargné)

Pour palier au 1er problème, tu peux rendre ton code quasiment impossible à lire grâce à Dotfuscator. Sa version Community (la plus simple) est d'ailleurs fournis avec VS 2008. Plus d'infos (chez MS):
http://msdn.microsoft.com/fr-fr/library/ms227240(VS.80).aspx

Pour éviter le 2ème problème, ne limite pas ton programme dans le temps mais limite ses fonctionnalités ou son confort d'utilisation.
Il faut faire attention au niveau des limitations de fonctionnalités, car cela peut rendre ton shareware inutilisable et donc par réellement testable et digne d'intérêts.
Le mieux à mon avis, est de limiter son confort d'utilisation. Exemple:
- Pour un programme de compression de vidéos, rajoute un logo/nom/email sur la vidéo créé.
- Limite la duré d'exécution de ton programme à 10 minutes d'utilisation. - Régulièrement lancer le navigateur Internet sur la page de ton site.

Ces exemples permettent une totale utilisation de ton programme mais sans pouvoir pleinement en profiter. Quelqu'un qui l'apprécie n'hésitera donc pas à l'acheter...

Ce qu'il y a de mieux, c'est évidement une vérification en ligne à chaque démarrage, mais ce n'est applicable qu'à peu de programmes (programme en ligne...) et est plus difficile à mettre en ½uvre ;)

A bientôt...



Le : 03/06/2008 07:20:55
Source : HACKER PASSE ADMINISTRATEUR WINDOWS XP
"Frer" en "frère"
"Per" en "père"
"Mere" en "mère"
"Ect" en "etc"

Je suis mort de rire, t'es vraiment un cas Reacen/17ans/Maroc :D


Le : 01/06/2008 18:30:55
Source : CALENDRIER ENTIÈREMENT EN GDI+
Salut,
Rien de réjouissant, au contraire: je trouve ta source intéressante, mais elle est vraiment très mal codé.

"Ce calendrier à été développé pour être étudié par les membres de la communauté VbFrance"
Moi je ne conseil à personne d'étudier cette source, elle est bien trop complexe et non performante.

"Toute utilisation même à des fins non commerciales dans un programme autre que celui-ci est interdite sans mon accord écrit."
Ouais si tu veux...

"Dessin en GDI+"
Oui et alors, quel autre choix a-tu pour dessiner qqch sur une Windows Forms? Toutes les windows forms sont dessiné en GDI, du plus simple label à la ListView, tout est en GDI dans Windows. Et dire "j'ai fais une application qui utilise GDI+", parce qu'on fait un Graphics.DrawString, ben  bon... En plus, GDI+ fait plutôt références aux API, alors pourquoi ne parles-tu pas des API utilisé pour créer une fenêtre, utiliser un Timer, détecter le clique de la souris, etc?

"Vous voulez un exemple d'application connue qui est programmée entièrement en GDI+ ? C'est pas compliqué, prennez Safari 3 pour Windows. Le programme bug, l'interface parfois est à moitié en XP/Mac, donc, le GDI+ n'est pas très adapté pour les grosses surfaces"
Ainsi que Word, Excel, Internet Explorer, l'explorateur Windows, le bureau, le menu démarrer, Firefox, Live Messenger, Visual Studio, Avast, Media Player (a part l'image vidéo), eMule, Paint.NET... j'arrète là, c'est juste pour redire que TOUTES les Windows Forms utilisent GDI pour  s'afficher à l'écran. Donc que GDI = Lent et bugué, laisse moi rire... (il est vrai que c'est lent pour faire de grosse application graphique (Jeux, vidéo

"Utilisation du Double Buffer pour dessiner"
Oui, DoubleBuffer = True et c'est près. Ou alors suffit d'utiliser une PictureBox, ou le DB est activé par défaut.

"Je le mets entre parenthèses car le GDI+ et le Double Buffer qui redessine en permanence afin de rendre les animations fluides prend des ressources en CPU. Donc, à moins de le programmer en OpenGL ou DirectX, le GDI+ prend beaucoup de ressource"
Parlons-en... Le fait d'afficher un label sur une form te prend 100% de CPU toi? Ben non, et pourtant ton code utilise 100% de CPU pour afficher 3 ligne de texte (statique). C'est justement en DirectX ou OpenGL, dans les jeux, qu'on créé une boucle comme tu l'as fais, mais pas pour afficher un texte en GDI.

"car le principe de "Boucle de de dessin est toujours le même". En GDI, on programme une boucle (ici en fonction grâce au Timer qui Invalide la zone à chaque milliseconde), ou bien apr une boucle loop par exemple"
Tout faux...

"On applique le double buffer en 2 lignes de code au début du projet et le tour est joué."
En 1 ligne avec la fonction de DoubleBuffer intégré dans les contrôles Windows (Me.DoubleBuffer = True). Mais il aurait été possible d'utiliser un BufferedGraphics pour éviter de tout redessiner à chaque rafraichissement.
Parlons de la longueur du code. Près de 1000 lignes de code pour afficher un peu de texte sur un controle, ça fait beaucoup, vraiment beaucoup... Je suis sur que je fais la même chose en 10 fois moins de code...


Bon j'arrète... (je pourrais encore faire des pages de commentaires en citant ton code)
BadoqueAlex, je te félicite pour l'effort et surtout d'avoir posté ta source sur le site, mais je pense que tu as encore beaucoup à apprendre avant de créer du code d'exemple destiné à "être étudié par les membres de la communauté VbFrance"
A l'occase, si je suis motivé, je ferai un contrôle semblable histoire que tu puisse l'étudier ;)

Dsl d'avoir été si négatif,
A+


Le : 29/03/2008 19:15:09
Source : WRAPPER .NET 2.0 POUR LES CACHEDBITMAP DE GDI+
Salut,

Excellent boulot ça, merci :)

C'est effectivement ce que je recherchais (je crois, je n'ai pas encore analysé ton code en détails), mais j'avais abandonné l'idée d'essayer d'améliorer mon programme .NET 2, et je suis passé à .NET 3.5. As-tu déjà essayé WPF? C'est assez magnifique, ça s'utilise un peu comme DirectX (logique, puisque c'est du DirectX), et à évidement des performances incomparable avec GDI32 (Plusieurs images de haute résolution avec mouvement et zoom temps réel sans problèmes).
Mais j'ai juste essayé, je ne consacre plus bcp de temps à la prog ces temps, mais vais bien m'y remettre un jour :)

Pour ce qui est ton code, comme tu le dis il est très intéressant car nous permet de comprendre comment wrapper un objet non managé, mais dommage que les performances ne soit pas à la hauteur de ce que j'attendais. Je vais tester tout ça en détail un de ces prochains jours (et je noterai après ^^).

Encore merci, et bonne continuation à toi..




Le : 30/12/2007 16:30:02
Source : VB.NET 2005 ET GDI+ : LED DISPLAY, PANNEAU DE DIODES : AFFICHEZ UN TEXTE COMME UN SUR UN PANNEAU DE DIODES!
Très beau rendu effectivement, je te met 9

Mais je me permet de critiquer le fait que tu prétend utiliser GDI+. Toi tu utilise les fonctions graphiques du framework .NET, qui elles utilisent GDI+, donc de la à dire "Je maitrise GDI+", c'est bcp dire ;)

En fait je suis tombé sur ta source car moi je veux vraiment utiliser GDI+, c'est à dire gdiplus.dll, car le Graphics managé n'est pas assez performant pour ce que je veux faire (me faut des CachedBitmaps)... j'y avait presque cru ;p



1


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.