Page 1 of 1
Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 11 Sep 2016 08:02
by solid
Hey, ich stehe aktuell aufn Schlauch:/ Wie kann ich ein Wert einer Variable automatisch zuweisen, sodass dieser dauerhaft bestehen bleibt?
Beispiel:
Var1 = 1
Var2 = Var1
Var1 = 2
Var1 = 3
Usw ...
Benachrichtigung: {Var1}/ {Var2}
während Var1 hochzählt, soll Var2 nur den ersten Wert erhalten zum Vergleich.
Verständlich?
Auch: Ist es möglich mittels UI Texte in einer App im Vordergrund auszulesen?
Danke
Mfg
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 11 Sep 2016 13:17
by solid
Mahlzeit, auslesen der Texte in der App funktioniert fehlerfrei via GetTextInActiveWindow. Wie kann ich davon bestimmte Textzeilen abtrennen?
Mfg
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 11 Sep 2016 18:35
by Martin
Hi,
Du kannst in deinem Flow eine Schleife bauen, welche Var1 hochzählt. Im Katalog (Flowliste: Menü->Katalog) gibt es einen Flow Namens Countdown, der als Vorlage dienen kann.
Einzelne Textzeilen zu extrahieren ist z.B. mit einem regulären Ausdruck oder mit der Funktion
substring möglich.
Hier gibt es einige Beispiele:
Script Beispiele
Freundliche Grüsse
Martin
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 12 Sep 2016 10:41
by solid
Moin Martin. Schleife ist mir dann auch eingefallen
Ich stehe jetzt allerdings vor n neuen Rätsel.
Wenn ich einer Variable n festen Wert zuweise und diesen via result match prüfe wird der Text gefunden. Verwende ich hingegen für die Zuweisung der Variable getTextInActiveWindow, bekommt ich immer n false, obwohl genau der gleiche Text vorhanden ist. Liegt es an der Mehrzeiligkeit von getTextInActiveWindow?
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 12 Sep 2016 15:00
by solid
Moin, beim extrahieren scheint sich bei mir ständig der Fehlerteufel einzuschleusen... Also habe ich mein Problem etwas weniger galant gelöst
sleep (1000);
caption = getTextInActiveWindow();
result2 = replaceAll(caption, "\\D", "");
result3 = substring(result2,0,5)
Natürlich wäre ich weiter an einer elegantere Lösung interessiert wie z.B nur die Zeile auf der sich die Zahlen befinden auszulesen.
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 12 Sep 2016 19:29
by Martin
Wie sieht der Text denn genau aus, aus dem du die Werte extrahieren willst?
Mit dem RegEx Tester in Action
Script kannst du ausprobieren, wie du den Text eleganter extrahieren kannst. Wenn der Text mehrere Zeilen enthält, könntest du mit flag (?s) den DOTALL-Modus einschalten, damit . auch einen Zeilenumbruch matcht.
Ein Script könnte dann wie folgt aussehen:
Code: Select all
groups = newList();
matches(text, '(?s).*?(\d+)/(\d+).*', groups);
zahl1=groups[1];
zahl2=groups[2];
Freundliche Grüsse
Martin
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 12 Sep 2016 21:59
by solid
Hallo Martin, extrahieren funktioniert nahezu fehlerfrei mit vorgegebenen Variable-Wert. Erhebe ich die Werte mit GetTextInActiveWindow werde ich mit Fehler regelrecht bombardiert. Ich verwende eine App um Börsenkurse zu beobachten. In meiner Abwesenheit startet die App und das UI Script liesst die wichtige Kurse aus und zeigt sie via Statusbar an. So der Plan... Das Problem hierbei, alles wird angezeigt. Ich benötige aber nur n ein paar Börsenkurse. Nur die Zahlen einzublenden und dann mit Substring anzupassen ist zu buggy. Es wäre hilfreich, wenn die Informationen die GetTextInActiveWindow liefert Zeile für Zeile ausgelesen werden könnte. Komisch... früher wurde behauptet Schleifenprogrammierung sei kompliziert, aber dass hier nervt mich gerade ungemein
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 13 Sep 2016 14:36
by Martin
Hast du einen Beispiel-Text der Börsen-App oder kannst du mir den Link zur App senden und beschreiben, wie ich zur Seite gelange, die du verarbeiten willst?
Du kannst die Variablen eines Flows auch mit Condition
Debug Dialog anzeigen, die Variable mit dem Text anklicken und 'Zeige Wert in Text Editor' anklicken, dann siehst du, wie der Text in Zeilen aufgeteilt ist.
Mit etwas Glück ist der Text schon sinnvoll auf mehrere Zeilen aufgeteilt. Wenn das der Fall ist, kannst du mit
lines = split(value, "\\n"); den Text in die einzelnen Zeilen aufteilen und dann im Script eine Schleife programmieren um die interessanten Zeilen zu extrahieren. Zum Beisipiel so oder so ähnlich:
Code: Select all
for (line in lines)
{
if (contains(line, "GOOG"))
{
google_kurs = line;
}
}
Freundliche Grüsse
Martin
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Posted: 04 Oct 2016 12:47
by solid
Danke Martin. Mit deiner Hilfestellung hat alles geklappt