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

VB 6 et antérieur Discussion :

point d'exclamation avant le nom de la variable


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 13
    Points
    13
    Par défaut point d'exclamation avant le nom de la variable
    Bonjour,
    Je ne suis pas un expert en VB pour ne pas dire que je suis null, j'ecris en C, PHP, JAVA...
    j'ai recupere une application ecrite en VB. J'ai des nom de variables qui commencent par un point d'exclamation. Je ne trouve pas pour quelle raison il est necessaire de mettre un point d'exclamation avant le nom, du genre:
    !DirFileRec

    Est-ce quelqu'un peut me dire pour quelle raison? Une autre chose, je ne trouve pas l'endroit ou ils ont ete initialise dans l'application. Peuvent-ils faire partit d'une bibliotheque?

    Merci d'avance.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    le point d'exclamation devant le nom de variable est une méthode Vb (que d'aucuns ont oubliée) pour lui attribuer le type single

    Tu peux l'enlever, mais il te faut alors déclarer son type, du genre :

    dim toto as single

    au lieu de

    !toto

    idem pour les $ (type string) etc....

  3. #3
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il s'agit de propriètés d'un objet
    Vous devez avoir probablement un peu plus haut dans le code, une instruction du genre

    With MonObjet

    et plus bas un

    End With

    entre les deux, vous pouvez utiliser
    .MaPropriété = mavaleur

    en lieu et place de MonObjet.MaProprièté = mavaleur

    L'utilisation du point d'exclamation est réservé aux objet Dao( et peut être Ado mais la j'en suis pas sur) et le nom derriere le le point d'exclamation est alors le nom du champs.
    C'est une syntaxe peu utilisée. personellement je ne l'aime pas beaucoup.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
      Dim Db As Database
      Dim Rs As Recordset
      Set Db = OpenDatabase("C:\Fairco\Bons\BaseAiv.mdb")
      Set Rs = Db.OpenRecordset("Bons Livraison")
      With Rs
        If .RecordCount > 0 Then
          Print !ChronoBl
          'equivalent à : Print Rs("ChronoBl")
        Else
          MsgBox "Pas d'enregistrement"
        End If
      End With
      Rs.Close
      Db.Close
    J'espere que cela vous aideras
    Salutations.


  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    sans en etre sur a 100 %, il me semble que l'utilisation du ! pour marquer le type d'une variable (comme l'indique jmfmarques ) se faisait en mettant le ! derrière le nom de la variable
    Exemple :

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Mais du tout, Delbeke, pas du tout ...

    Crois en un vieux de la vieille qui (pour ses propres applications rigoureusement personnelles ou celles dont il ne distribue que l'exécutable), préfère continuer avec cette méthode de "typage", pour plusieurs raisons...

    Mais il te suffit de frapper ! dans l'aide en ligne... et de lire....
    ou encore frapper single et... lire ceci :
    The type-declaration character for Single is the exclamation point (!).
    ou frapper string et trouver ceci :
    The type-declaration character for the String data type is $.
    etc... etc...

    Mais OUI : ces caractères de typage se mettent à la fin du nom de variable et pas au début.

    J'ajoute que les choses revêtent un aspect différent dans une SQL où l'emploi du ! a une autre signification et ne s'applique pas à un nom de variable mais à des caractères de recherche.

  6. #6
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Oui, jmfmarques, dans une requete sql, le ! est utile, mais ce n'est pas le problème soulevé par khamed

    Et en apparté, je pratique Vb depuis sa version deux en sortant de MsBasic où c' était la seule façon de typer une variable. Content de rencontrer un autre vétéran

    salutations

  7. #7
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Bonjour khamed et bienvenue sur le forum

    Suis d'accord avec jmfmarques, les caractères de typage se placent à la fin du nom de variable et sont de moins en moins utilisés (sauf par les vieux de la vieille - pas la guerre mais la programmation en basic...).

    Si tu nous montrais un p'tit bout de code pour situer le contexte de l'utilisation du point d'exclamation. Car vois-tu dans certains cas (programmation avec Excel, par exemple), le point d'exclamation sert dans une référence complète d'une cellule dans une feuille de calcul dans un classeur...

    Alors, tu voix, sans le contexte, on peut spéculer sur n'importe quoi pour la cause et la solution. Mais avec un nom de variable comme DirFileRec, on peut déja supposer qu'il y est question d'un répertoire, d'un fichier et d'un enregistrement... mais lequel précisément...

  8. #8
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Bien vu zazaraignée, j'y avais pas pensé.

    salutations

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 13
    Points
    13
    Par défaut une partie du code
    Bonjour,
    la discussion est tres interessante...

    je vous copie une partie du code VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Private Sub ReceptionSMTP(ByRef rsReceptions As ADODB.Recordset)
    Dim SizeEmailIN As Long
    Dim TotalSizeEmailIN As Long
    Dim pop As NYEMailLib.NYEMPop
    Dim strMailFile As String
    Dim nbEmail As Long
    Static savPopServer As String
    Static savPopUser As String
     
    On Error GoTo ErrSMTPOUT
    With rsReceptions
    If (savPopServer <> !PopServer) Or (savPopUser <> !PopUser) Then
        savPopServer = !PopServer
        savPopUser = !PopUser
        Set pop = New NYEMailLib.NYEMPop
        pop.Open !PopServer
        pop.Logon !PopUser, !PopPassword
     
        CreateDirIfNotExistsWithVerif !DirFileRec
        TotalSizeEmailIN = pop.TotalSize
        For nbEmail = 0 To pop.NbMsg - 1
            strMailFile = CreateTempFile(!DirFileRec, "SMTP", "eml")
            AddMessageETTextEmailReport "*Récept SMTP " + !PopUser + " -> " + strMailFile
            pop.RetrieveFile nbEmail, strMailFile
            SizeEmailIN = pop.MsgSize(nbEmail)
    ''        If WithNotary Then
    ''            Notary.Notarize strMailFile, !NomPartenaireIN + ":" + !PopUser, !PopServer, nyReception, " (" + CStr(SizeEmailIN) + " oct.)"
    ''        End If
            pop.Delete nbEmail
        Next nbEmail
    ErrSMTPOUT:
        If Err.Number <> 0 Then
            If WithNotary Then
                Dim strStep As String
                strStep = "Recept. SMTP"
                Select Case Err.Number
                    Case NYEMailLib.nyemPopErrorCanNotConnectToServer
                        Notary.AddTrace nyerror, Err.Number, "[" + Err.Source + "] " + "Impossible de se connecter au serveur POP", strStep
                    Case NYEMailLib.nyemPopErrorInvalidPassword
                        Notary.AddTrace nyerror, Err.Number, "[" + Err.Source + "] " + "Nom et/ou Mot de passe de connexion au serveur POP invalide", strStep
                    Case NYEMailLib.nyemPopErrorInvalidUser
                        Notary.AddTrace nyerror, Err.Number, "[" + Err.Source + "] " + "Nom de connexion au serveur POP invalide", strStep
                    Case NYEMailLib.nyemPopErrorServerAddressNotFound
                        Notary.AddTrace nyerror, Err.Number, "[" + Err.Source + "] " + "Impossible de trouver l'adresse du serveur POP", strStep
                    Case Else
                        Notary.AddTrace nyerror, Err.Number, "[" + Err.Source + "] " + Err.Description, strStep
                End Select
            End If
        End If
        Err.Clear
        On Error Resume Next
        pop.Quit
        Set pop = Nothing
    End If
    End With
    End Sub

  10. #10
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il semble bien que !PopServer !PopUser !PopPassword etc soientt des champs du recordset RsReceptions

    Tu pourrais modifier toutes les occurences par les !PopServer et !PopUser des .("PopServer") ou des .("PopUser")
    Personellement je préfére cette ecriture, mais chacun son style

  11. #11
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Non, desolé je dit des conneries.
    on ne peut pas faire les .("PopUser") comme je l'ai dit.
    parceque la syntaxe pour acceder au contenu du champs c'est RsReceptions("PopUser") . Il n'y a pas de point dans cette syntaxe car c'est une syntaxe abrégée. la syntaxe complete est RsReceptions.Fields("PopUser").value
    on pourait , si on veut utiliser le with / end width, .Fields("PopUser")

    Note :
    la collection fields est la propriété par defaut d'un objet recordset
    ce qui permet de simplier RsReceptions.Fields("PopUser").value en RsReceptions("PopUser").value
    la propriété value est la propriété par defaut de l'objet Field, ce qui permet d'abréger RsReceptions("PopUser").value en RsReceptions("PopUser")

    voila , j'epere que j'ai été assez clair

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Merci
    Ce fut tres instructif.

    Je vous remercis pour votre participation.

    Cordialement.

  13. #13
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par jmfmarques
    le point d'exclamation devant le nom de variable est une méthode Vb (que d'aucuns ont oubliée) pour lui attribuer le type single
    Citation Envoyé par jmfmarques
    Mais OUI : ces caractères de typage se mettent à la fin du nom de variable et pas au début

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Un tout petit dictionnaire, peut-être, pour vérifier que l'expression "Mais OUI" a une signification (corriger une erreur, entre autres)... surtout lorsque le OUI est ainsi accentué...et suivi du signe :
    Nous sommes sur un forum francophone, non ?

  15. #15
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    N'oubli pas le TAG
    Bonne continuation à tous

Discussions similaires

  1. Réponses: 10
    Dernier message: 04/11/2006, 19h16
  2. A quoi sert le point dans le nom de la variable en URL
    Par ran_hery dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/07/2006, 13h38
  3. [Mail] envoi par mail : pb de point d'exclamation
    Par Faure dans le forum Langage
    Réponses: 12
    Dernier message: 20/03/2006, 13h02
  4. Réponses: 6
    Dernier message: 16/03/2006, 13h17
  5. pb de point d'exclamation dans le gestionnaire de périphériq
    Par loveflower dans le forum Périphériques
    Réponses: 21
    Dernier message: 20/01/2006, 11h43

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