Showing results 1 to 2 of 2

Thread: Variablenfilter

  1. #1
    Join Date
    20.06.2013
    Posts
    96

    Default Variablenfilter

    Hallo,

    ich wollte mich mal erkundigen, ob es eine Möglichkeit gibt, explizit gemäß einer Vorgabe nach bestimmten Variablen zu suchen.
    Zur Zeit durchlaufe ich immer alle Variablen, was bei einer Vielzahl von Variablen irgendwann auch zu einem Zeitproblem werden kann.

    Beispiel:

    For i = 0 to Variables.Count -1
    ' Mach irgendwas
    Next

    Eleganter würde ich es finden, wenn es eine Möglichkeit gibt nun nur nach Variablen zu suchen, die eine bestimmte Zeichenfolge besitzen.

    Vielen Dank schon mal

  2. #2
    Join Date
    13.08.2013
    Posts
    57

    Default Re: Variablenfilter

    Hi,
    wenn's um Performance geht ist der LookUp mit den Umweg über den XML-Export der Variablen wahrscheinlich schneller. Ich bevorzug C#, aber das sollte man relativ schnell auf VB.net ummünzen können.

    public void Macro_VariableLookUp()
            {
                string tempFilePath = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".xml"; ;
                this.ActiveDocument.Variables().Export(tempFilePath); //we export all variables of the current project in a XML file
                XmlDocument xDoc = new XmlDocument();
                xDoc.Load(tempFilePath);//we load our XML Files
                XmlNodeList variables = xDoc.GetElementsByTagName("Variable"); //we create a List of all variables
                foreach (XmlElement variable in variables)
                {
                    try
                    {
                        //Here we read some properties, feel free to to read the one you need
                        string varName = variable.GetAttribute("ShortName");//ShortName is a attribute in XML
                        string resLabel = variable.GetElementsByTagName("Recourceslabel")[0].InnerText; //ResourceLabel is a Element
                        if (varName.Contains("MyPattern") && (resLabel.Equals("mustMatch"))) //here we check if the variable has the properties we are looking for
                        {
                            DoSomething(varName);
                        }
                    }
                    catch (Exception ex)
                    {
                        //some variables may not have a the property we are looking for
                    }
                }
                File.Delete(tempFilePath);//we don't want to wast diskspace so we delete the XML file
            }
    
            public void DoSomething(string varName)
            {
                //we use the API to change the Tagname of the variable, we also could change the XML and then reimport.
                zenOn.IVariable var = this.ActiveDocument.Variables().Item(varName);
                var.Tagname = "Found in Pattern";
            }


    Sigi

Posting Rules

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