|
You last visited: Today at 23:02
Advertisement
Echtzeit Log
Discussion on Echtzeit Log within the AutoIt forum part of the Coders Den category.
08/12/2014, 16:20
|
#1
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Echtzeit Log
Hallo,
ich hab jetzt lange gegooglet, konnte aber nichts zu einem Echtzeit Log finden. Ich würde nämlich gerne einen Log anzeigen lassen während mein Programm läuft und wenn bestimmte Funktionen ausgeführt werden, will ich so etwas wie _FileWriteLog() ausführen. Ich hab jetzt gesehen wie man das in eine .txt Datei speichert aber ich will dass es in Echtzeit, also während das Programm läuft angezeigt wird. Weiß jemand eine Lösung?
lg money
|
|
|
08/12/2014, 16:22
|
#2
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
consolewrite?
|
|
|
08/12/2014, 16:36
|
#3
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Quote:
Originally Posted by butter123
consolewrite?
|
Aber das speichert den text doch nur in die Konsole von AutoIt. Wenn ich es ausführe passiert ja nichts
|
|
|
08/12/2014, 16:52
|
#4
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
So ganz stimmt das nicht, aber notwendig ist es auch nicht. Du kannst beispielsweise ein RichEdit in deiner GUI verwenden, in welches du immer weitere Log-Zeilen hinzufügst. Parallel dazu kannst du die Zeilen auch mittels FileWriteLine() in eine Datei abspeichern.
|
|
|
08/12/2014, 17:18
|
#5
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
ich versteh dein problem nicht. mit filewrite kannstes speichern, mit consolewrite oder guielementen anzeigen.
|
|
|
08/12/2014, 18:40
|
#6
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
Local $myedit, $msg
GUICreate("Meine GUI mit einem Edit-Feld") ; Erstellt ein GUI-Fenster welches mittig ausgerichtet wird
$myedit = GUICtrlCreateEdit("Erste Zeile" & @CRLF, 176, 32, 121, 97, $ES_AUTOVSCROLL + $WS_VSCROLL)
GUISetState()
Send("{END}")
; Wird hinzugefügt, 3. Parameter nicht vergessen!
GUICtrlSetData($myedit, "Zweite Zeile",1)
GUICtrlSetData($myedit, "Zweite Zeile2", 1)
GUICtrlSetData($myedit, "Zweite Zeile3", 1)
; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
Danke für eure Hilfe. Wisst ihr wie ich jetzt noch einen Zeilenumbruch mach?
Ich denke, ich werde einfach diese GUI anzeigen lassen und dann bei bestimmten Funktionen GUICtrlSetData($myedit, "Funktion xy ausgeführt",1) schreiben
Quote:
Originally Posted by KDeluxe
So ganz stimmt das nicht, aber notwendig ist es auch nicht. Du kannst beispielsweise ein RichEdit in deiner GUI verwenden, in welches du immer weitere Log-Zeilen hinzufügst. Parallel dazu kannst du die Zeilen auch mittels FileWriteLine() in eine Datei abspeichern.
|
Was genau ist denn ein RichEdit? Google sagt es ist eine UDF aber ich weiß jetzt nicht genau welche Datei das ist
|
|
|
08/12/2014, 21:49
|
#7
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by moneypulation
Danke für eure Hilfe. Wisst ihr wie ich jetzt noch einen Zeilenumbruch mach?
Ich denke, ich werde einfach diese GUI anzeigen lassen und dann bei bestimmten Funktionen GUICtrlSetData($myedit, "Funktion xy ausgeführt",1) schreiben
Was genau ist denn ein RichEdit? Google sagt es ist eine UDF aber ich weiß jetzt nicht genau welche Datei das ist
|
@CRLF -> Carriage return + Linefeed
rich edit ist ein text feld in koda und kann ohne udf genutzt werden
GuiCtrlSetData($Edit,GuiCtrlRead($Edit) & "nächste zeile" & @CRLF)
|
|
|
08/12/2014, 22:31
|
#8
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Quote:
Originally Posted by »FlutterShy™
@CRLF -> Carriage return + Linefeed
rich edit ist ein text feld in koda und kann ohne udf genutzt werden
GuiCtrlSetData($Edit,GuiCtrlRead($Edit) & "nächste zeile" & @CRLF)
|
Vielen Dank auch an dich
|
|
|
08/12/2014, 23:31
|
#9
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by »FlutterShy™
@CRLF -> Carriage return + Linefeed
rich edit ist ein text feld in koda und kann ohne udf genutzt werden
GuiCtrlSetData($Edit,GuiCtrlRead($Edit) & "nächste zeile" & @CRLF)
|
diese methode eines logs hat einige große nachteile.
der erste nachteil ist, das es kein autoscroling gibt...
bsp:
Code:
GUICreate("GUI", 300, 300, Default, Default, 0x10C80000)
GUICtrlCreateEdit("", 5, 5, 290, 290, 0x200844)
For $i=0 To 100
GUICtrlSetData(-1, GUICtrlRead(-1)&@CRLF&$i&" -> abcdefghijklmnopqrstuvwxyz")
Next
While GUIGetMsg()<>-3
WEnd
eine potentielle lösung hierfür wäre die letzte zeile immer oben einzufügen.
ein viel schlimmerer nachteil aber ist, das bei jeder aktualisierung, stets der gesamte log eingelsen werden muss (was irgendwann im laufe der zeit mit sicherheit für probleme sorgen wird). somit wird mit steigender loggröße nicht nur das aktualisieren länger dauern, sondern irgendwann muss das ganze auch zwangsweise zum totalabsturz führen (spätestens, wenn der log mehr speicher benötigt, als zur verfügung steht)
bsp:
Code:
Dim $string
For $i=0 To 10000
$string &= 'a'
Next
GUICreate("GUI", 300, 300, Default, Default, 0x10C80000)
GUICtrlCreateEdit("", 5, 5, 290, 290, 0x200844)
For $i=0 To 100
GUICtrlSetData(-1, GUICtrlRead(-1)&@CRLF&$i&" -> "&$string)
Next
While GUIGetMsg()<>-3
WEnd
die einzige lösung für dieses problem wäre in der tat ein wirkliches rich edit, statt des normalen edits zu nutzen.
|
|
|
08/13/2014, 01:28
|
#10
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Quote:
Originally Posted by lolkop
diese methode eines logs hat einige große nachteile.
der erste nachteil ist, das es kein autoscroling gibt...
bsp:
Code:
GUICreate("GUI", 300, 300, Default, Default, 0x10C80000)
GUICtrlCreateEdit("", 5, 5, 290, 290, 0x200844)
For $i=0 To 100
GUICtrlSetData(-1, GUICtrlRead(-1)&@CRLF&$i&" -> abcdefghijklmnopqrstuvwxyz")
Next
While GUIGetMsg()<>-3
WEnd
eine potentielle lösung hierfür wäre die letzte zeile immer oben einzufügen.
ein viel schlimmerer nachteil aber ist, das bei jeder aktualisierung, stets der gesamte log eingelsen werden muss (was irgendwann im laufe der zeit mit sicherheit für probleme sorgen wird). somit wird mit steigender loggröße nicht nur das aktualisieren länger dauern, sondern irgendwann muss das ganze auch zwangsweise zum totalabsturz führen (spätestens, wenn der log mehr speicher benötigt, als zur verfügung steht)
bsp:
Code:
Dim $string
For $i=0 To 10000
$string &= 'a'
Next
GUICreate("GUI", 300, 300, Default, Default, 0x10C80000)
GUICtrlCreateEdit("", 5, 5, 290, 290, 0x200844)
For $i=0 To 100
GUICtrlSetData(-1, GUICtrlRead(-1)&@CRLF&$i&" -> "&$string)
Next
While GUIGetMsg()<>-3
WEnd
die einzige lösung für dieses problem wäre in der tat ein wirkliches rich edit, statt des normalen edits zu nutzen.
|
Das mit dem Scrolling ist mir auch aufgefallen aber ich hab schnell eine Lösung gefunden. Nach jedem Eintrag hab ich _GUICtrlEdit_Scroll ( $Log, $SB_SCROLLCARET ) geschrieben.
Aber mit dem Speicher hast du Recht. Daran hab ich noch garnicht gedacht. Und mein Bot soll für mehrere Stunden einbahnfrei funktionieren.
Danke dir
Edit: Ich werde wohl den Log jede 10-20 Minuten durch einen Timer beenden und wieder neu ausführen. Das hat zum glück keine Auswirkung auf den Bot
|
|
|
08/13/2014, 10:33
|
#11
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
wenns sehr auf performance ankommt, schreib dir vllt einen externen log. (nur ne idee, nicht getestet)
sende mit ConsoleWrite an den StdOut stream und benutz eine neue exe um den stream mit StdOutRead auszulesen. Die als CUI anstatt als GUI kompilieren und alles eingelesene wieder mit ConsoleWrite ausgeben. Ich denke dass das Cmd Fenster auf zeilenweises anzeigen von text optimiert ist^^
|
|
|
08/13/2014, 12:50
|
#12
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Quote:
Originally Posted by butter123
wenns sehr auf performance ankommt, schreib dir vllt einen externen log. (nur ne idee, nicht getestet)
sende mit ConsoleWrite an den StdOut stream und benutz eine neue exe um den stream mit StdOutRead auszulesen. Die als CUI anstatt als GUI kompilieren und alles eingelesene wieder mit ConsoleWrite ausgeben. Ich denke dass das Cmd Fenster auf zeilenweises anzeigen von text optimiert ist^^
|
Man kann es aber auch derbe auf die Spitze treiben...
FileWrite wird wohl reichen.
|
|
|
08/13/2014, 16:05
|
#13
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by moneypulation
Edit: Ich werde wohl den Log jede 10-20 Minuten durch einen Timer beenden und wieder neu ausführen. Das hat zum glück keine Auswirkung auf den Bot
|
$string darein den text für den log speichern und nur noch GuiCtrlSetData ausführen. z.b. nach 100 einträgen kannst du $string löschen
|
|
|
08/13/2014, 17:15
|
#14
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Quote:
Originally Posted by »FlutterShy™
$string darein den text für den log speichern und nur noch GuiCtrlSetData ausführen. z.b. nach 100 einträgen kannst du $string löschen
|
Stimmt, so gehts auch
|
|
|
08/13/2014, 20:53
|
#15
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
Quote:
Originally Posted by alpines
Man kann es aber auch derbe auf die Spitze treiben...
FileWrite wird wohl reichen.
|
naja 5 minuten arbeit für nen guten log^^
Log:
PHP Code:
#AutoIt3Wrapper_Change2CUI=y #include <Constants.au3> $idProcess = Run("StdOutTest.exe", @ScriptDir, Default, $STDERR_CHILD + $STDOUT_CHILD) If not $idProcess then Exit
While Sleep(10) $sRead = StdOutRead($idProcess) If $sRead Then If $sRead = "log stop" then Exit If $sRead = "log pause" Then While Sleep(10) If StdoutRead($idProcess) = "log continue" then ExitLoop WEnd EndIf ConsoleWrite($sRead) EndIf WEnd
Test Funktion:
PHP Code:
While Sleep(200) ConsoleWrite(Random(0,100,1)) WEnd
|
|
|
|
|
Similar Threads
|
In Echtzeit Rohstoffe produzieren
07/31/2013 - Web Development - 15 Replies
Hallo ihr Lieben,
da ich immoment anscheinend Spaß habe, ein BG zu programmieren, wollte ich euch einmal Fragen, wie es funktioniert, z.B. Holz in Echtzeit zu fördern, da ich es selber nicht weiß. :P
|
In Echtzeit Onlinestatus abfragen
07/19/2013 - Metin2 PServer Guides & Strategies - 16 Replies
Hi Leute!
Da ich momentan ein sicheres Auktionshaus in meinen Testserver integriegen möchte, habe ich nach einer Möglichkeit gesucht, den Onlinestatus des Spielers direkt und ohne Umwege über die last_play Spalte abzufragen, da diese nichts über den konkreten Onlinestatus aussagt.
Da auch andere dieses Problem haben könnten, stelle ich euch nun die Lösung dazu vor.
Die Log-Tabelle speichert jeden Login/Logout, selbst wenn der Client nicht ordnungsgemäß geschlossen wird. (Beispiel:...
|
Men of War: Goldene Zeiten für Echtzeit-Strategen
03/15/2012 - Gaming News - DE - 16 Replies
Mehr Echtzeit-Taktik als jemals zuvor! Peter Games führt Strategiefans erneut ins Schlachtengetümmel des Zweiten Weltkriegs und veröffentlicht Men of War: Gold Edition für PC. Die exklusive Sammleredition steht ab 30. März 2012 in den Händlerregalen und vereint erstmals alle WWII-Teile und -Erweiterungen der legendären Strategiespiel-Reihe.
Men of War: Gold Edition beinhaltet folgende Titel:
Men of War
Men of War: Red Tide
Men of War: Assault Squad
Men of War: Assault Squad –...
|
MMORPG Suche -> Echtzeit Kampfsystem.
11/06/2011 - Main - 3 Replies
Welche MMORPG´s mit Echtzeitkampfsystem kennt ihr?
Also kein WoW oder so ein shit wo du Rundenbasierend kämpfst.
Bitte mit Fantasy setting kein weltraum od. warrock shit :)
Fur deppen (ArctiicInc)
Das ist echtzeit.
http://www.youtube.com/watch?v=Y8W__Hs5boI&fe ature=related
|
echtzeit chat logger
12/30/2004 - General Gaming Discussion - 2 Replies
hat wer sowas? hab zwar einene gefunden, aber der ist zu alt und funzt nichmehr. ansonsten hab ichs mal mim packet sniffer versucht, aber die packete zu interpretieren ist doch schwerer als man denkt hehe.
|
All times are GMT +2. The time now is 23:02.
|
|