www.IT-Visions.de-Diskussionsforen (Version 2.1)
(Diese Seite wurde noch nicht auf das neue Layout umgestellt!)


Diese Foren stehen den Lesern unserer Bücher und allen anderen registrieren Benutzern dieser Website zur Verfügung. Wir würden uns freuen, wenn viele Nutzer dieser Website hier nicht nur Fragen stellen, sondern auch die Fragen anderer Nutzer beantworten. Diese Foren sind ein ehrenamtlicher, nicht-kommerzieller, unmoderierter Community-Dienst von www.IT-Visions.de. Wenn Sie kommerzielle Unterstützung für .NET/Scripting/PowerShell suchen, schauen Sie bitte auf unser Support-Angebot und unsere Schulungsangebote für Scripting und Schulungsangebote für .NET.



Re: Case-Anweisung
Autor:  MarkusDolhaine
E-mail:  Antworten bitte nur in das Forum!
Datum:  28.03.2010 08:54:05
Subject:  Re: Case-Anweisung
Bezug zum Buch: 
Message:  Meine Nachricht:
----------------
Hallo Christian,
ich kann die Ursache nur vermuten - aber ich kann eine Lösung anbieten.
- Ursache: Lt. Vb-Script Sprachreferenz (aktuell http://msdn.microsoft.com/en-us/library/6ef9w614%28VS.85%29.aspx) ist die Case-Anweisung nur gültig mit numerischen Testausdrücken oder mit String-Ausdrücken. Du verwendest in deinem Fall boole'sche Ausdrücke.

- Lösung: Da glücklicherweise die Anzahl deiner möglichen Optionen recht gering ist (die Werte von null bis sieben), kannst du diese als einzelne, numerische Werte aufzählen - und den Fall (> 7) als else-Zweig der Case-Anweisung verwenden. Ich habe dein Beispiel einmal so umgestellt:

=============== Code ===================
Datum = CDate(Date+8)
LogDatum = CDate("14.02.2010")
Diff = 0
'wscript.echo diff

Diff = CInt(DateDiff("d", LogDatum, Datum))
'wscript.echo diff

Select Case Diff
    Case 0                                  
        Wscript.Echo("Sicherung nicht gestartet, da heute schon gesichert wurde!!")
        Diff = Empty     
        WScript.Quit
    Case 1, 2, 3, 4, 5, 6, 7
        Wscript.Echo("Diff " & Diff & ": > 0 und < 7")
    Case Else
        wscript.echo("Diff " & Diff & ": >= 7")
        'objFSO.DeleteFolder(BAKPfad & geradeWoche)
End Select
=============== Code ===================



Ich beziehe mich auf folgenden Beitrag:
---------------------------------------

Hallo zusammen

bin gerade dabei mir das Scripting anzueignen und bin dabei auf einen komischen Fehler gestoßen, vielleicht hab ich aber auch nur einen Verständisfehler oder eine Kleinigkeit übersehen:

=============== Code ===================
Datum = CDate(Date+8)
LogDatum = CDate("14.02.2010")
Diff = 0
'wscript.echo diff

Diff = CInt(DateDiff("d", LogDatum, Datum))
'wscript.echo diff

Select Case Diff = CInt(DateDiff("d", LogDatum, Datum))
    Case (Diff >= 7)                                 
        wscript.echo("Diff " & Diff & ": >= 7")
        'objFSO.DeleteFolder(BAKPfad & geradeWoche)
    Case (Diff > 0) And (Diff < 7)
        Wscript.Echo("Diff " & Diff & ": > 0 und < 7")
    Case (Diff = 0)                                  
        Wscript.Echo("Sicherung nicht gestartet, da heute schon gesichert wurde!!")
        Diff = Empty     
        WScript.Quit
End Select
=============== Code ===================

Wenn ich eine der beiden Berechnungen von Diff weglassen, funktioniert das Script nicht und somit ist Diff lt. der Case-Anweisung immer >= 7!!!
Eigentlich bin ich davon ausgegangen, dass wenn Diff bereits ein Wert zugewiesen wurde, dass ich mit 'Select Case Diff' nicht noch einmal eine Berechnung anstellen muss, aber erst dann funktionierts??!!

Kann ich 'CInt()' dazu zwingen, immer eine positive Zahl zu liefern?

Ich danke euch
Christian

Antworten

  Zurück zum Forum



 Klassische Programmierung (Scripting, COM) -- Windows Scripting, VBScript, VB6, u.a.
 Case-Anweisung von ChristianOtt  am 16.2.2010 9:04:35 AM
 Re: Case-Anweisung von MarkusDolhaine  am 28.3.2010 8:54:05 AM


www.IT-Visions.de - Dr. Holger Schwichtenberg / 1998-2022