Variable Wert einmalig bei Flow Ausführung speichern.

Post your questions and help other users.

Moderator: Martin

Post Reply
solid
Posts: 33
Joined: 29 Jan 2014 08:17

Variable Wert einmalig bei Flow Ausführung speichern.

Post by solid » 11 Sep 2016 08:02

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? :D

Auch: Ist es möglich mittels UI Texte in einer App im Vordergrund auszulesen?

Danke

Mfg

solid
Posts: 33
Joined: 29 Jan 2014 08:17

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by solid » 11 Sep 2016 13:17

Mahlzeit, auslesen der Texte in der App funktioniert fehlerfrei via GetTextInActiveWindow. Wie kann ich davon bestimmte Textzeilen abtrennen?

Mfg

User avatar
Martin
Posts: 4468
Joined: 09 Nov 2012 14:23

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by Martin » 11 Sep 2016 18:35

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

solid
Posts: 33
Joined: 29 Jan 2014 08:17

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by solid » 12 Sep 2016 10:41

Moin Martin. Schleife ist mir dann auch eingefallen :D 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?

solid
Posts: 33
Joined: 29 Jan 2014 08:17

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by solid » 12 Sep 2016 15:00

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.

User avatar
Martin
Posts: 4468
Joined: 09 Nov 2012 14:23

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by Martin » 12 Sep 2016 19:29

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

solid
Posts: 33
Joined: 29 Jan 2014 08:17

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by solid » 12 Sep 2016 21:59

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 :D

User avatar
Martin
Posts: 4468
Joined: 09 Nov 2012 14:23

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by Martin » 13 Sep 2016 14:36

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

solid
Posts: 33
Joined: 29 Jan 2014 08:17

Re: Variable Wert einmalig bei Flow Ausführung speichern.

Post by solid » 04 Oct 2016 12:47

Danke Martin. Mit deiner Hilfestellung hat alles geklappt :-)

Post Reply