Testen auf Existenz / mehrfaches Definieren einer Variable?
Verfasst: 23 Aug 2013, 20:18
Hallo zusammen,
ich verwende oft generische Unterprogramme, welche in separaten Files stehen ("sub Pfad_Zum_Subfile") und meistens werden in diesen Subs "lokale" Variablen gesetzt. Sobald eine solche Sub mehrfach benutzt wird, bekomme ich das Problem, dass WInst beim zweiten Aufruf einen Fehler generiert, weil die Variable schon existiert. Z.B. sieht mein globales Sub-File fuer die Installation eines MSI-Paketes so aus ("$_msipack" und "$_msiopts" muessen vor dem Aufruf deklariert werden, "$__msicmd" wird komplett innerhalb der Funktion gemanagt):
Bei der Installation eines zweiten MSI-Paketes innerhalb eines OPSI-Paketes gibt es einen Fehler, weil "$__msicmd" bereits deklariert ist.
Dies koennte man verhindern, indem
Gruss
frank
ich verwende oft generische Unterprogramme, welche in separaten Files stehen ("sub Pfad_Zum_Subfile") und meistens werden in diesen Subs "lokale" Variablen gesetzt. Sobald eine solche Sub mehrfach benutzt wird, bekomme ich das Problem, dass WInst beim zweiten Aufruf einen Fehler generiert, weil die Variable schon existiert. Z.B. sieht mein globales Sub-File fuer die Installation eines MSI-Paketes so aus ("$_msipack" und "$_msiopts" muessen vor dem Aufruf deklariert werden, "$__msicmd" wird komplett innerhalb der Funktion gemanagt):
Code: Alles auswählen
DefVar $__msicmd
Set $__msicmd = "msiexec"
If not (FileExists($_msipack))
Pause "SORRY, could not find " + $_msipack + ". Please report this problem to structures-it@embl.de"
IsFatalError
else
Set $__msicmd = $__msicmd + " /i" + '"' + $_msipack + '"' +" /passive " + $_msiopts
WinBatch_MSIInstall
endif
[WinBatch_MSIInstall]
$__msicmd
Dies koennte man verhindern, indem
- mehrfaches Deklarieren einer Variable von WInst schweigend ignoriert wird
- man die Existenz einer Variable testen kann (if (isDefined ($__msicmd)) ...)
- man eine Variable loeschen kann (UnDefVar $__msicmd)
Gruss
frank