# WinCCFlex Skript zum Datum einer Datei auslesen



## Paule (9 September 2009)

Hallo Kolleginnen und Kollegen.

Software: WinCC Flex 2008 SP1
Hardware: MP377 

Ziel:
Ich möchte das aktuelle Datum der Backupdatei lesen und möchte es mit dem aktuellen Projektstand vergleichen.

Lösung:
Versuche jetzt erst mal nur die Backupdatei zu lesen:

```
[COLOR=royalblue][COLOR=black]1[/COLOR]. Dim[/COLOR] datei, fso, d, s
2. datei = "\Storage Card MMC\FlashBoot_MP377_12Touch\nk.nb0"
[COLOR=royalblue][COLOR=black]3.[/COLOR] Set[/COLOR] fso = [COLOR=royalblue]CreateObject[/COLOR] ("Scripting.FileSystemObject")
[COLOR=royalblue][COLOR=black]4.[/COLOR] Set[/COLOR] d = fso.GetFile (datei)
5. s = d.DateLastModified
6. SmartTags ("Datum_Backup") = s
```
Datum_Backup ist eine Interne Variable vom Typ Date&Time

Problem Fehlermeldung:

```
Fehler Active Xcomponent can't create object:
Scripting.FileSystemObject
in Skript <Datum_lesen> in Zeile 3
```
  

Leute ich zähle auf Euch > Ihr schafft das 
Danke schon mal im Voraus


----------



## volker (10 September 2009)

da das mp377 unter wince läuft, musst du diverse abstriche machen.

schau mal hier http://www.sps-forum.de/showthread.php?t=15348
ganz unten findest du einen link zum sprachverzeichnis von vbs für wce.


----------



## Paule (10 September 2009)

Hallo Volker,
danke erst mal für die Beispiele, aber irgendwie komm ich da nicht wirklich weiter. 
Vor allem habe ich ja extra unter der Skript Hilfe von Flex nachgeschaut.


----------



## PN/DP (11 September 2009)

*FileSystemObject-ActiveX unterschiedlich Win32 und WinCE*



Paule schrieb:


> ```
> [COLOR=royalblue]Set[/COLOR] fso = [COLOR=royalblue]CreateObject[/COLOR] ("Scripting.FileSystemObject")
> ```


gilt nur für Runtime unter Win32!

Beim Panel MP377 unter WinCE muß man schreiben

```
Set fso = CreateObject ("[COLOR="Blue"][B]filectl.filesystem[/B][/COLOR]")
```

Gruß
PN/DP


----------



## Paule (11 September 2009)

PN/DP schrieb:


> gilt nur für Runtime unter Win32!
> 
> Beim Panel MP377 unter WinCE muß man schreiben
> 
> ...


Danke PN/DP
habe ich schon probiert, aber dann bekommen ich einen Fehler in der nächsten Zeile
4. Set d = fso.GetFile (datei)
Den genauen Wortlaut der Störmeldung weiß ich jetzt aber nicht.
Wenn Du Dir aber sicher bist, dann werde ich das noch mal probieren und die genaue Fehlermeldung Posten.


----------



## PN/DP (11 September 2009)

*Skriptbeispiele*

Hallo Paule,

wie schon volker in #2 schrieb


volker schrieb:


> schau mal hier http://www.sps-forum.de/showthread.php?t=15348
> ganz unten findest du einen link zum sprachverzeichnis von vbs für wce.


findest Du die für WinCE gültige Schreibweise der Datei-Befehle in VBScript_WinCE.pdf

Als Anregung hier mal ein paar Skript-Beispiele aus meinen WCCflexible-Projekten.
Die müsstest Du Dir aber noch für Dein Projekt leicht anpassen.

Damit ich meine Panel-Projekte komplett unter Windows XP testen/simulieren kann, 
habe ich im WCCflexible-Projekt eine interne Panel-Variable "_System\!_RT-Sim_!"
vom Typ Byte, deren Startwert ich auf 0 oder 1 festlege, je nachdem, ob die Runtime 
auf dem Panel oder auf dem WinXP-Testsystem laufen soll: 
0=RT auf WinCE-OP / 1=RT auf PC (Simulation/Test)

