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
Variable Wert einmalig bei Flow Ausführung speichern.
Moderator: Martin
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Mahlzeit, auslesen der Texte in der App funktioniert fehlerfrei via GetTextInActiveWindow. Wie kann ich davon bestimmte Textzeilen abtrennen?
Mfg
Mfg
Re: Variable Wert einmalig bei Flow Ausführung speichern.
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
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.
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?
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.
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.
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.
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:
Freundliche Grüsse
Martin
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];
Martin
Re: Variable Wert einmalig bei Flow Ausführung speichern.
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.
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:
Freundliche Grüsse
Martin
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;
}
}
Martin
Re: Variable Wert einmalig bei Flow Ausführung speichern.
Danke Martin. Mit deiner Hilfestellung hat alles geklappt