Page 1 sur 1

[R] Etablir valeure nulle

Posté : dim. 21 août 2011 22:21
par MrGuiGeeK
Bonjour à tous !

Voila je suis en train de rédiger un script permettant grâce a l'entrée de données à propos d'un graphe d'obtenir des informations sur celui-ci

Donc pour déclarer les sommets j'ai utilisé ceci:

Code : Tout sélectionner

;Déclartaion variable nombre de sommets
Dim $sommets

;Déclaration variable sommets et d'arretes
Dim $s1
Dim $s2
Dim $s3
Dim $s4
Dim $s5
Dim $s6
Dim $s7
Dim $s8
Dim $s9
Dim $s10
s1 etc... contiennent le nombre d' arrêtes de chaque sommets
A la fin je veux afficher une MsgBox contenant un récapitulatif des infos saisies. donc j'utilise ce code:

Code : Tout sélectionner

MsgBox(0, "InfoGraphe", "Récapitulatif des données enregistrées:" & @CRLF & "Nombre de sommets: " & $sommets & @CRLF & "Arrêtes du sommet 1: " & $s1 & @CRLF & "Arrêtes du sommet 2: " & $s2 & @CRLF & [...] "Arrêtes du sommet 10: " & $s10 & @CRLF & "Fin")
Je voulais savoir si il existait un moyen pour que toutes les variable Dim n'ayant pas étés définies soient toutes définies d'un coup. Je pense à un script dans ce genre:

Code : Tout sélectionner

If $s8 = NON DEFINIE Then
$s8 = "Valeur non définie"
EndIf
Merci d'avance pour votre aide !

Re: [..] Etablir valeure nulle

Posté : dim. 21 août 2011 22:30
par moi
quand tu dıs non défınıes tu veut dıre sans valeur? non?

sı c'est ça ... la var = ""

donc
MrGuiGeeK a écrit :

Code : Tout sélectionner

If $s8 = NON DEFINIE Then
$s8 = "Valeur non définie"
EndIf
tu faıs

Code : Tout sélectionner

If $s8 = "" Then
$s8 = "Valeur non définie"
EndIf
la tu faıs ça avec toute les varıables puıs t utılıse ton msgbox

Re: [R] Etablir valeure nulle

Posté : dim. 21 août 2011 22:31
par MrGuiGeeK
Oui sans valeur

Merci bien c'est exactement ce que je recherchait ;)
Je vous fait partager le script dès qu'il est finit

Re: [..] Etablir valeure nulle

Posté : lun. 22 août 2011 00:31
par Tlem
Hummm, à partir du moment ou vous rajouter la déclaration Dim en début de code, votre variable est automatiquement initialisée (à une valeur nulle).
Voir pouvez simplifier votre déclaration comme ceci :

Code : Tout sélectionner

Dim $s1, $s2, $s3, $s4, $s5, $s6, $s7, $s8, $s9, $s10
Sinon, pour tester si une variable est déclarée ou pas, c'est IsDeclared que l'on utilise :

Code : Tout sélectionner

If Not IsDeclared("s8") Then
    MsgBox(0, "", "La variable $s8 n'est pas déclarée")
EndIf
Mais bon, je ne sais pas si ce que vous cherchez est la déclaration ou l'initialisation. Mais les réponses que je viens de vous donner devraient suffire à faire la différence. ^^

Re: [..] Etablir valeure nulle

Posté : lun. 22 août 2011 01:17
par mikell
ça c'est pour tester l'initialisation :mrgreen:

Code : Tout sélectionner

$text = ""
Dim $s1, $s2="2", $s3, $s4="4", $s5, $s6="6", $s7, $s8="8", $s9, $s10="10"

For $i = 1 to 10
If Eval("s" & $i) = "" Then $text &= "variable " & $i & "= non définie" & @CRLF
Next

MsgBox(0,"", $text)

Re: [..] Etablir valeure nulle

Posté : lun. 22 août 2011 07:43
par TommyDDR
Et dieu inventa les tableau.

Rappel : Dans 99.99999% des cas, si vous avez des noms de variables contenant un nombre qui s'incrémente, c'est que vous devez utiliser un tableau.

Code : Tout sélectionner

Global $s[10] (10 sommets allant de $s[0] à $s[9])
Comme ça, avec un tableau, vous pouvez facilement mettre VOTRE valeur par défaut :

Code : Tout sélectionner

For $i = 0 To 9
    $s[$i] = "NULL"
Next

Re: [..] Etablir valeure nulle

Posté : lun. 22 août 2011 08:28
par MrGuiGeeK
Donc en clair ce serait plus facile de déclarer un tableau (ayant un nombre $nbsommets pour dimension) ce qui permettrai déja de supprimer la limitation du nombre de sommet précédemment établie à 10.
Et en fait je pense que je vais trouver un moyen pour que dans la MsgBox seul les variables qui ont été initialisées (donc qui on pris une valeur si je ne me trompe pas), mais si j'utilise un tableau il me suffira de demander d'afficher les valeurs du tableau.