1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. autoBert

Beiträge von autoBert

  • Dateiendung aus Variable löschen

    • autoBert
    • 1. Januar 2011 um 19:27

    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

  • Funktion zu einem bestimmten Zeitpunkt ausführen

    • autoBert
    • 1. Januar 2011 um 13:54

    Hallo philn,

    Zitat von 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)

    Zitat von SEuBo

    Wo hast du denn das Makro @UNICODE her?!

    Zitat von philn

    SEuBo Das weiß ich selbst nicht so genau... hat Koda gesetzt.

    Du solltest dein Koda updaten

    frohes neues Jahr autoBert

  • Anti Decompiler

    • autoBert
    • 1. Januar 2011 um 03:55
    Zitat von chip

    Ä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

  • Anti Decompiler

    • autoBert
    • 1. Januar 2011 um 03:04
    Zitat von VAST

    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.

    Zitat von VAST

    Bzw. wer legt sowas fest?


    der Author von AutoIt = Jonathan Bennett and the AutoIt Team,

    mfg autoBert

  • Programmablauf

    • autoBert
    • 1. Januar 2011 um 00:55

    @clockgen,

    verwende AdlibRegister und du bist dieses Problem los:

    Spoiler anzeigen
    [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    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

  • Silvester

    • autoBert
    • 1. Januar 2011 um 00:05

    auch von mir die besten Grüsse für das beste Forum. Und hier ein kleines Feuerwerk,

    mfg autoBert

  • Arrays ohne Wertzweisung

    • autoBert
    • 31. Dezember 2010 um 16:37
    Zitat von floschlo

    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

  • Funktion zu einem bestimmten Zeitpunkt ausführen

    • autoBert
    • 31. Dezember 2010 um 15:33

    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

  • Sa-Mp Keybinder

    • autoBert
    • 31. Dezember 2010 um 15:16

    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

  • In den Fenster gleichzeitig arbeiten.

    • autoBert
    • 31. Dezember 2010 um 15:00
    Zitat von toblono

    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

    Zitat

    Diese 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

  • In den Fenster gleichzeitig arbeiten.

    • autoBert
    • 31. Dezember 2010 um 14:15
    Zitat von toblono

    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

  • Auswahlmenü erstellen

    • autoBert
    • 31. Dezember 2010 um 13:51

    Hallo anton_s,

    was willst du denn mit dieser Mausklickerei erreichen?

    mfg autoBert

  • Komplexeres? schnelles durchsuchen größerer Arrays

    • autoBert
    • 31. Dezember 2010 um 13:27
    Zitat von Großvater

    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:

    Zitat

    In 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

  • Funktionen von DLLs auslesen und anwenden

    • autoBert
    • 31. Dezember 2010 um 01:59

    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:

    Zitat

    Ob 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

  • Einen Button ohne Namen anklicken.

    • autoBert
    • 31. Dezember 2010 um 00:49

    @Redclaw,

    Zitat von 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

  • Komplexeres? schnelles durchsuchen größerer Arrays

    • autoBert
    • 31. Dezember 2010 um 00:24

    Hallo abc_user,

    ich habe mein Testkript jetzt auf 1000 Suchläufe erweitert:

    Spoiler anzeigen
    [autoit]

    #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)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    Func _MySearch($array, $value)
    Local $low = 0;
    Local $high = UBound($array) - 1
    Local $mid = Int(($high + $low) / 2)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Ergebnis:

    Zitat

    532.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

  • Komplexeres? schnelles durchsuchen größerer Arrays

    • autoBert
    • 30. Dezember 2010 um 21:32

    Hallo abc_User,

    Zitat von 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.

    Spoiler anzeigen
    [autoit]

    #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)

    [/autoit] [autoit][/autoit] [autoit]

    $iR = Random(15000, 19000, 1) ; zufällig ein Elementindex betimmen
    $sToSearch = $aArray[$iR] ;zu suchender String

    [/autoit] [autoit][/autoit] [autoit]

    $anfang = TimerInit()
    For $x = 1 To 100
    $iMS = _MySearch($aArray, $sToSearch)
    Next
    $ende = TimerDiff($anfang)
    ConsoleWrite($ende & " MySearch" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $anfang = TimerInit()
    For $x = 1 To 100
    $iAS = _ArraySearch($aArray, $sToSearch)
    Next
    $ende = TimerDiff($anfang)
    ConsoleWrite($ende & " _ArraySearch" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $anfang = TimerInit()
    For $x = 1 To 100
    $iABS = _ArrayBinarySearch($aArray, $sToSearch)
    Next
    $ende = TimerDiff($anfang)
    ConsoleWrite($ende & " _ArrayBinarySearch" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    Func _MySearch($array, $value)
    Local $low = 1;
    Local $high = UBound($array) - 1
    Local $mid = Int(($high + $low) / 2)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]
    • Die gute Nchricht zuerst, es funktioniert mit String's und schlägt _ArraySearch.
    • die chlechte Nachricht es geht noch schneller_ArrayBinarySearch ist fast immer Sieger und schlägt_ArraySearch um > Faktor 100 und meine Suche im Schnitt um Faktor 1,5 (knapp 40 ms absolut)


    Hier die Ergebnisse für die letzten Messungen (Zeit im mS für 100 Durchläufe):

    Zitat

    39.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

  • Radiobutton auswählen

    • autoBert
    • 30. Dezember 2010 um 19:33

    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

  • Radiobutton auswählen

    • autoBert
    • 30. Dezember 2010 um 18:47

    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

    [/autoit][autoit][/autoit][autoit][/autoit]

    mfg autoBert

  • Dienste starten und beenden

    • autoBert
    • 30. Dezember 2010 um 17:16

    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™