Arrays in AutoHotKey

senoyches

Lt. Junior Grade
Registriert
Dez. 2018
Beiträge
385
Aus Gründen von Massenhaft immer wieder den gleichen Einträgen in einem externen Programm in dem ich leider nicht Excel Ähnlich mehrere Zeilen kopieren und einfügen kann musste ich auf eine andere Methode des kopierens zurückgreifen, dazu fiel mir AutoHotKey ein.

Ich habe eine Liste aus 10 Werten die in eine Zelle eingegeben werden sollen im Anschluss nach Drücken von Enter in die nächste Zeile gesprungen werden soll und der nächste Wert übertragen wird, hierzu hab ich mir ein Array angelegt aus dem ich via for Schleife die einzelnen Werte rausziehe.
Code:
^<::
    SendMode Input
    SetBatchLines -1


    values := ["Temperatur Fan Coil 1","aktueller Wert","Rückmeldung","Betriebsart","Betriebsart Rückmeldung","Sollwerttemperatur Fan Coil 1","Sollwerttemperatur FanCoil 1 Rückmeldung","Anforderung Ventilatorstufe","Zuverlässigkeit","Störung"]
each := 1
   for each, item in values
{
   Send, % item
   SendInput {Enter}
}
return

Solange ich die Zeile
SendInput {Enter} weglasse funktioniert alles einwandfrei und es werden die 10 Texte direkt hintereinander weggeschrieben, sobald ich es so hinzufüge oder mit Enter Down Enter Up

kommt folgendes raus:

Temperatur Fan Coil 1
aktueller Wert|Rückmeldung|Betriebsart|BetriebsartRückmeldungBetriebsart
Betriebsart Rückmeldung|Betriebsart|BetriebsartSollwerttemperatur Fan Coil 1
Sollwerttemperatur FanCoil 1 Rückmeldung|Betriebsart|BetriebsartAnforderung Ventilatorstufe|Zuverlässigkeit|StörungZuverlässigkeitStörung

Ich habe absolut keine Ahnung warum auf die Enter Tastendrücke größtenteils ignoriert werden und auch habe ich keine Ahnung wo auf einmal die "|" herkommen.
Ich kann absolut nichts erkennen das irgendwie daraufhindeutet, der Code ist ja nicht wirklich kompliziert.

Wenn ich den Code umwandle und alles schön der Reihe nach abarbeite, dann hab ich zwar keine | dafür aber immer noch fehlende Enter Tastendrücke
Code Alternative:
Code:
^<::
    SendMode Input
    SetBatchLines -1

Send Temperatatur Fan Coil 1
Sleep 1000
Send {Enter}
Send aktueller Wert
Sleep 1000
Send {Enter}
Send Rückmeldung
Sleep 1000
Send {Enter}
Send Betriebsart
Sleep 1000
Send {Enter}
Send Betriebsart Rückmeldung
Sleep 1000
Send {Enter}
Send Sollwerttemperatur Fan Coil 1
Sleep 1000
Send {Enter}
Send Sollwerttemperatur Fan Coil 1 Rückmeldung
Sleep 1000
Send {Enter}
Send Anforderung Ventilatorstufe
Sleep 1000
Send {Enter}
Send Zuverlässigkeit
Sleep 1000
Send {Enter}
Send Störung

Das Ergebnis ist dann folgendes:
Temperatatur Fan Coil 1
aktueller WertRückmeldungBetriebsartBetriebsartBetriebsart
Betriebsart RückmeldungSollwerttemperatur Fan Coil 1
Sollwerttemperatur Fan Coil 1 RückmeldungAnforderung VentilatorstufeZuverlässigkeitStörungStörung

Kann mir irgendjemand einen Tipp geben, wo ich suchen muss denn leider hab ich gar keinen Schimmer, da nichts davon was dort durchgeführt wird wirklich da drin steht und das Codesequenzen einfach übersprungen werden habe ich noch nicht erlebt.

Bedanke mich wie immer für Eure Hilfe
 
Funktioniert bei mir wie es sollte. Probier mal SendInput anstelle von Send, das funktioniert zuverlässiger.
 
Zurück
Oben