WinCC flexible 2008 PC RT - Skript

DerMatze

Level-1
Beiträge
525
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

in einem WinCC flexible Projekt werden aus einer *.txt-Datei Werte / Inhalte mittels Skript in WinCCflex (smarttags) eingelesen.
Das funktioniert auch super wenn die *.txt-Datei nicht leer ist.
Da die *.txt-Datei "vom PC (extern) generiert wird" und Flex nur drauf zugreift, kann es vorkommen das in der *.txt-Datei mal nix drin steht.
Dann kann flex logischerweise auch nix einlesen --> es gibt dann eine Meldung mit Verweis auf eine Zeile im Skript (an der Stelle wo die ersten Werte gelesen werden sollen).

Nun ist die (System)meldung sehr irreführend.

Frage: Lässt sich in dem vorhandenen Skript eine Abfrage einfügen, die prüft ob die *.txt-Datei nicht leer ist?
Wenn die Datei leer ist, wird eine interne Variable gesetzt die wiederum eine sinnvolle Meldung anzeigen lässt.

Skriptauszug (Anfang):

Code:
DIM fso, indatei
Set fso = createObject("Scripting.FileSystemObject")
Set indatei = fso.openTextFile("Dateipfad:\Name.txt",1)
                                                [COLOR=#ff0000]   <-- an dieser Stelle gibt es dann die Fehlermeldung, hier müsste dann auf Inhalt der *txt-Datei geprüft werden[/COLOR]
SmartTags("Variable")=indatei.ReadLine
...
...

Danke!

Gruß
Matze
 
Zuletzt bearbeitet:
siehe WinCC flexible VBS-Hilfe zu AtEndOfStream-Eigenschaft
Code:
If Not indatei.AtEndOfStream Then
  SmartTags("Variable") = indatei.ReadLine
End If

'oder

Do While indatei.AtEndOfStream <> True
  '...
  SmartTags("Variable") = indatei.ReadLine
  '...
Loop

Harald
 
Hallo Matze
Eventuell wäre auch die Möglichkeit der Grössenabfrage der Datei - 0Byte = leer
Kann den Code aber nicht probieren und weis daher nicht ob Flex die Getfile - Size Methode unterstützt.

Code:
DIM fso, indatei, objFile, FileSize

Set fso = createObject("Scripting.FileSystemObject")

Set objFile = Fso.GetFile("Dateipfad:\Name.txt")
  FileSize = objFile.Size

Set indatei = fso.openTextFile("Dateipfad:\Name.txt",1)

...
Grüsse Holger
 
Code:
IF indatei.ReadLine = "" Then
    ShowSystemAlarm "Textdatei ist leer"
    ExitSub
end if
würde auch dazu führen, dass bei einer leeren Zeile der Fehler ausgelöst würde.

Dann kann er zusätzlich den Beitrag von Harald einbauen.
Aber grundsätzlich sollte man schon annähernd wissen was da kommt,
wenn die *.TXT Datei nicht einer Formatabsprache entspricht, würde ich
Sie auch verwerfen.
 
Danke für die Unterstützung!

Also, in der Datei werden 8 Zeilen (denke ich) eingelesen, eine Leerzeile gibt es nicht.
Somit sollte die Methode in #2 von RN funktinieren, wenn ich die Abfrage direkt da einfüge wie in #1 geschrieben, oder?

Gruß
Matze
 
Zurück
Oben