Nummer der Zeile anzeigen wo das script aktuell rechnet

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

effel
Posts: 544
Joined: 16 Jan 2018, 13:34

Nummer der Zeile anzeigen wo das script aktuell rechnet

Post by effel » 25 Jun 2020, 20:00

Hallo, wenn ich vom Script eine Fehlermeldung bekomme, steht da auch die Zeilennummer mit drin.

Gibt es in ahk eine Variable in der die Zeilennummer drin steht, wo das Script grade arbeitet? also ohne das es sich um einen Fehler handelt.

und kann ich den Speicherbedarf und cpu-last vom laufenden Script auch auslesen?

Rohwedder
Posts: 7622
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Nummer der Zeile anzeigen wo das script aktuell rechnet

Post by Rohwedder » 26 Jun 2020, 01:54

Hallo,
zur Variablen:
https://ahkde.github.io/docs/Variables.htm#LineNumber
Auszug aus meinem Hauptskript:

Code: Select all

#IfWinActive ahk_class Notepad++
^t::SendInput, ToolTip,`% A_TickCount " Zeile: " A_LineNumber
^m::SendInput, MsgBox,`% A_TickCount " Zeile: " A_LineNumber
Damit erstelle ich in Notepad++ bequem meine Tooltips und MsgBoxen.
Die Zeilennummer hilft die Übersicht zu behalten. Einen vergessenen Tooltip in 16000 Zeilen zu finden, nervt!

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Nummer der Zeile anzeigen wo das script aktuell rechnet

Post by BoBo » 26 Jun 2020, 05:51

Mir stellt sich da immer die Frage inwieweit das greift, wenn zB noch aus libraries includiert wird? Diese Zeilen sind zwar im ursprünglichen script nicht vorhanden, zählen aber AFAIRemember automatisch mit. Wird bei der Fehlermeldung dann (auch) auf 'das attachment' verwiesen??

BTW, auch immer wieder gern vergessen - die Option 'Toogle Line Numbers' in der Codebox des Forums. Falls der eigene Editor das nicht hergibt.


gregster
Posts: 8999
Joined: 30 Sep 2013, 06:48

Re: Nummer der Zeile anzeigen wo das script aktuell rechnet

Post by gregster » 26 Jun 2020, 07:17

effel wrote:
26 Jun 2020, 06:53
meine erste suche nach 'Toogle Line Numbers' ergibt auch einiges zum lesen.
https://www.autohotkey.com/boards/viewtopic.php?t=68504
Ich glaub, hier liegt ein Missverständnis vor. Bobo wollte wohl nur auf die gleichnamige Funktion der Codeboxen verweisen (die noch relativ neu ist).
Ich glaub nicht, dass das verlinkte Topic spezifische Informationen zum Thema 'Toogle Line Numbers' enthält (aber das war ja auch nicht deine Frage). Dort wird allerdings A_LineNumber verwendet, das stimmt. Aber es geht eigentlich um ein anderes Thema, nämlich Switch.

effel
Posts: 544
Joined: 16 Jan 2018, 13:34

Re: Nummer der Zeile anzeigen wo das script aktuell rechnet

Post by effel » 26 Jun 2020, 15:50

