Showing results 1 to 4 of 4

Thread: Variablen im Editor aus der Runtime löschen

  1. #1
    cEckhart Gast

    Default Variablen im Editor aus der Runtime löschen

    Folgende Fragestellung:

    ich möchte mithilfe eines VBA-Makros in der Runtime, Variablen aus dem Editor, sprich Offline, löschen.

    zusätzlich möchte ich, dass die Wertebereiche bestimmter Variablen, auch in der Editorversion der Variable eingetragen werden.

    ich arbeite derzeit mit dem Befehl:
    thisproject.variables.item(" XXXXX ").rangemax = XXXX

    mit diesem Befehl wird aber nur die Runtimeversion der Variable modifiziert, ich möchte jedoch dass auch die Editorversion geändert wird.

    vielen Dank für Support

  2. #2
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Variablen im Editor aus der Runtime löschen

    Da zenOn Runtime und zenOn Editor getrennt voneinander arbeiten ist es notwendig den Zugriff aus der zenOn Runtime auf den zenOn Editor per externen Zugriff auf das Editor Application Objekt zu machen (vergleichbar mit externen Ansteuerung von zenOn Editor/Runtime per C++, VB, C#, ... )

    Nachfolgend der Code für das zeitgleiche Ändern des Wertebereich in der zenOn Runtime/Editor:

    Sub ChangeVarRange()
    Dim obAppED As zenOn.ApplicationED
    Dim obProjectED As zenOn.Project
    Dim obVariable As zenOn.Variable
    Dim iValueRange As Integer
    
    iValueRange = 2000
    
    thisProject.Variables.Item("MyInt").RangeMax = iValueRange
    
    Set obAppED = GetObject(, "zenOn.ApplicationED")
        If (Err.Number = 429 Or obAppED Is Nothing) Then
            Debug.Print "zenOn Editor is not reachable!"
            Exit Sub
        Else
            Set obProjectED = obAppED.Projects.Item("MYPROJECT")
            
            If obProjectED Is Nothing Then
                Debug.Print "zenOn Project is not reachable!"
                Exit Sub
            End If
            
            Set obVariable = obProjectED.Variables.Item("MyInt")
            If obVariable Is Nothing Then
                Debug.Print "zenOn Variable is not reachable!"
                Exit Sub
            End If
            obVariable.RangeMax = iValueRange
        End If
    End Sub

    Nachfolgend der Code ist für das Löschen einer Variable im Editor von der Runtime aus:

    Sub DeleteMyVar()
    Dim obAppED As zenOn.ApplicationED
    Dim obProjectED As zenOn.Project
    Dim obVariables As zenOn.Variables
    
    Set obAppED = GetObject(, "zenOn.ApplicationED")
        If (Err.Number = 429 Or obAppED Is Nothing) Then
            Debug.Print "zenOn Editor is not reachable!"
            Exit Sub
        Else
            Set obProjectED = obAppED.Projects.Item("MYPROJECT")
            
            If obProjectED Is Nothing Then
                Debug.Print "zenOn Project is not reachable!"
                Exit Sub
            End If
            
            Set obVariables = obProjectED.Variables
            If obVariables Is Nothing Then
                Debug.Print "zenOn Variable is not reachable!"
                Exit Sub
            End If
            
            obVariables.DeleteVar ("MyInt")
        End If
    
    End Sub

    Damit diese Änderung von der Runtime aus funktioniert, muss natürlich der Editor gestartet sein.


    Gruß,
    Herbert
    Last edited by herberto : 7th August 2008 at 14:53

  3. #3
    cEckhart Gast

    Daumen hoch Re: Variablen im Editor aus der Runtime löschen

    vielen Dank!

    funkioniert soweit, nur bekomme ich bei nicht laufendem Editor ein Stop im VBA-Editor bevor ich zur Auswertung und Anzeige der Fehlermeldung "Editor is not reachable" komme??

    für mich nicht schlimm, jedoch frage ich mich gerade ob das so auch auf anderen Rechnern reproduzierbar ist.

    vielen Dank nochmals!

  4. #4
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Variablen im Editor aus der Runtime löschen

    Um diese Fehlermeldung abfangen zu können, muss am Anfang ein "unsauberer" Errorhandler implementiert werden (On Error Resume Next):

    Sub AdjustMyRange()
    Dim obAppED As zenOn.ApplicationED
    Dim obProjectED As zenOn.Project
    Dim obVariable As zenOn.Variable
    Dim iValueRange As Variant
    
    iValueRange = "2000"
    
    thisProject.Variables.Item("MyInt").RangeMax = iValueRange
    
    On Error Resume Next
    
        Set obAppED = GetObject(, "zenOn.ApplicationED")
        If (Err.Number = 429 Or obAppED Is Nothing) Then
            Debug.Print "zenOn Editor is not reachable!"
            Exit Sub
        Else
            Set obProjectED = obAppED.Projects.Item("MYPROJECT")
            
            If obProjectED Is Nothing Then
                Debug.Print "zenOn Project is not reachable!"
                Exit Sub
            End If
            
            Set obVariable = obProjectED.Variables.Item("MyInt")
            If obVariable Is Nothing Then
                Debug.Print "zenOn Variable is not reachable!"
                Exit Sub
            End If
            obVariable.RangeMax = iValueRange
        End If
    
    End Sub

    Sollte nun der Editor nicht gestartet sein, so wirft die GetObject Methode eben eine Fehlermeldung. Durch die Definition "On Error Resume Next" wird keine Expeption geworfen und der Code wird weiter behandelt. Durch die anschließende Errorabfrage (Err.Number=429) kann dies abgefangen werden.

    Da natürlich die Ausgabe per debug.print in der zenOn Runtime nicht sichtbar ist, würde ich vorschlagen die Meldungen auf eine String-Variable (Intern Treiber) zu schreiben. Eine weitere Möglichkeit wäre die Meldungen mit der zenOn VBA Methode "WriteCelString" in die CEL zu schreiben.
    Ausgabe solcher Informationen per MessageBox zu machen sollen vermieden werden, da VBA ja im gleichen Thread wie zenOn selbst läuft und somit bis zur Bestätigung der Messagebox ein Stillstand der zenOn Runtime zustande kommen kann.

    Gruß,
    Herbert

Similar Threads

  1. Replies: 0
    Last Post: 7th August 2008, 11:57
  2. Replies: 1
    Last Post: 1st April 2008, 11:58
  3. the runtime crashes every time during the runtime start
    By sebastiank in forum zenon Operator
    Replies: 0
    Last Post: 27th August 2007, 10:27
  4. Replies: 0
    Last Post: 20th August 2007, 17:04

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •