quelle est la différence ?

Le
Titeuf
Bonsoir,
Tout est dans la question je pense,
Quelle est la différence entre

Dim mavariable as String
et
Static mavariable as String

Merci
Vos réponses
Trier par : date / pertinence
Jean-Marc
Le #15616591
"Titeuf" news:
Bonsoir,
Tout est dans la question je pense,
Quelle est la différence entre

Dim mavariable as String
et
Static mavariable as String




Hello,

Le mot static est utilisé pour déclarer une variable qui doit garder sa
valeur tout au long du programme. On l'utilise au sein des fonctions et
procédures pour déclarer une variable qui doit garder sa valeur d'appel
en appel, et ne pas être réinitialisée comme c'est le cas normalement.
C'est très utile dans de nombreux cas, par exemple pour protéger une
section de code qui ne doit être exécuté qu'une seule fois:

Private Sub ProcBidule()
Static dejaInitialise As Boolean

If dejaInitialise Then
' on est deja passé au moins une fois dans la procedure
Else
' faire un eventuel traitement d'initialisation
' et s'en rappeler
dejaInitialise = True
End If
End Sub


L'utilisation de Static évite l'utilisation des globales, qui sont à
éviter dans la mesure du possible.

Notes:
- une static de type numérique (integer, long, etc) est initialisée à 0.
- une static de type booléen est initialisée à FALSE.

On peut aussi utiliser les statics pour faire un compteur de passe, etc.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Lorex
Le #15616581
Salut,

"Dim" est un mot réservé pour le VB, qui permet de définir l'idée suivante:
"ce qui suit sont des variables public que l'on souhaite déclarées, (avec un
type, mais c'est autre chose...)"
"Static" définit la même idée, mais comme on utilise un mot différent, c'est
qu'il y a une différence. Elle est où ? Est bien voilà,...

Une variable possède un champ de visibilité qui est fonction de la position
où se trouve le mot clef "Dim/Static". Dans cette zone de visibilité:
- "Dim" déclare que la variable peut-être écrasée et l"espace mémoire
qu'elle utilise peut-être utilisé pour une autre variable;
- "Static" déclare que la variable ne doit pas perdre sa valeur lorsque l'on
sort de son champ de visibilité, et qu'en plus, elle doit garder sa valeur
lorsque l'on retourne dans son champ de visibilité.

Essaye de compiler le prog. qui suit, tu verras la différence dans la
fenêtre de debug...

PRIVATE SUB main()

DIM lgTmp AS LONG

FOR lgTmp=1 TO 10
execDelta
NEXT lgTmp
END SUB

PRIVATE SUB execDelta()
DIM lgValDim AS LONG
STATIC lgValStatic AS LONG

lgValDim=lgValDim+1
lgValStatic=lgValStatic+1

DEBUG.PRINT "dim value: " & cstr(lgValDim)
DEBUG.PRINT "static value: " & cstr(lgValStatic)
END SUB

A+

Laurent
"Titeuf" news:
Bonsoir,
Tout est dans la question je pense,
Quelle est la différence entre

Dim mavariable as String
et
Static mavariable as String

Merci




Adam Pietrasiewicz
Le #15616561
W ¶rodê 29-grudnia-2004 o godzinie 22:42:49 Jean-Marc napisa³/a

L'utilisation de Static évite l'utilisation des globales, qui sont a
éviter dans la mesure du possible.



Je me demande toujours si ce n'est pas une legende pour les
programmeurs debutants. J'utilise les variables globales et cela ne
m'a jamais pose de probleme.

Je voudrais donc lire une explication precise de cette mise en
garde...


--
Pozdrawiam
Adam Pietrasiewicz
ng
Le #15616531
Salut,

Comme en C++ static definit une variable (au sein d'une fonction) avec une
adresse constante qui n'est initialisée qu'une fois, exemple :

Public Sub TestDim()
Dim dwVar As Long
dwVar = dwVar + 1
Debug.Print "TestDim : " & dwVar
End Sub

Public Sub TestStatic()
Static dwVar As Long '//initialisé à 0
dwVar = dwVar + 1
Debug.Print "TestStatic : " & dwVar
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Titeuf wrote:
Bonsoir,
Tout est dans la question je pense,
Quelle est la différence entre

Dim mavariable as String
et
Static mavariable as String

Merci


Patrice Henrio
Le #15616401
Static est une variable locale, donc visible uniquement dans sa procédure,
mais qui garde sa valeur d'un appel à l'autre.

"ng"
Salut,

Comme en C++ static definit une variable (au sein d'une fonction) avec une
adresse constante qui n'est initialisée qu'une fois, exemple :

Public Sub TestDim()
Dim dwVar As Long
dwVar = dwVar + 1
Debug.Print "TestDim : " & dwVar
End Sub

Public Sub TestStatic()
Static dwVar As Long '//initialisé à 0
dwVar = dwVar + 1
Debug.Print "TestStatic : " & dwVar
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Titeuf wrote:
Bonsoir,
Tout est dans la question je pense,
Quelle est la différence entre

Dim mavariable as String
et
Static mavariable as String

Merci






ng
Le #15616371
Oui.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Patrice Henrio wrote:
Static est une variable locale, donc visible uniquement dans sa
procédure, mais qui garde sa valeur d'un appel à l'autre.

"ng"
Salut,

Comme en C++ static definit une variable (au sein d'une fonction)
avec une adresse constante qui n'est initialisée qu'une fois,
exemple : Public Sub TestDim()
Dim dwVar As Long
dwVar = dwVar + 1
Debug.Print "TestDim : " & dwVar
End Sub

Public Sub TestStatic()
Static dwVar As Long '//initialisé à 0
dwVar = dwVar + 1
Debug.Print "TestStatic : " & dwVar
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Titeuf wrote:
Bonsoir,
Tout est dans la question je pense,
Quelle est la différence entre

Dim mavariable as String
et
Static mavariable as String

Merci






Publicité
Poster une réponse
Anonyme