HORLOGE DIODE AVEC 3 ALARMES ET REMISE À L'HEURE

NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 - 15 oct. 2011 à 18:34
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 - 15 oct. 2011 à 23:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53680-horloge-diode-avec-3-alarmes-et-remise-a-l-heure

NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
15 oct. 2011 à 23:16
A la place de
MsgBox(Err.Number & vbLf & vbLf & Err.Description, vbExclamation)
Fais plutot :
MessageBox.Show(ex.ToString)
Tu aura plus d'information.

Concernant les noms des contrôles, certes, mais c'est souvent plus clair.
Surtout quand tu cherches à comprendre une source.
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
15 oct. 2011 à 20:53
Ah, je t'assure, quand dans un forum (où je ne te vois pas = VBnet de Microsoft), on me passe un code avec des noms personnels sur ls objets, c'est réellement pénible, car il faut écrire les nom sur les objets pour que ça marche sauf si on a tout le code, en plus certain d'onne des noms qui ne sont significatifs que pour eux, alors je ne mets jamais de nom... mais je commente la procédure si besoin.

Pour l'affichage avec erreur, oui, mais je n'utilise pas error, c'est juste de l'affichage, en fait c'est simple, tout ce qui tourne en vb6 et n'est pas plus performant à l'oeil, je le mets en vb6.

Cordialement, marche pas ce forum, je perd souvent le curseur !

Joe
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
15 oct. 2011 à 20:29
Bonsoir,

Pour information, je suis développeur pro, donc certains conseils sont directement issus de ce monde.

Le nommage des contrôles permet aussi d'éviter de chercher à chaque fois que l'on ajoute une ligne "Quel est le contrôle qui contient l'information désirée ?"
Par exemple, TxtHeureAlarme1 est plus facilement logiquement utilisable que TextBox12.
C'est une règle qui est indispensable dans les projets de tailles modérée et plus, et c'est une habitude essentielle à prendre.

MsgBox, mid, ... sont des fonctions issues de VB6, conservées pour compatibilité, mais sont à éviter quand il y a des alternatives plus respectables et plus logiques dans les classes standards du framework. Par exemple, Mid index les caractère sur une base 1 alors que partout dans le framework on est en base 0, l'utiliser, revient à faire en permanence une gymnastique intellectuelle, fatiguante et source d'erreur.

Certes, tu n'utilises pas On Error, mais tu utilises Err :
# Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
# Try
# TimeOfDay = New Date(Now.Year, Now.Month, Now.Day, ComboBox10.SelectedIndex, ComboBox11.SelectedIndex, ComboBox12.SelectedIndex)
# Catch ex As Exception
# MsgBox(Err.Number & vbLf & vbLf & Err.Description, vbExclamation)
# End Try
# End Sub
Utilises plutôt l'objet Exception fourni par le Catch.

Concernant la collection et la structure, faire cela pourra te permettre, sans réclamer beaucoup de code, de pouvoir changer le nombre d'alarme disponible.

Concernant la RAM, vouloir l'économiser à l'excès, c'est vrai que ce n'est pas utile, mais ne pas la gaspiller inutilement est quand même respectable, bons nombre d'ordinateur n'ont pas forcément 4Go de RAM.

Je n'ai pas fait de remarque sur l'usage du Timer.
Tous les processeurs (je parle des PC) actuellement, utilisent les Timers à foison, donc ce n'est pas un de plus qui va les déranger.
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
15 oct. 2011 à 19:58
Bonsoir,

Je ne nomme jamais les contrôles car si on se passe le code, ça pénalise trop la personne qui doit donner un nom à chaque contrôle, il est mieux d'indiquer simplement dans la procédure ce que fait le contrôle, ce qui ici a été omis car on comprend ce que ça fait, c'est en somme marqué sur le bouton, suffit de venir de la feuille au code.

Option explicit on, est activé, le reste n'a pas d'importance.

MsgBox est un héritage vb6, c'est au choix.

Mid fonctionne très bien.

L'importe de MS, le paramétrage, ça regarde celui qui va l'installer ensuite...

Je n'ai pas utilisé error ou on error !

La structure que j'utilise est une structure VB qui fonctionne, c'est suffisant, on peut en effet mettre une variable à deux entrées i(x,y), c'est au choix, ou trois variables i, j, k, vu le faible nombre ça n'a pas à être discuté.

Pour le select case, j'utilise au maximum les directives VB, et surtout B (de Basic) dans le code.

Concernant la RAM, elle est passé de 64 ko à 4 Go et maintenant davantage en 64 bits, il est ridicule de tenter de faire une économie de bouts de chandelles avec si peu de place prise, on s'en préoccupe si réellement une grande place mémoire est prise.

Concernant le Timer et le temps processeur, là c'est certain que le processeur n'aime pas les Timer, mais bon, c'est nécessaire dans le code, à moins de faire une boucle avec des goto, ce qui reviendrait sans doute au même, voire pire, donc on n'y peut rien c'est comme ça !

Cordialement.

Joe.
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
15 oct. 2011 à 18:34
Bonsoir,

Je pense qu'il faut que tu apprenne les règles de présentations basiques :
- Nommer ses contrôles de manière adaptée, Button6 fait quoi ?
- Activer Option Strict et Option Explicit
- MsgBox doit être évité, on lui préfère MessageBox.Show(...)
- Mid doit être remplacé par MaChaine.SubString(...)
- Retirer l'import automatique de Microsoft.VisualBasic (Propriétés du projet, Références).
- Ne pas utiliser Err ou On Error, utilises un Try/Catch et l'objet d'Exception qui est retourné.

Ensuite, concernant le code :
- Le code :
# Dim alarme(3) As Boolean
# Dim Halarme(3) As String
Me fait penser qu'une structure contenant un Booléen et un Date remplacerait avantageusement ces 2 tableaux.
Tu peux aussi regarder du coté de List(Of ...) pour gérer autant d'alarmes que désirer.

# Sub quelleImage()
# Select Case t
# Case 0 : ri = My.Resources._0
# Case 1 : ri = My.Resources._1
# Case 2 : ri = My.Resources._2
# Case 3 : ri = My.Resources._3
# Case 4 : ri = My.Resources._4
# Case 5 : ri = My.Resources._5
# Case 6 : ri = My.Resources._6
# Case 7 : ri = My.Resources._7
# Case 8 : ri = My.Resources._8
# Case 9 : ri = My.Resources._9
# End Select
# End Sub
Peut être ramplacée par un Dictionary(Of ...), cela limitera la conso mémoire et simplifiera ton code.

Réponds déjà à ces quelques remarques, on verra pour la suite.
Rejoignez-nous