guten Abend,
mit Hilfe von Bobos `Missverständnis` und Rohwedder`s Codeschnipsel habe ich genau das erreicht was ich suchte.
A_Now [ Freitag 26.Juni.2020 22:39:05 ]
Programmstart: [ Freitag 26.Juni.2020 22:18:04 ]
Gespeichert: [ 0 ] Mail: [ ] WhatsApp: [ ]
xBlackListFound: [ ] xWhiteListFound: [ ]
AnzeigeIDshort: [ ]
PlattformCounter: [ 4 ]
ToolTipUrlFollow: [ out of order ]
A_LineNumber: [ 455035421 104 ]
xStatus: [ out of order ] PauseCounter: [ 138 ]
xStatus: [ out of order ] PauseCounterElse: [ 0 ]
xWhiteListAction: [ ]


das ist ein Print des ToolTip, hier sehe ich nun genau wo das Programm grade arbeitet.

bleibt noch die Frage nach der CPU-Last. und... was es vielleicht sonst noch an interessanten Daten gibt, was den Script-ablauf und dessen Überwachung betrifft.

gregster
Posts: 8999
Joined: 30 Sep 2013, 06:48

Re: Nummer der Zeile anzeigen wo das script aktuell rechnet

Post by gregster » 26 Jun 2020, 16:43

was es vielleicht sonst noch an interessanten Daten gibt, was den Script-ablauf und dessen Überwachung betrifft.
Hast du dich schon mal generell mit Debuggern/Debugging beschäftigt? (außer deinem aktuellen A_LineNumber-Projekt oben, das sicherlich in eine ähnliche Richtung geht).
https://ahkde.github.io/docs/Scripts.htm#debug
https://ahkde.github.io/docs/AHKL_DBGPClients.htm
Damit kannst du im Editor bspw Variablen ständig überwachen oder Zeile für Zeile durch den Code 'steppen' (zum Testen und Auffinden von Fehlern, nicht so sehr als ständig verfügbarer Tooltip in der finalen Skriptversion).

effel
Posts: 544
Joined: 16 Jan 2018, 13:34

Re: Nummer der Zeile anzeigen wo das script aktuell rechnet

Post by effel » 27 Jun 2020, 10:05

hallo gregster,
das Zauberwort war `debuggen` :dance: genau sowas habe ich gesucht.

ich habe nun im script die zeile ALineNumberVar := ALineNumber(A_TickCount, A_LineNumber) an x Punkten eingefügt und damit eine sehr gute Übersicht, wo das script grade werkelt oder hängt.

mit dem Ergebnis aktiviere ich einen ToolTip in dem alle relevanten Daten Life angezeigt werden.

das wird ab jetzt bei jedem Versuch, ein Programm zu schreiben meine Zeilen bereichern.

nun zu meiner Frage:
wenn ich die zeile: ALineNumberVar := ALineNumber(A_TickCount, A_LineNumber) wie im Beispiel unten in einer ausgelagerten Funktion nutzen möchte... kann ich dann die Variable ALineNumberVar global machen... und die zeile immer vor dem Return [wert] der Funktion einbauen? Funktioniert das so? oder hat jemand eine andere Möglichkeit :-)


Code: Select all

UnHTML( HTM, PPT:=1, RUE:=1 ) {                              ; By SKAN on D1BN/D33P @ tiny.cc/unhtml
Local Asc, E, K, P:=1
Static HEN := "
 (  LTrim Join
             {HTML4:,Aacute:193,aacute:225,Acirc:194,acirc:226,acute:180,add:43,AElig:198,aelig:230,
 
 ....
 
 
    26,xi:958,Yacute:221,yacute:253,yen:165,yuml:255,Yuml:376,Zeta:918,zeta:950,zwj:8205,zwnj:8204,}
 )"

  HTM := !PPT ? HTM : RegExReplace(HTM,"<[^>]+>") ; Remove all text wrapped within "<" and ">"
    
  While ( P := RegExMatch(HTM, "(?<!&)&[#a-zA-Z0-9]+;", E, P) )  and  (K := Trim(E,"&#;") )
    {
       Asc  := ( SubStr(E,1,3) = "&#x" ? ("0" . K) 
            :    SubStr(E,1,2) = "&#"  ? (      K)  
            :    RegExMatch(HEN,   "(?<=," . K . ":)[0-9]+(?=,)", Asc) ? Asc
            :    RegExMatch(HEN, "i)(?<=," . K . ":)[0-9]+(?=,)", Asc) ? Asc : 0) 

     , HTM  := RegExReplace(HTM, E, Asc ? Chr(Asc) : RUE=0 ? ("&" . E)  : "")
    }
ALineNumberVar := ALineNumber(A_TickCount, A_LineNumber)
Return HTM
}

Post Reply

Return to “Ich brauche Hilfe”