Beiträge von HansJ54
-
-
Alles anzeigen
DAS ist überhaupt kein Problem, dazu kann ich eigene Sprungmarkendefinitionen erstellen. Weitaus problematischer ist die Farbgebung, da das nur mit Lexer möglich ist und ich wohl dazu versuchen müsste die styles umzubiegen.
Was ich sicher hinbekomme:
ConsoleWrite($sText, $bErr) ; $bErr=True(rot) / False(blau) bzw. auch die Farben der anderen style.errorlist.
!@@ Debug(1234) : Text Fehler
>@@ Debug(1234) : Text Sonstiges
Ist dann mit Sprungmarke.
Das wäre super. Vielleicht noch alternativ $iErr=0 <=> $bErr=False und $iErr<>0 <=> $bErr=True
-
Wofür die einzelnen style.errorlist.n zuständig sind habe ich doch oben detailliert angeführt:
n = 3 - Sprungmarke Fehler (Standard: rot)
n = 9 - Sprungmarke Info (Standard: pink)
n = 4, 10, 11, 12 - abhängig vom ersten Zeichen (z. B. ! - rot)
Habe ich verstanden. Idee war nur, dass eine der nicht genannten n noch was Sinnvolles machen könnte. Ich habe gesucht, wo die Dinger definiert sind, aber nicht gefunden.
Wäre dir geholfen mit einer Funktion: ConsoleWriteColor($sText, $iColor) ?
Sollte m.M. nach nicht allzu schwierig umzusetzen sein mithilfe des SciTEInterface.
Damit wäre mir sehr geholfen
Ist aber, wie erwähnt, nur ein "Nice-To-Have" und erleichtert mir das Debuggen - falls nicht zu viel Aufwand ... Die müsste aber natürlich "Sprungmarke" beherrschen.Ein wenig Hintergrund: ich habe ein sehr umfangreiches Programm unter Nutzung von DanPs Webdriver.udf geschrieben und mit jeder neuen Version des Chromedrivers oder Änderungen auf den genutzten Webseiten tauchen wieder neue ominöse Fehler auf. Ich gebe zu, größtenteils meine (
) aber manchmal auch nicht. -
Noch eine Frage zur optischen Aufbereitung der Ausgaben in der Console zum Debuggen:
Gibt es neben @ScriptName eine Möglichkeit, anzuzeigen in welchem Include und in welcher Function sich das Programm gerade befindet? Sollte in der Console dann so aussehen:
Mit @ScriptName bekomme ich ja nur den Namen des Scripts, aber nicht, in welchem Bereich ich mich gerade befinde. Workaround für die Function() wäre als erste Zeile in jeder Function "$sFuncName=NameDerFunktion" zu setzen. Genauso könnte man dahinter noch "$sIncludeName=NameInclude.au3" setzen.
Aber vielleicht gibt es ja eine bessere Möglichkeit?
-
Danke für die Info - mir fehlt allerdings das Hintergrundwissen zu den Möglichkeiten in SciTEUser.properties. "style.errorlist.3" etc. müssen ja irgendetwas an Programm dahinter haben, vielleicht ist ein"...x" das was ich suche?
Ich habe verstanden, dass ich mit dem Voransetzen eines "Farb-Zeichens" wie z.B. "!" zwar eine Farbe in der Zeile beeinflusse, aber dass gleichzeitig die Sprungfunktion damit nicht mehr geht (richtig?).
Was ich wollte ist an sich gleich aussehende Sprungzeilen verschieden einzufärben, also z.B. so:
(gefaked, nicht irritieren lassen
.Vielleicht gibt es ja eine "style.errorlist.x", mit der man so etwas machen kann (oder anders)?
Ist kein wirklich dramatisches Problem, im Moment erzeuge ich einfach eine rote Zwischenzeile bei $iErr<>0 und danach überlasse ich die Farben wieder sich selbst. Wäre trotzdem nice-to-have.
-
Neues Problem:
Ich schreibe viele Debug-Zeilen zum Testen und würde die rot anzeigen wollen, bei denen $iErr <> 0 ist. Setze ich "!" an den Anfang dieser Zeilen, werden sie rot - aber ich kann nicht mehr mit Klick auf die Zeilennummer automatisch ins Programm springen.
Gibt es eine Möglichkeit zum Färben unter Erhalt der Sprungfunktion?
-
Vielen Dank für die Hilfe, funktioniert einwandfrei!
-
Nachdem ich jetzt länger in der Hilfe und im Forum gesucht habe mit sicher falschen Suchbegriffen möchte ich abkürzen:
Wie kann ich in AutoIt Zahlen mit Punkten und ggf. Kommas "schön" darstellen: 1234567,89 => 1.234.567,89 ?
Geht sicher mit RegEx, aber vermutlich hat auch AutoIt eine fertige Funktion dafür!?
-
Ich sammle die Werte, sieht dann so aus wie im Screenshot nur mit größeren zeitlichen Abständen. Wenn ich sicher wäre, dass es Row 9 ist, würde ich eine neue Spalte nur bei jeder Änderung von Row 9 erzeugen.
Ich habe nach wie vor einen Speicherzuwachs, allerdings gering, sieht man sogar bei diesen kurzen Intervallen und hat nichts mit dem Aufbau der Tabelle zu tun, ab Col10 schreibe ich nur noch in Col10 und auch dabei steigt Row 9 leicht an.
Im laufenden Programm zeige ich mir den Wert von Row 9 auch an:

-
Im Zweifel das Programm in Abschnitte aufteilen (normalerweise hat man ja eh viele Funktionen,...) die einzeln getestet werden können und diese dann Härtetests unterziehen => Sehr oft ausführen und die Arbeitsspeichernutzung ansehen.
Genau das versuche ich ja. Aber stundenlang etwas Klicken und dabei in den Taskmanager schauen ist langweilig. Daher der Gedanke, den genutzten Arbeitsspeicher an verschiedenen Stellen im Programm zu loggen und dann nach ein paar Stunden normaler Arbeit zu schauen, ob es in Summe an diesen Stellen aufwärts geht.
Und dafür brauche ich einen sinnvollen Wert, den ich automatisch aus dem System ziehen kann. Der muss noch nicht mal der "echte" Wert sein, sondern nur die Speicherbedarf-Änderungen dokumentieren.
-
Zum Hintergrund:
Ich habe ursprünglich in einer Endlosschleife ein GUI immer wieder neu definiert und damit laufend mehr Speicher verbraucht bis zum Platzen. Den Fehler habe ich gefunden. Jetzt ist aber immer noch ein stetiger geringer Speicherzuwachs geblieben, dem ich gerne auch auf die Spur kommen möchte. Inzwischen ist es so wenig, dass das Programm auch nach 8 Std. nicht abstürzt, aber mich interessiert halt, wieso [9] stetig steigt, dann gelegentlich mal wieder etwas runtergeht, in Summe aber trotzdem steigt.
Nennen wir es "wissenschaftliches Interesse".Ich denke, die beiden Funktionen liefern tatsächlich nicht den Wert "Arbeitsspeicher" aus dem Taskmanager. Vielleicht bedeutet ein Anstieg in [9] auch nichts, da der Taskmanager andere Werte anzeigt. Aber es muss doch eine Möglichkeit geben, den Wert aus dem Taskmanager exakt zu bekommen!?
-
Ich möchte den Wert aus dem Taskmanager loggen:
Hier sind die Ergebnisse von _WinAPI_GetProcessMemoryInfo() (0-9) und MemGetStats() (10-16), wobei [7] und [9] mit 46,45 MB (gerechnet wie oben) der Anzeige im Taskmanager mit 38,1 MB diesmal noch "unähnlicher" sind. Ich habe den Verdacht, der Taskmanager zieht andere Werte. Speziell ist er zwischen den beiden Abfragen von 44,1 MB auf 38,1 MB gewechselt, mein Log ist aber gleich geblieben:
-
Die 46616576 aus _WinAPI_GetProcessMemoryInfo() sind laut Hilfe Byte. Im Beispiel steht:
Function _WinAPI_GetProcessMemoryInfo
Ich habe gerechnet 46616576 / 1024 / 1024 = 44,46. Deine Rechnung ausgehend von 44,46 verstehe ich daher nicht. Von diesem Wert noch mal umzurechnen macht doch keinen Sinn?
-
Noch mal zum Problem zurück, da neues Problem gefunden: Ich möchte den Verlauf der Arbeitsspeichernutzung eines Programms loggen.
Ich ermittle die PID meines Programms mit:
$iPid = WinGetProcess("AutoIt")
dann hole ich die Speicherwerte mit
$aData = _WinAPI_GetProcessMemoryInfo($iPid)
und nehme den Wert 9
$iMem = $aData[9] ; 'Current private space'
Ich hätte jetzt gedacht, dass 'Current private space" der Wert ist, den der Taskmanager anzeigt unter Arbeitsspeicher, ist aber nicht so: Taskmanager 41,4MB und $iMem 44,46MB
Was mache ich falsch? Ist 'Current private space' nicht der "Arbeitsspeicher" aus dem Taskmanager?
-
-
Ich habe bisher die komplette csv-Datei verschlüsselt, entschlüsselt und dann in eine Array eingelesen. Ich würde aber gerne nur einzelne Felder der csv-Datei verschlüsseln. Dann müsste ich die csv einlesen mit den verschlüsselten Feldern und dann entschlüsseln.
Problem: beim Verschlüsseln könnte ein Semikolon oder ein CR entstehen und das macht das csv-Einlesen unmöglich.
Hat jemand eine Idee, wie ich beim Verschlüsseln ";" und CR vermeiden kann?
Eine Möglichkeit wäre, direkt beim Verschlüsseln ";" durch "#Semikolon#" und CR ähnlich umzuwandeln und beim Entschlüsseln das rückgängig zu machen. Aber vielleicht gibt es bessere Ideen?
-
Das hätte ich nie hinbekommen, danke!
-
Müsste ich dann über gespeicherte PIDs machen, also relativ umständlich.
Genauer: Mein Script öffnet ein oder mehrere Chrome-Fenster mit speziellem Profil, wird irgendwie unkonventionell beendet (normales Beenden ist kein Problem, da alle geöffneten Fenster gelöscht werden) und Fenster mit dem speziellen Profil bleiben unangenehmerweise offen. Neuer Start vom Script: da ich bisher nicht geschafft habe, die Verbindung mit dem alten Webdriver wieder neu aufzunehmen, startet Chrome nicht mit diesem Profil, da "Chrome schon gestartet".
Beste Lösung wäre neue Verbindung zum alten Webdriver, ansonsten Test, ob noch Chromes mit dem speziellen Profil offen sind und diese zu löschen. Alle Chromes löschen wäre nicht gut, da auch Chrome-Fenster mit dem Standard-Profil offen sein könnten, die nicht geschlossen werden sollen.
-
Passt nur so halb hierzu:
Ich starte den Chrome mit 2 unterschiedlichen Profilen (1. vom Desktop, 2. aus Script) und will abfragen, ob und welcher davon gestartet ist, da ich ggf. den 2. aus dem Script beenden, den 1. aber unbehelligt lassen muss.Gibt es dazu auch einen Weg?
-
Auch hier fehlte mir einfach der Suchbegriff. Klappt auf Anhieb perfekt, vielen Dank!