-> Hier kostenlos registrieren
Hallo zusammen,
ich nutze zur Variablenarchivierung ein Skript, das vom Aufgabenplaner minütlich gestartet werden soll. Es schreibt eine Zeile in eine CSV-Datei, die als Umlaufarchiv dient. Das Projekt läuft auf einer Workstation als Runtime.
Ich habe das Problem, dass diese Prozedur scheinbar sehr viele Ressourcen benötigt, so dass es wohl zu einer Art Überlauf kommt und manche andere Aufgaben des Aufgabenplaners nicht mehr durchgeführt werden. Meine CPU-Leistung steigt bei der RT-Simulation auch stark an (ohne minütliche Speicherung: ca. 10 %, mit minütlicher Speicherung: ca. 80 %).
Ich habe meinen Code angehangen. Gibt es eine Möglichkeit den performanter zu machen? Ich vermute, dass die Variablenzugriffe das Problem sind. Aber wie kann man die anders gestalten? Als Array o. ä.?
Vielen Dank.
ich nutze zur Variablenarchivierung ein Skript, das vom Aufgabenplaner minütlich gestartet werden soll. Es schreibt eine Zeile in eine CSV-Datei, die als Umlaufarchiv dient. Das Projekt läuft auf einer Workstation als Runtime.
Ich habe das Problem, dass diese Prozedur scheinbar sehr viele Ressourcen benötigt, so dass es wohl zu einer Art Überlauf kommt und manche andere Aufgaben des Aufgabenplaners nicht mehr durchgeführt werden. Meine CPU-Leistung steigt bei der RT-Simulation auch stark an (ohne minütliche Speicherung: ca. 10 %, mit minütlicher Speicherung: ca. 80 %).
Ich habe meinen Code angehangen. Gibt es eine Möglichkeit den performanter zu machen? Ich vermute, dass die Variablenzugriffe das Problem sind. Aber wie kann man die anders gestalten? Als Array o. ä.?
Vielen Dank.
Code:
Dim fso, f, ts, DataSet, Header, FName, LineData
' Archivierungspfad (Eingangsparameter) und Dateiname zusammensetzen
' Combine archivepath (input parameter) an filename
FName = StoragePath & ArchiveName & ".csv"
If SmartTags("FileLines") => MaxLines Then
DeleteLine FName,"",4,0
End If
' Tabellenkopf zusammenstellen (Spalten Tag_10; Tag_11 usw.)
' Chr(10) = ANSI-Code für Zeilenvorschubzeichen
' Create table header (Column for Tag_10; Tag_11 and so on)
Header = "Column1;Column2;Column3..." & Chr(10)
' FileSystemObject erstellen
Set fso = CreateObject("Scripting.FileSystemObject")
' Wenn Datei noch nicht vorhanden ist, dann wird eine Datei erzeugt
' if the file does not exist, then create a file
If Not fso.FileExists(FName) Then
fso.CreateTextFile FName
Set f = fso.GetFile(FName)
' Datei dem Skript als Objekt zur Verfügung stellen
' File as Object available for script
Set ts = f.OpenAsTextStream(8, -2)
' Datei öffnen
' open file
ts.WriteLine(FName)
ts.WriteLine(Header)
ts.Close
' Pfad- & Dateiname und Tabellenkopf in die Datei schreiben
' write path- & filename and table header into file
' Datei schließen
' close file
End If
Set f = fso.GetFile(FName)
' Die Archivdatei dem Skript als Objekt zur verfügung stellen
' Archive file as object available for script
Set ts = f.OpenAsTextStream(8, -2)
' Die Datei öffnen
' Open file
' Werte der Variablen in die Archivdatei schreiben
' Write values of variables in archive file
LineData = CStr(Now) & ";" & CDbl(SmartTags("Var1")) & ";" &_
CDbl(SmartTags("Var2")) & ";" &_
CDbl(SmartTags("Var3")) & ";" &_
CDbl(SmartTags("Var4")) & ";" &_
CDbl(SmartTags("Var5")) & ";" &_
CDbl(SmartTags("Var6")) & ";" &_
CDbl(SmartTags("Var7")) & ";" &_
CDbl(SmartTags("Var8")) & ";" &_
...
CDbl(SmartTags("Var78"))
ts.WriteLine(LineData)
' Aktuelle Zeile zurückgeben
' Read last linenumber
SmartTags("FileLines") = ts.Line
' Datei wieder schließen
' Close file
ts.Close
' Verwendeten Speicher wieder freigeben
' Used storage will be freed
Set ts = Nothing
Set LineData = Nothing
Set f = Nothing
Set fso = Nothing