```
' Function GetFileTimeStampA(File)
' File: String mit Dateiname, kann Pfad enthalten
' Rückgabe: Datei-Modified-Zeitstempel "yymmdd_hhnnss"
'           wenn File vorhanden und Attribut "Archiv" gesetzt ist
' Skript kann unter OP-WinCE und PC-Windows laufen
'
Dim fso, f, fAttr, fTimeStamp
'
GetFileTimeStampA = ""
If FileExist(File) Then
    If SmartTags("_System\!_RT-Sim_!") Then 'PC-Windows
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.GetFile(File)
        fTimeStamp = f.DateLastModified
        fAttr = f.Attributes
    Else 'WinCE
        Set fso = CreateObject("FileCtl.FileSystem")
        fTimeStamp = fso.FileDateTime(File)
        fAttr = fso.GetAttr(File)
    End If
    If fAttr And 32 Then 'Attribut "A" gesetzt
        GetFileTimeStampA = Right(DatePart("yyyy", fTimeStamp), 2) _
                          & Right("0" & DatePart("m", fTimeStamp), 2) _
                          & Right("0" & DatePart("d", fTimeStamp), 2) & "_" _
                          & Right("0" & DatePart("h", fTimeStamp), 2) _
                          & Right("0" & DatePart("n", fTimeStamp), 2) _
                          & Right("0" & DatePart("s", fTimeStamp), 2)
    End If
End If
```


```
' Function FileExist(File) prüft, ob die angegebene Datei vorhanden ist
' Rückgabewert muß True/False sein!
' Skript kann unter OP-WinCE und PC-Windows laufen
' File darf unter WinCE wildcards *? enthalten
'
Dim fso
FileExist = False
If SmartTags("_System\!_RT-Sim_!") Then 'PC-Windows
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(File) Then FileExist = True
Else 'WinCE
    Set fso = CreateObject("FileCtl.FileSystem")
    If fso.Dir(File) <> "" Then FileExist = True
End If
```


```
' Sub GetFileInfos(File, sAT, sLen, sAttrA)
' ermittelt Dateiinformationen: FileDateTime, FileLen, Attribut
' Rückgabe in sAttrA: ""   = Datei existiert nicht
'                     "A"  = Datei existiert und Archiv-Bit ist gesetzt
'                     "  " = Datei existiert und Archiv-Bit ist nicht gesetzt
' Skript kann unter OP-WinCE und PC-Windows laufen
'
Dim fso, f, fTimeStamp, fLen, fAttr
'
If FileExist(File) Then
    If SmartTags("_System\!_RT-Sim_!") Then 'PC-Windows
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.GetFile(File)
        fTimeStamp = f.DateLastModified
        fLen = f.Size
        fAttr = f.Attributes
    Else 'WinCE
        Set fso = CreateObject("FileCtl.FileSystem")
        fTimeStamp = fso.FileDateTime(File)
        fLen = fso.FileLen(File)
        fAttr = fso.GetAttr(File)
    End If
    If fAttr And 32 Then sAttrA = "A" Else sAttrA ="  " '"A" wird als Rückgabe erwartet! (siehe oben)
    sAT = sAttrA & " (" & Right("0000" & Hex(fAttr) & "h)  ", 8) & fTimeStamp : sLen = fLen & " Bytes"
Else 'Datei existiert nicht
    sAT = "    nicht vorhanden" : sLen = "" : sAttrA = ""
End If
```

Gruß
PN/DP


----------



## Hotsch (11 September 2009)

```
dim s
Set fso = CreateObject ("filectl.filesystem")
s=fso.FileDateTime("\Storage Card MMC\FlashBoot_MP377_12Touch\nk.nb0")
```

so oder ähnlich


----------



## Paule (11 September 2009)

```
dim s
Set fso = CreateObject ("filectl.filesystem")
s=fso.FileDateTime("\Storage Card MMC\FlashBoot_MP377_12Touch\nk.nb0")
```
Oh happy day 
Genau das war es :TOOL:
Ich danke Euch !

:s18:


----------

