| auteur : David Pedehourcq | Il faut utiliser la classe :
System. Diagnostics . Process
|
Voici un petit exemple simple pour demarrer un .exe sur le serveur :
Dim Processus As New System. Diagnostics . Process
Processus. StartInfo . FileName = " MonApplis.exe "
Process. StartInfo . Arguments = " Monargument "
Processus. Start ()
|
On arretera le process avec :
Pour plus d'informations sur la classe System.Diagnostics.Process référez vous à msdn.
|
lien : Process Class (liens MDSN)
|
| auteur : Didier Danse |
Dans un TextBox, le retour à la ligne se fait par \r\n. En HTML, il s'agit
de <br/>.
Il suffit dès lors de remplacer le \r\n par <br/>.
Dim strAAfficher As String = strEncode. Replace (" " & Microsoft. VisualBasic . Chr (13) & " " , " <br/> " )
|
|
| auteur : abelman |
Simple à faire mais peu de personnes le trouvent du premier coup...
Dim ver As Version = Environment. Version
Console. WriteLine (" Version Framework = {0} " , ver)
|
|
| auteur : Didier Danse |
Lorsque nous effectuons un traitement, il est conseillé d'utiliser les locks.
Ceux-ci permettent de verrouiller des parties de code. Il n'est ainsi pas possible
d'exécuter simultanément deux parties de code se trouvant dans un bloc verrouillé.
Sub NomMethode ()
SyncLock Me
End SyncLock
End Sub
|
|
lien : Utilisation du Global.asax
|
| auteur : Didier Danse |
C'est très simple et pourtant le nombre de questions sur le sujet est énorme.
.NET a, comme la plupart des langages, une fonction permattant de générer un nombre aléatoire.
Celle-ci génère un nombre entre "min" et "max".
Dim min As Integer = 0
Dim max As Integer = 20
Rnd . Next (min, max)
|
|
| auteur : Didier Danse |
Il est fréquent d'encoder une date sous forme d'une chaîne de caractères. La
plupart du temps, le développeur d'applications souhaitera manipuler un objet
DateTime, c'est pourquoi la conversion (casting) est importante.
Dim maDateChaine As String = " 03/06/2005 17:06:00 "
Dim maDate As DateTime = DateTime. Parse (maDateChaine)
|
|
| auteur : Didier Danse |
Il suffit d'utiliser l'élément container (par exemple le body) et de lui
ajouter un LiteralControl.
container. Controls . Add (New LiteralControl (" <br/> " ))
|
|
| auteur : Didier Danse |
Bien que ceci soit très simple, la question revient fréquemment...
Dim diff As TimeSpan = date1 - date2
|
Le TimeSpan permet de récupérer des durées au format heures, minutes, secondes.
On utilisera ceci, entre autres, pour connaître la durée d'un travail, la durée d'exécution d'une requête
et bien d'autres choses.
|
lien : Comment savoir le temps nécessaire à l'exécution d'une requête?
|
| auteur : neguib |
Voici une fonction permettant de convertir une valeur en base 10 vers une base n.
Private Shared increment As Integer = 64
Public Shared Function ToBaseN (ByVal nombre As Integer, ByVal _base As Integer) As String
Dim reste As Integer
Dim chaine As String = String . Empty
While nombre >= _base
reste = nombre Mod _base
nombre = (nombre - reste) / _base
If reste > 9 Then
chaine = CType ((reste - 9 + increment), Char). ToString + chaine
Else
chaine = reste. ToString + chaine
End If
End While
If nombre > 9 Then
chaine = CType ((nombre - 9 + increment), Char). ToString + chaine
Else
chaine = nombre. ToString + chaine
End If
Return chaine. ToUpper
End Function
|
Conseil: limitez la conversion à la base 36 afin de ne devoir utiliser que les caractères alphanumériques.
|
| auteur : Didier Danse |
Attention, ceci est une astuce. Il se peut qu'il y ait d'autres solutions.
Souvent, dans les applications asp.NET, on stocke les informations relatives à un
client dans des variables de Session. Ainsi pour vérifier qu'un utilisateur est bien
connecté, on a recours à un test du type "if (Session["UserName"] != Nothing) { ... }".
Cependant, suite à une faute de frappe, on pourrait avoir "if (Session["UserNamme"] != Nothing) { ... }"
par exemple.
Pour limiter le nombre d'erreurs possibles, il suffit de faire une classe qui "gère"
les accès aux différentes variables de session.
Public Class SessionTransfert
Public Class Exemple1
Public Shared Property Teacher_Name () As String
Get
If Not (HttpContext. Current . Session (" Teacher_Name " ) Is Nothing ) Then
Return HttpContext. Current . Session (" Teacher_Name " ). ToString
Else
Throw New SessionUndefinedException (" Teacher_Name " )
End If
End Get
Set
HttpContext. Current . Session (" Teacher_Name " ) = value
End Set
End Property
Public Shared Property Teacher_FirstName () As String
Get
If Not (HttpContext. Current . Session (" Teacher_FirstName " ) Is Nothing ) Then
Return HttpContext. Current . Session (" Teacher_FirstName " ). ToString
Else
Throw New SessionUndefinedException (" Teacher_FirstName " )
End If
End Get
Set
HttpContext. Current . Session (" Teacher_FirstName " ) = value
End Set
End Property
End Class
Public Class NewSchool
Public Shared Property School_Id () As Integer
Get
If Not (HttpContext. Current . Session (" School_Id " ) Is Nothing ) Then
Return Convert. ToInt32 (HttpContext. Current . Session (" School_Id " ))
Else
Throw New SessionUndException (" School_Id " )
End If
End Get
Set
HttpContext. Current . Session (" School_Id " ) = value
End Set
End Property
End Class
End Class
|
|
| auteur : Didier Danse |
Les applications .NET ont la possibilité de faire du "Process recycling". Le
Process recycling permet d'arrêter et de redémarrer une application si:
- elle est inactive (c'est à dire quand tous les clients ont atteint le timeout)
- elle consomme trop de ressources.
Si vous avez accès au fichier Machine.Config, il vous est possible de modifier le
processModel à votre guise (timeout, memoryLimit, maxIoThreads, ...)
|
| auteur : neguib |
Pour mieux comprendre, je vous propose 3 petites étapes qui, au final, vous permettront de traduire sans difficultés une chaine de caractères hexadecimaux; Ceci par l'utilisation notamment de la fonction FromHex de la classe System.Uri
1. Partons du principe qu'un byte est representé par une chaine de 2 caractères hexadecimaux.
Voici deux petites fonctions static verifiant pour nous si la longueur d'une chaine de caractères hexadecimaux est paire ou impaire, puis transformant la chaine hexadecimale en paires de caractères hexadecimaux:
Public Shared Function IsEven (ByVal hexString As String ) As Boolean
If (hexString. Length Mod 2 = 0) Then Return True Else Return False
End Function
Public Shared Function ToEvenByteStrings (ByVal hexString As String ) As String ()
If Not IsEven (hexString) Then hexString = " 0 " & hexString
Dim currentChar As Integer = 0
Dim index As Integer = 0
Dim max As Integer = hexString. Length
Dim byteStrings () As String = New String (Convert. ToInt32 (max / 2) - 1) {}
While (currentChar < max)
byteStrings (index) = hexString. Substring (currentChar, 2)
index + = 1
currentChar + = 2
End While
Return byteStrings
End Function
|
2. la fonction Uri.FromHex retourne la valeur décimale d'un caractère hexadécimal.
Utilisons-la donc pour nous retourner un byte pour une chaine de 2 caractères hexadecimaux:
Public Shared Function ToByteFromHex (ByVal byteString As String ) As Byte
Dim byte1 As Byte = Convert. ToByte (Uri. FromHex (byteString. Chars (0)))
Dim byte2 As Byte = Convert. ToByte (Uri. FromHex (byteString. Chars (1)))
Return Convert. ToByte ((byte1 * 16) + byte2)
End Function
|
3. Il nous reste à present à implementer la fonction qui nous retournera un tableau de byte quelquesoit la longueur de la chaine hexadecimale
Public Shared Function BytesFromHex (ByVal hexString As String ) As Byte ()
Dim bytes () As Byte = Nothing
Dim max As Integer = hexString. Length
If (max > 0) Then
If (max = 1) Then : bytes = New Byte () {ToByteFromHex (" 0 " & hexString)}
Else
Dim index As Integer = 0
Dim byteStrings () As String = ToEvenByteStrings (hexString)
Dim byteString As String
bytes = New Byte (byteStrings. Length - 1) {}
For Each byteString In byteStrings
bytes (index) = ToByteFromHex (byteString)
index + = 1
Next
End If
End If
Return bytes
End Function
|
Lors de l'utilisation de BytesFromHex, il faudra juste veiller à la possibilité d'un retour de valeur null en cas de chaine vide passée en paramètre.
|
lien : Méthode Uri.FromHex
|
| auteur : Didier Danse |
La solution est de créer une instance du type désiré. Pour savoir le type réel de l'objet, la méthode GetType() est de grande utilité. Ensuite, on charge l'Assembly "Forms" pour enfin modifier le Type de l'instance.
Public Shared Function ObjectToControl (ByVal obj As Object) As Control
Dim typeName As String = obj. GetType . ToString
Dim a As Assembly = Assembly. GetAssembly (GetType (Form))
Dim t As Type = a. GetType (typeName )
Dim c As Control = CType (Activator. CreateInstance (t), Control)
c = CType (Convert. ChangeType (obj, t), Control)
Return c
End Function
|
|
| auteur : neguib |
Voici quelques fonctions static qui vous permettront de convertir tout numerique entier en son equivalent chaine de caractères hexadécimaux, simplement en utilisant une surcharge de ToString() et le format X.
Transformation effective pour les types byte, UInt16, UInt32, UInt64
Public Shared Function ToHexString (ByVal [byte] As Byte) As String
Return [byte]. ToString (" X2 " , Nothing )
End Function
Public Shared Function ToHexString (ByVal [uint16] As UInt16) As String
Return [uint16]. ToString (" X4 " , Nothing )
End Function
Public Shared Function ToHexString (ByVal [uint32] As UInt32) As String
Return [uint32]. ToString (" X8 " , Nothing )
End Function
Public Shared Function ToHexString (ByVal [uint64] As UInt64) As String
Return [uint64]. ToString (" X16 " , Nothing )
End Function
|
Il ne vous reste qu'à prevoir la conversion pour les types restant SByte, short, int, long :
Public Shared Function ToHexString (ByVal [sbyte] As SByte) As String
Return ToHexString (Convert. ToByte ([sbyte]))
End Function
Public Shared Function ToHexString (ByVal [int16] As Short) As String
Return ToHexString (Convert. ToUInt16 ([int16]))
End Function
Public Shared Function ToHexString (ByVal [int32] As Integer) As String
Return ToHexString (Convert. ToUInt32 ([int32]))
End Function
Public Shared Function ToHexString (ByVal [int64] As Long) As String
Return ToHexString (Convert. ToUInt64 ([int64]))
End Function
|
|
lien : Tableau des formats des résultats numériques
|
| auteurs : doccpu, neguib |
Générer un évènement:
D'abord il faut créer les argument de l'evenement :
Imports System
Public Class MyEventArgs
Inherits EventArgs
Private myArg1 As Boolean
Private myArg2 As Integer
Public ReadOnly Property Arg1 As Boolean
Get
Return Me. myArg1
End Get
End Property
Public ReadOnly Property Arg2 As Integer
Get
Return Me. myArg2
End Get
End Property
Public Sun New (ByVal arg1 As Boolean, ByVal arg2 As Integer)
MyBase. New ()
Me. myArg1 = arg1
Me. myArg2 = arg2
End Sub
End Class
|
Il faut aussi un délégué pour typer l'évènement
Public Delegate Sub MyEventHandler (ByVal sender As Object, ByVal e As MyEventArgs );
|
Ensuite il faut créer l'évenement et déclencher les delegates inscrits dans l'evenement de la classe émétrice :
Public Class MyClass
Public Event MyEvent As MyEventHandler
Protected Overridable Sub OnMyEvent (ByVal e As MyEventArgs)
If Not (MyEvent Is Nothing ) Then RaiseEvent MyEvent (Me, e)
End Sub
End Class
|
Pour déclencher l'évenement à partir d'une methode de la classe émétrice :
boolValue As Boolean = True
intValue As Integer = 0
Me. OnMyEvent (New MyEventArgs (boolValue, intValue))
RaiseEvent MyEvent (Me, New MyEventArgs (boolValue, intValue))
|
Consommer un évènement
Enfin il faut créer et inscrire un délégué dans l'évènement pour que celui-ci soit appelé par la classe émétrice
Public Class Main
Private mc As New MyClass ()
Public Sub New ()
AddHandler Me. mc . MyEvent , AddressOf Me. MyDelegate
End Sub
Private Sub MyDelegate (ByVal sender As Object, Byval e As MyEventArgs)
End Sub
|
Remarques
- Un évènement est TOUJOURS multicast, on peut lui faire contenir plusieurs délégués.
- On ne peut pas changer les délégués contenus dans un évènement depuis du code extérieur à la classe émétrice si on ne connait pas le nom du délégué. La cause en est la méthode OnEvent qui masque le délégué EventHandler associé ce qui nous empeche d'obtenir la méthode GetInvocationList() du délégué associé à l'évènement.
|
| auteur : Ronald Vasseur |
Le namespace My est différent des autres namespaces dans le sens où il ne fait que rajouter une surcouche à des classes, des méthodes et des propriétés différentes. En effet, il offre des raccourcis vers de nombreuses fonctionnalités fréquemment utilisées par les développeurs. Par exemple, une action, nécessitant cinq ou six lignes de code n'en prendra plus qu'une ou deux grâce à l'emploi du namespace My, de plus, le niveau de complexité du code sera considérablement diminué. My n'est pas utilisable depuis C#. Voici un exemple d'utilisation de My pour lancer la lecture d'un fichier Wav directement depuis votre code.
My. Computer . Audio . Play (" c:\unFichier.wav " )
|
Il est difficile de faire plus court et plus simple !
|
| auteur : neguib |
Une solution pour récupérer une date à partir d'indications telles que
- le jour de la semaine
- le numéro de la semaine
- l'année
par exemple: "Quelle est la date du mercredi de la semaine 45 de l'année 2005?"
Imaginons pour cela un formulaire simple avec :
1. 1 NumericUpDown "jourValue" pour les jours de la semaine (1-7)
2. 1 NumericUpDown "semaineValue" pour les semaines de l'année (1-52)
3. 1 TextBox "AnneeValue" pour l'année
4. 1 Label "resultat"
5. 1 bouton "Valider"
Imports System
Private Const libelle As String = " Vous avez recherché : Le " ;
Private Sub Valider_Click (ByVal sender As Object, ByVal e As EventArgs) Handles Valider. Click
Dim lannee As Integer
With Me
With . anneeValue
If IsNumeric (. Text ) Then
lannee = CType (. Text , Integer)
Else : Exit Sub
End If
End With
Dim dateRef As New DateTime (lannee, 1, 1)
With . semaineValue
Dim week As Double = CType (. Value , Double)
If week > 1 Then dateRef = dateRef. AddDays ((week - 1) * 7)
End With
With . jourValue
Dim day As Double = CType (. Value , Double)
Dim j As Integer = CType ((dateRef. DayOfWeek ), Integer)
Select Case j
Case Is > day : dateRef = dateRef. AddDays (- (j - day ))
Case Is < day : dateRef = dateRef. AddDays (day - j)
End Select
End With
With . resultat
. Text = String . Empty
. Text & = libelle
. Text & = dateRef. ToLongDateString
End With
End With
End Sub
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2007
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|