Accueil > > > PROFIL BINAIRE D'UN OBJET
PROFIL BINAIRE D'UN OBJET
Information sur la source
Description
Ce qu'on veut : stocker (entrée - sortie) dans 1 variable (1 colonne de 1 ligne de BdD) un ensemble de variables booléennes = le Profil de d'un Objet. ex : - le profil d'un étudiant qui est inscrit dans 0-31 cursus. - le profil d'une voiture qui peut avoir jusqu'à 63 options ou aucune Comment on fait ? on passe par une série de conversions en entrée : N Booléens, 1 Numérique en sortie : 1 numérique, 1 Binaire, N String mis en forme On a seulement besoin du catalogue des options (ici pour la simplicité, un array)
Source
- Private arrayProfil() As String = {"Las Vegas", "Russe", "modestie", "géographie", "médecine", "PHP", "Humour", "VTT"}
- Private nbOptions As Integer = arrayProfil.Length
- Private longProfil As ULong = 0
-
- ' ===== 1) On affiche le catalogue des BOOLEENS :
- Sub Form_Load (...)
- Dim i As Integer
- Dim top As Integer = 10
- Dim c As ULong = 1
- Dim chb As CheckBox
- For i = 0 To UBound(arrayProfil)
- chb = New CheckBox
- chb.Tag = c
- chb.Text = arrayProfil(i)
- chb.Top = top
- chb.Left = 10
- top += chb.Height
- ' attention au dépassement de capacité !
- If i < nbOptions - 1 Then c *= 2
- Controls.Add(chb)
- Next
- End Sub
-
- ' ===== 2) On capte le profil NUMERIQUE :
- Sub Profil_in(...)
- longProfil = 0
- Dim ctl As Control
- Dim chb As CheckBox
- ' profil = somme des CheckBox.Checked
- For Each ctl In Controls
- If TypeOf ctl Is CheckBox Then
- chb = ctl
- If chb.Checked Then longProfil += CType(chb.Tag, ULong)
- End If
- Next
- ' et là, on enregistre le profil dans 1 colonne de SQLServer (bigint) ou Access (Long) ...
- End Sub
-
- ' ===== 3) On Affiche le profil STRING :
- Sub Profil_out(...)
- ' ok, on a extrait de la BdD le Profil (longProfil) du sujet en question ...
- Dim Sujet As String = "Marcel TCHCONST"
- Dim strProfil As String = ""
- Dim binProfil As String = ""
- ' Conversion NUMERIQUE > BINAIRE :
- binProfil = CBinaire(longProfil)
- If longProfil = 0 Then
- MsgBox("ne s'intéresse à rien !", 16, Sujet)
- Exit Sub
- End If
- ' Conversion BINAIRE > BOOLEEN > STRING :
- For i = 1 To nbOptions
- strProfil &= IIf(CBool(Mid(binProfil, i, 1)), arrayProfil(i - 1) & ", ", "")
- Next
- ' mise en forme sophisticated :
- ' cad: remplacement des derniers caractères par "." et remplacement de la dernière virgule par "et" :
- Dim ToTrim() As Char = {",", " "}
- strProfil = strProfil.Trim(ToTrim) & "."
- Dim pos_virgule As Integer = InStrRev(strProfil, ",")
- If pos_virgule Then
- strProfil = Mid(strProfil, 1, pos_virgule - 1) & " et" & Mid(strProfil, pos_virgule + 1)
- End If
- MsgBox("est champion de : " & vbCr & strProfil, 64, Sujet)
- End Sub
-
- ' ===== La Conversion en Binaire :
- Private Function CBinaire(ByVal _Val As ULong) As String
- Dim strBin As String = ""
- Dim invBin As String = ""
- ' 1) Convertir en binaire :
- Do
- Try
- strBin = (_Val Mod 2).ToString & strBin
- _Val \= 2
- Catch ex As OverflowException
- MsgBox(ex.Message)
- End
- End Try
- Loop Until _Val = 0
- ' 2) compléter à gauche avec des Zéros :
- strBin = strBin.PadLeft(nbOptions, "0")
- ' 3) et inverser :
- Return StrReverse(strBin)
- End Function
Private arrayProfil() As String = {"Las Vegas", "Russe", "modestie", "géographie", "médecine", "PHP", "Humour", "VTT"}
Private nbOptions As Integer = arrayProfil.Length
Private longProfil As ULong = 0
' ===== 1) On affiche le catalogue des BOOLEENS :
Sub Form_Load (...)
Dim i As Integer
Dim top As Integer = 10
Dim c As ULong = 1
Dim chb As CheckBox
For i = 0 To UBound(arrayProfil)
chb = New CheckBox
chb.Tag = c
chb.Text = arrayProfil(i)
chb.Top = top
chb.Left = 10
top += chb.Height
' attention au dépassement de capacité !
If i < nbOptions - 1 Then c *= 2
Controls.Add(chb)
Next
End Sub
' ===== 2) On capte le profil NUMERIQUE :
Sub Profil_in(...)
longProfil = 0
Dim ctl As Control
Dim chb As CheckBox
' profil = somme des CheckBox.Checked
For Each ctl In Controls
If TypeOf ctl Is CheckBox Then
chb = ctl
If chb.Checked Then longProfil += CType(chb.Tag, ULong)
End If
Next
' et là, on enregistre le profil dans 1 colonne de SQLServer (bigint) ou Access (Long) ...
End Sub
' ===== 3) On Affiche le profil STRING :
Sub Profil_out(...)
' ok, on a extrait de la BdD le Profil (longProfil) du sujet en question ...
Dim Sujet As String = "Marcel TCHCONST"
Dim strProfil As String = ""
Dim binProfil As String = ""
' Conversion NUMERIQUE > BINAIRE :
binProfil = CBinaire(longProfil)
If longProfil = 0 Then
MsgBox("ne s'intéresse à rien !", 16, Sujet)
Exit Sub
End If
' Conversion BINAIRE > BOOLEEN > STRING :
For i = 1 To nbOptions
strProfil &= IIf(CBool(Mid(binProfil, i, 1)), arrayProfil(i - 1) & ", ", "")
Next
' mise en forme sophisticated :
' cad: remplacement des derniers caractères par "." et remplacement de la dernière virgule par "et" :
Dim ToTrim() As Char = {",", " "}
strProfil = strProfil.Trim(ToTrim) & "."
Dim pos_virgule As Integer = InStrRev(strProfil, ",")
If pos_virgule Then
strProfil = Mid(strProfil, 1, pos_virgule - 1) & " et" & Mid(strProfil, pos_virgule + 1)
End If
MsgBox("est champion de : " & vbCr & strProfil, 64, Sujet)
End Sub
' ===== La Conversion en Binaire :
Private Function CBinaire(ByVal _Val As ULong) As String
Dim strBin As String = ""
Dim invBin As String = ""
' 1) Convertir en binaire :
Do
Try
strBin = (_Val Mod 2).ToString & strBin
_Val \= 2
Catch ex As OverflowException
MsgBox(ex.Message)
End
End Try
Loop Until _Val = 0
' 2) compléter à gauche avec des Zéros :
strBin = strBin.PadLeft(nbOptions, "0")
' 3) et inverser :
Return StrReverse(strBin)
End Function
Conclusion
On pourrait utiliser une propriété Profil de type String en concaténant des 1 et des 0. Faut juste savoir que pour SQL Server ou Access, 1 ligne d'un profil de 63 options occupe 128 octets pour un type String et seulement 8 octets pour un type ULong. Maintenant, la question n'est pas : on fait comment au delà de 63 options = on utilise un catalogue supplémentaire. La question est : comment on note toutes ces options en 1 fois ? TCHCONST
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Base de registre [ par Steph21 ]
J'aimerai extraire de la base de registre une donnée binaire. J'ai trouvé sur ce site comment le faire avec d'autres types de données mais pas avec du
Calcul binaire [ par kequo ]
peut on faire du calcul binaire avec VB? si oui comment
Ecriture dans un fichier binaire avec la methode getchunk du controle inet [ par Yves ]
Lorsque je mets les données récupérées avec getchunk dans une variable pour les sauvegarder dans un fichier binaire,VB ajoute deux octets (a chaque éc
MSComm en binaire [ par OCh ]
L'aide en ligne donne un exemple de lecture binaire du port serie quine fonctionne pas:dim buffer as variantdim Arr( ) as bytebuffer=MSComm1.InputArr=
Cryptage de fichiers executables [ par Clovis ]
Salut! Voila mon pb, j'ai fait un logiciel de cyptage, il code bien les fichiers texte, mais quand on passe aux fichiers executables ou meme aux image
Binaire [ par funny ]
recherche une formule pour changer les decimales en Binaire
Conversion Ascii ou Hex en Binaire [ par FOX ]
Bonjour,existe t-il une fonction pour convertir des données Ascii ou Héxadecimal en Binaire. Ou quelqu'un à t-il déja un dico de conversion.Mercisebas
ACCES BINAIRE (AIDEZ MOI !!!!!) [ par flint(levrai!!!) ]
sltcomment faire pour "puter" un octet sur un byte précis en accés binaire ?mercibye
Copier/Coller un fichier binaire d'un ListView vers le presse-papier [ par Schum ]
Je cherche à faire ce qui est marqué dans le titre.Je ne vois pas comment... HELP ME
masque binaire en VB [ par Rurouni ]
bonjoury a t il moyen de faire un masque binaire en VB?Y a des fonctions qui font ca?Merci
|
Derniers Blogs
ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0 par Philess
L'extensibilité du Team Web Access
Le Web Access (site d'équipe) de Team Foundation Server a été complètement réécrit dans la version 2012 avec pas moins de 400.000 lignes de JavaScript. Ce nouveau modèle a été pensé pour offrir de grandes...
Cliquez pour lire la suite de l'article par Philess SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|