Wenn es immer .cfg ist
[autoit]StringReplace
[/autoit]verwenden, ansonten kannst du mit
[autoit]_PathSplit
[/autoit]arbeiten und danach den Dateinamen mit dem & Operator wieder zsammenstringen,
frohes gutes neues Jahr autoBert
Wenn es immer .cfg ist
[autoit]StringReplace
[/autoit]verwenden, ansonten kannst du mit
[autoit]_PathSplit
[/autoit]arbeiten und danach den Dateinamen mit dem & Operator wieder zsammenstringen,
frohes gutes neues Jahr autoBert
Hallo philn,
Danke für eure Hilfe Problem gelöst
schön, dann ist dein Problem ja gelöst, schön wäre es allerdings auch wenn du den Thread auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)
Wo hast du denn das Makro @UNICODE her?!
SEuBo Das weiß ich selbst nicht so genau... hat Koda gesetzt.
Du solltest dein Koda updaten
frohes neues Jahr autoBert
Ähm also ich lese da nun nicht, dass es verboten ist das Decompilieren zu verhindern.
Das verhindern schaffst du ja nur in dem du die Aut2exe.exe bzw. deine EXE nachträglich veränderst, das aber verstösst gegen das CopyRight. Lies dir dazu die kompletten Lizenzbedingungen durch, lass sie notfalls von einem RA für IT/Wirtchaftsrecht prüfen er wird dir das betätigen. CopyRight und Lizenzvertösse sind in Deutchland kein Kavaliersdelikt und werden hart betraft.
Obfuscaten hingegen ist erlaubt, es ist ja sogar einer bei AutoIt dabei
mfg autoBert
Wo steht dass das verboten ist
Zitat von Lizenz (Hilfe)Reverse engineering. You may not reverse engineer or disassemble the SOFTWARE PRODUCT or compiled scripts that were created with the SOFTWARE PRODUCT.
Bzw. wer legt sowas fest?
der Author von AutoIt = Jonathan Bennett and the AutoIt Team,
mfg autoBert
@clockgen,
verwende AdlibRegister und du bist dieses Problem los:
;Scriptauszug
.
.
.
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CheckButton
If Boolean = False Then
AdlibRegister("ProzessCheck",10000)
Else
AdlibUnRegister("ProzessCheck")
EndIf
.
.
.
EndSwitch
WEnd
[/autoit] [autoit][/autoit] [autoit]Func ProzessCheck()
;Programm1
If ProcessExists( "Programm1.exe") Then
GUICtrlSetData( $Programm1Button, "stop" )
GUICtrlSetData( $Programm1Label, "[aktiv]" )
Else
GUICtrlSetData( $Programm1Button, "start" )
GUICtrlSetData( $Programm1Label, "[inaktiv]" )
_GUICtrlEdit_AppendText ( $InfoList, StringAddCR ( @HOUR & ":" & @MIN & ":" & @SEC & " - " & "Programm1 wurde Beendet" & @CRLF ))
EndIf
;Programm2
If ProcessExists( "Programm2.exe") Then
GUICtrlSetData( $Programm2Button, "stop" )
GUICtrlSetData( $Programm2Label, "[aktiv]" )
Else
GUICtrlSetData( $Programm2Button, "start" )
GUICtrlSetData( $Programm2Label, "[offline]" )
_GUICtrlEdit_AppendText ( $InfoList, StringAddCR ( @HOUR & ":" & @MIN & ":" & @SEC & " - " & "Programm2 wurde Beendet" & @CRLF ))
EndIf
.
.
.
;bis Programm6
EndFunc
du musst aber auch den sleep aus ProzessCheck entfernen
stayawayknight, auch im OnEvent-Modus kommt er nicht an AdlibRegister oder einer ähnlichen Hilfskontruktion aus
frohes neues Jahr autoBert
auch von mir die besten Grüsse für das beste Forum. Und hier ein kleines Feuerwerk,
mfg autoBert
Danke hat jetzt geklappt...
schön, dann ist dein Problem ja gelöst, schön wäre es allerdings auch wenn du den Thread auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)
mfg autoBert
Hallo philn,
für mich ist das ein Spaming-Tool, als solches verstösst es gegen die Forenregeln
Ich habe den Thread bis zur Überprüfung und evtl, Freigabe bzw. Löchung durch einen Mod/Admin dektiviert. PN an dich it unterwegs,
Edit: du solltest genau erklären was du damit bezwecken möchtest
mfg autoBert
Hallo lukiono,
San Andreas Multi Player hat nach meinem Wissensstand eine eigene Skriptsprache hierfür. Nein sie heisst nicht AutoIt und hier ist auch nicht das SA-MP upport-Forum,
mfg autoBert
Da muss ich wohl 3 AutoIt Programme schreiben und die gleichzeitig öffnen, damits schneller geht..
Auch dann wirst du nie gleichzeitig (also zur elben Sekunde) alle IE's die URL wechseln lassen können.
Deine zusätzliche Frage nach Proxy und [ offen ] Einen Button ohne Namen anklicken. (dieser Thread wurde von bernd670 geschlossen) lassen für mich nur den einen Schluss zu dass du (ein Ranking?) imanipulieren möchtest, deshalb weisse ich dich hiermit ausdrücklich auf die Forenregeln hin, da du meines Erachtens gegen den
ZitatDiese Liste ist ausdrücklich nicht vollständig. Programme, die dem hinter diesen Regeln stehenden Geist widersprechen, sind ebenso als nicht erlaubt anzusehen
verstösst
mfg autoBert
Wie kann ich alle 3 Fenster, die geöffnet werden, gleichzeitig öffnen lassen, und dass sie auch gleichzeitig arbeiten. Also 3 fenster gleichzeitig auf youtube wechseln und dann wieder auf google.
,,,
Hier werden die fenster ja nacheinander abgearbeitet
Gleichzeitig wirst du mit AutoIt nie erreichen, aber kannst du mir bitte erklären was du damit erreichen willst?
mfg autoBert
Hallo anton_s,
was willst du denn mit dieser Mausklickerei erreichen?
mfg autoBert
Hallo autoBert,
man nennt es Binäre Suche (vgl. Pseudocode).
Ok, jetzt ist mir klar warum die Messungen ein ähnliches Laufzeitverhalten wie _ArrayBinaryearch ergeben. Die wenigen Fälle wo MySearch schneller war ist wohl auf den von Kleiner bemerkten Fehler $low = 1 zurückzuführen. Diese Zeile habe ich vergessen anzupassen, als ich das Skript für Interpolationsuche von @abc_User umgeschrieben habe (=genau eine Zeile 83 in der Func, [Zeile 80 ist überflüsig fällt mir gerade auf] jetzt 2 Zeilen 78, da ich dies im vorhergehenden Post berichtigt habe).
@abc_User: im von @Grossvater geposteten Link ist eine interesante Aussage:
ZitatIn Spezialfällen kann die Interpolationssuche schneller sein als die binäre Suche.
Dies interpretiere ich so, dass ich die beiden im allgemeinen nicht sonderlich im Laufzeitverhalten unterscheiden.
Kleiner: ob Ceiling oder Int besser geeignet ist, darüber mache ich mir keine Gedanken, denn wenn ich einmal vor einem solchen Problem stehen sollte fällt mir sicher _ArrayBinarySearch ein,
mfg autoBert
Hallo ,
herzlich willkommen im Forum und viel Spass mit AutoIt.
Hier kannst du dir die Hilfe herunterladen.
Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee
und jetzt zu deinem Problem:
ZitatOb Grafik- oder DotMatrix-LCD, (fast) alles ist mit den richtigen Programmen visualisierbar. Meist verwendet man zum Anschluss den Parallel-Port (LPT) des Computers, so wie auch bei den „Standard“-LCD’s mit dem HD44780-Controller.
Quelle: http://www.exclaim.de/howtos/artikel…Controller.html
Such mal auf autoitscriptcom dort müsste es eine UDF für den Parallel-Port geben,
mfg autoBert
@Redclaw,
bin mir zwar nicht so sicher ob das so ok ist was du machen willst aber da der Thread freigegeben wurde bitte.
auch PU's/MOD's/ADMIN's sind nur Menchen. Wenn du allerdings Bedenken hast verstehe ich nicht wieso du dass dann untersstützt.
@Mod/Admin bitte prüfen (handelt sich um Metin2, zum Glück funktioniert das Skript nicht (mehr) )
mfg autoBert
Hallo abc_user,
ich habe mein Testkript jetzt auf 1000 Suchläufe erweitert:
#include <array.au3>
[/autoit] [autoit][/autoit] [autoit]Dim $aArray[20000]
For $i = 0 To 19999
Dim $string = Chr(Random(65, 90, 1))
For $j = 1 To 79
$string &= Chr(Random(97, 122, 1))
$aArray[$i] = $string
Next
Next
_ArraySort($aArray)
;_ArrayDisplay($aArray)
Dim $aSuchen[1001][11]
For $x = 1 To 1000
$aSuchen[$x][0] = Random(0, 19999, 1) ; zufällig ein Elementindex betimmen
$aSuchen[$x][1] = $aArray[$aSuchen[$x][0]] ;zu suchender String
Next
$Zeit = TimerInit()
$aSuchen[0][4] = $Zeit
For $x = 1 To 1000
$aSuchen[$x][2] = _MySearch($aArray, $aSuchen[$x][1])
If $aSuchen[$x][1] == $aArray[$aSuchen[$x][2]] Then
$aSuchen[$x][3] = True
Else
$aSuchen[$x][3] = False
EndIf
$aSuchen[$x][4] = TimerDiff($aSuchen[0][4])
$aSuchen[0][4] = TimerInit()
Next
$ende = TimerDiff($Zeit)
ConsoleWrite($ende & " MySearch" & @CRLF)
$Zeit = TimerInit()
$aSuchen[0][7] = $Zeit
For $x = 1 To 1000
$aSuchen[$x][5] = _ArraySearch($aArray, $aSuchen[$x][1])
If $aSuchen[$x][1] == $aArray[$aSuchen[$x][5]] Then
$aSuchen[$x][6] = True
Else
$aSuchen[$x][6] = False
EndIf
$aSuchen[$x][7] = TimerDiff($aSuchen[0][7])
$aSuchen[0][7] = TimerInit()
Next
$ende = TimerDiff($Zeit)
ConsoleWrite($ende & " _ArraySearch" & @CRLF)
$Zeit = TimerInit()
$aSuchen[0][10] = $Zeit
For $x = 1 To 1000
$aSuchen[$x][8] = _ArrayBinarySearch($aArray, $aSuchen[$x][1])
If $aSuchen[$x][1] == $aArray[$aSuchen[$x][8]] Then
$aSuchen[$x][9] = True
Else
$aSuchen[$x][9] = False
EndIf
$aSuchen[$x][10] = TimerDiff($aSuchen[0][10])
$aSuchen[0][10] = TimerInit()
Next
$ende = TimerDiff($Zeit)
ConsoleWrite($ende & " _ArrayBinarySearch" & @CRLF)
$aSuchen[0][0] = "zufälliger Index" ;per Rando ermittelter Index
$aSuchen[0][1] = "Suchstring" ;dazgehörigee tring
$aSuchen[0][2] = "MySearch ID" ;gefundener Index Myerach
$aSuchen[0][3] = "MySearch True/False" ;richtig
$aSuchen[0][4] = "MySearch Zeit"
$aSuchen[0][5] = "_ArraySearch ID"
$aSuchen[0][6] = "_ArraySearch True/False"
$aSuchen[0][7] = "_ArraySearch Zeit"
$aSuchen[0][8] = "_ArrayBinarySearch ID"
$aSuchen[0][9] = "_ArrayBinarySearch True/False"
$aSuchen[0][10] = "_ArrayBinarySearch Zeit"
_ArrayDisplay($aSuchen)
Func _MySearch($array, $value)
Local $low = 0;
Local $high = UBound($array) - 1
Local $mid = Int(($high + $low) / 2)
While $array[$low] <= $value And $array[$high] >= $value
$mid = Int(($high + $low) / 2)
If $array[$mid] < $value Then
$low = $mid + 1;
ElseIf $array[$mid] > $value Then
$high = $mid - 1;
Else
Return Int($mid);
EndIf
WEnd
If $array[$low] == $value Then
Return $low;
Else
Return -1; // Not found
EndIf
EndFunc ;==>_MySearch
Ergebnis:
Zitat532.497566031437 MySearch
63052.335981249 _ArraySearch
465.797468672694 _ArrayBinarySearch
mir ist immer noch nicht bekannt wie man dieses Suchverfahren nennt, es ist jedoch sehr schnell (im Schnitt fast genauso schnell wie _ArrayBinarySearch, in Einzelfällen auch chneller) benötigt wie dieses aber ein sortiertes Array. _ArrayBinarySearch ist aber meines Erachtens noch durch eine SQLite (In-Memory) DB zu schlagen, nicht umsonst nimmt BugFix in einigen Funcs für Array's SQLite zu Hilfe,
Edit: Im ArrayDisplay von Zwichenzeit seit 1. Suchlauf auf Einzelzeiten umgestellt
Edit2: $low angepasst, danke Kleiner
mfg autoBert
Hallo abc_User,
Aber zum Ermitteln der Startposition zum Suchen müssen die Strings ja auch addiert und dividiert werden..
Dann wird es sich wohl nicht auf Strings übertragen lassen.
Ich habe das Verfahren dahin umgestellt dass jeweils die Mitte der Daten genommen wird, so dass bei jedem Veruch der z keinem Treffer führt die Datenmenge halbiert wird. Ich weiss dass dieses Verfahren nicht neu ist und auch einen Namen hat. Getestet habe ich gegen _ArraySearch und _ArrayBinarySearch mit 20000 zufälligen Strings.
#include <array.au3>
[/autoit] [autoit][/autoit] [autoit]Dim $aArray[20000]
For $i = 0 To 19999
Dim $string = Chr(Random(65, 90, 1))
For $j = 1 To 79
$string &= Chr(Random(97, 122, 1))
$aArray[$i] = $string
Next
Next
_ArraySort($aArray)
_ArrayDisplay($aArray)
$iR = Random(15000, 19000, 1) ; zufällig ein Elementindex betimmen
$sToSearch = $aArray[$iR] ;zu suchender String
$anfang = TimerInit()
For $x = 1 To 100
$iMS = _MySearch($aArray, $sToSearch)
Next
$ende = TimerDiff($anfang)
ConsoleWrite($ende & " MySearch" & @CRLF)
$anfang = TimerInit()
For $x = 1 To 100
$iAS = _ArraySearch($aArray, $sToSearch)
Next
$ende = TimerDiff($anfang)
ConsoleWrite($ende & " _ArraySearch" & @CRLF)
$anfang = TimerInit()
For $x = 1 To 100
$iABS = _ArrayBinarySearch($aArray, $sToSearch)
Next
$ende = TimerDiff($anfang)
ConsoleWrite($ende & " _ArrayBinarySearch" & @CRLF)
ConsoleWrite($iR & " " & $iMS & " " & $iAS & " " & $iABS & @CRLF)
ConsoleWrite("ToSearch " & $aArray[$iR] & @CRLF)
ConsoleWrite("MySearch " & $aArray[$iMS] & @CRLF)
ConsoleWrite("Arrayearch " & $aArray[$iAS] & @CRLF)
ConsoleWrite("ArrayBinry " & $aArray[$iABS] & @CRLF)
Func _MySearch($array, $value)
Local $low = 1;
Local $high = UBound($array) - 1
Local $mid = Int(($high + $low) / 2)
While $array[$low] <= $value And $array[$high] >= $value
$mid = Int(($high + $low) / 2)
If $array[$mid] < $value Then
$low = $mid + 1;
ElseIf $array[$mid] > $value Then
$high = $mid - 1;
Else
Return Int($mid);
EndIf
WEnd
If $array[$low] == $value Then
Return $low;
Else
Return -1; // Not found
EndIf
EndFunc ;==>_MySearch
Hier die Ergebnisse für die letzten Messungen (Zeit im mS für 100 Durchläufe):
Zitat39.1817954516566 MySearch
11023.0758378509 _ArraySearch
48.4206791645307 _ArrayBinarySearch
Falls sehr viele Suchläufe stattfinden sollen würde sich aber imho eine SQLite-Datenbank empfehlen, denn da weiss ich dass ähnliche suchen in einer IN-Memory DB < 5 ms möglich sind, Jedoch bin ich mir nicht sicher ob das Einlesen diesen Zeitvorteil wieder zunichte macht.
Edit: nach Skriptumstellung auch Beitrag komplett neu
mfg autoBert
Edit bernd670 : AutoIt-Tag an die richtige Stelle gesetzt
Hallo J1nZ,
wenn ich bei mir die Url (aus deiner cite-Consolenaugabe) eintrage, klappt es mit dem in meinem vorherigen Beitrag geposteten Skript => es wird Herr angewählt, nach 8 sec wird Frau angewählt, nach weiteren 8 Sekunden wird wieder Herr angewählt. Über die FF.AU3 weiss ich eigentlich so gut wie nichts, das Skript beruht auf dem Beispiel in der Dokumentation zu _FFFormRadioButton
mfg autoBert
Hallo
teste eimal die Methode über den Index:
[autoit]_FFStart("DieURL")
If _FFIsConnected() Then
_FFFormRadioButton(0, 0, "index") ;Herr
Sleep(8000)
_FFFormRadioButton(1, 0, "index") ;Frau
Sleep(8000)
_FFFormRadioButton(0, 0, "index") ;Herr
Sleep(8000)
EndIf
mfg autoBert
Du hattest ein Leerzeichen vergessen. Ist meit das Problem bei run/shellexecute & co, dehalb habe ich immer eine Consolenausgabe dabei da fäll es auf. Der Comspec wird afaik nur gebraucht wenn Befehle des Kommandpinterpreters benutzt werden, nicht aber bei EXE-Datei aufrufen,
PS.: auf gelöst etzen nicht vergessen,
mfg autoBert