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

Beiträge von GtaSpider

  • Tunnel - kleiner Zeitvertreib für Zwischendurch

    • GtaSpider
    • 15. April 2015 um 15:37

    Nett :) Und vor Allem mit so wenig Code, ich weiß schon warum ich AutoIt liebe ;)

    Du könntest auch die Randomness erhöhen (Statt *2, erst mal 2.5 dann 3 etc)

    lg,
    Spider

    p.s. 10 ist aber vielleicht etwas viel :D

    Bilder

    • Unbenannt.JPG
      • 22,6 kB
      • 216 × 421
  • AutoIt User Comic – Showroom

    • GtaSpider
    • 3. Februar 2015 um 16:46

    Hey,

    Meine Freundin fand die Idee witzig und hat kurzerhand was gezaubert!
    Drei mal dürft ihr raten, wer hier abgebildet ist :D

    Gruß,
    Spider

  • ProgessOn Frage

    • GtaSpider
    • 28. Januar 2015 um 15:15

    Hat doch Micha_he schon geschrieben: Aktueller Wert / Maximaler Wert * 100. In deinem Beispiel: 60 s / 120s * 100% = 50%.

    [autoit]

    ProgressOn("", "")
    $iMaxSek = 120
    For $i = 0 To $iMaxSek
    ProgressSet($i / $iMaxSek * 100, Round($i / $iMaxSek * 100) & "% (" & $i & " Sek)")
    Sleep(50)
    Next
    Sleep(1000)
    ProgressOff()

    [/autoit]

    Gruß,
    Spider

  • Regeln für den „AI Fight“ Wettbewerb

    • GtaSpider
    • 26. Januar 2015 um 22:45

    Hey Make,

    Sehr geil das du das durchziehst! Ich habe dir ja geschrieben, dass ich selbst bei der SoftwareChallenge sowohl als Teilnehmer als auch als Veranstalter mitgemacht habe, deswegen würde ich dir gerne noch ein Tipp geben: Ich würde den Server nicht als Include Datei benutzten sondern ich würde den Server eigenständig schreiben und ihn per TCP/IP ansprechbar machen. Dann gibst du ne kleine UDF mit, die die TCP Befehle schon enthalten. Wir benutzten dafür ein einfaches XML Protokoll. Das hat einfach den Vorteil, dass die User nachher einfach nur ihre Scripte abgeben müssen und du kein Wirrwarr hast mit doppelten Funktionsaufrufen.

    Wenn du willst kann ich dir da ein wenig helfen, wenn du Hilfe brauchst, außerdem kann ich dir gern per PM mal den AutoIt Sourcecode meiner damaligen Clients zu schicken.

    Gruß,
    Spider

  • Umfrage - Wettbewerb >> AI vs AI

    • GtaSpider
    • 12. Januar 2015 um 23:51

    Hey,

    Meine Uni bietet sowas ähnliches an für Schulklassen. Heißt "Software Challenge" und findet Jährlich statt. Die Idee dahinter ist ähnlich deiner: Es werden simple Brettspiele genommen, wie z.B. Mensch Ärgere Dich Nicht oder Hase & Igel, wir stellen ein Server bereit, der alle Regeln beherrscht und ein Spielfeld und die nötigen Schnittstellen bereitstellt damit die User z.B. die Figuren via figure1.Move (Java) bewegen können. Das ganze hat unsere Uni mittels TCP/IP aufgebaut um alle Programmiersprachen zu beherrschen (ich habe übrigends den ersten Client der SC eingereicht der nicht in Java sondern in AutoIt programmiert war^^). Das Problem an der ganzen Sache: So ein Server bereit zu stellen ist unglaublich aufwendig, selbst wenn du es nur mit einfachen KI's machen willst, die ja aber auch nicht zu einfach werden dürfen (ich denke da z.B. an Tic Tac Toe, nicht dass da sowas zu stande kommt: TTT :D)

    Ich finde die Idee sehr gut, aber ich würde es erstmal mit einem ersten Versuch testen um zu überprüfen wie Aufwendig das alles ist; ich wäre auf jeden Fall dabei :)

    Gruß,
    Spider

  • Zeichenkette Formatiert zusammen ausgeben

    • GtaSpider
    • 9. Januar 2015 um 18:24

    Hey,

    StringFormat ist dafür nicht gemacht, da es keine Abfragen kennt. Wenn du es in einer Zeile haben willst (und du die aktuelle Version von AutoIt benutzt) kannst du es aber so lösen:

    [autoit]

    $Text1 = ""
    $Text2 = "ho"

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

    MsgBox(0,"", $Text1 & ((($Text1 = "") Or ($Text2 = "")) ? "" : " -- ") & $Text2)

    [/autoit]

    Gruß,
    Spider

  • CSV_Objekt - UDF

    • GtaSpider
    • 31. Dezember 2014 um 03:09

    Hallo,

    Der große Vorteil von Objektorientierten Sprachen ist doch die Verschachtelung mehrerer Objekte ineinander (z.B. gui.edit.getdata.toint). Ansonsten ist es tatsächlich nichts anderes als ein leicht veränderter Syntax.

    Gruß,
    Spider

  • _DynArray-UDF - halbdynamische Arrays mit AutoIt

    • GtaSpider
    • 26. Dezember 2014 um 14:25

    Hey,

    Wirklich sehr genial, danke dir!
    Die AutoIt devs sind darauf gekommen ;) Schau dir mal die neuste Beta an. Da gibt es Maps..

    Gruß,
    Spider

  • Tcp file Transfer

    • GtaSpider
    • 25. Dezember 2014 um 19:20

    Hallo,

    Habe vor einiger Zeit mal was geschrieben was dir bestimmt weiterhilft ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    TCPStartup()

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

    _DownloadBySpeed_SetSpeed(10)
    _DownloadBySpeed_GetSpeed()

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

    GUICreate("")
    $hSlider = GUICtrlCreateSlider(0, 0, 400, 40)
    GUICtrlSetLimit(-1, 1000, 10)
    $hProgress = GUICtrlCreateProgress(0, 40, 400, 40)
    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")
    GUISetState()

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

    _DownloadBySpeed("http://ipv4.download.thinkbroadband.com/5MB.zip", @DesktopDir & "\5mb.zip", _Proc)
    ToolTip("Done")
    While GUIGetMsg() <> -3
    WEnd

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

    Func _Proc($iProc)
    Local Static $iLastProc = -1
    $iProc = Round($iProc)
    If $iProc <> $iLastProc Then
    $iLastProc = $iProc
    GUICtrlSetData($hProgress, $iProc)
    EndIf
    EndFunc ;==>_Proc

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

    ;===============================================================================
    ;
    ; Function Name: _DownloadBySpeed
    ; Description:: Downloads a file by a selected speed (Select speed via _DownloadBySpeed_SetSpeed($iKbytes)
    ; Parameter(s): $sUrl: URL to file, sFilePath: FilePath, $sProcFunc: ProgressFunction. formed like this: _Prog($iProg) where $iProg is a number between 0-100
    ; Requirement(s): TCPStartUp()
    ; Return Value(s): True if okay, Error if not
    ; Author(s): GtaSpider//Max Reble
    ;
    ;===============================================================================
    ;

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

    Func _DownloadBySpeed($sUrl, $sFilePath, $sProcFunc = False)
    ;The smaller the buffersize, the more exact is the speed
    ;But when the Buffersize is too small, it won't work well on high speed
    ;For example: 10 kByte is okay for 10-1000 kbyte/s, 1kByte is okay for 1-100 kbyte/s and 100kByte is okay for 100-10000 kbyte/s
    Local Const $iBuffer = 10 * 1024

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

    Local $aRegEx, $sIP, $hCon, $hOpen, $vRecv, $fConnected = True, $iFileSize, $iRecvByte, $hTimer
    $aRegEx = StringRegExp($sUrl, "^(?:(?:http[s]?|ftp):\/)?\/?([^:\/\s]+)(?::([^\/]*))?((\/\w+)*\/.*?)$", 3);$1: Host, $2: Port, $3: Request
    If @error Then Return SetError(@error, 1, 0)
    If Not $aRegEx[1] Then $aRegEx[1] = 80
    $sIP = TCPNameToIP($aRegEx[0])
    If @error Then Return SetError(@error, 2, 0)
    $hCon = TCPConnect($sIP, $aRegEx[1])
    If @error Then Return SetError(@error, 3, 0)

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

    $hOpen = FileOpen($sFilePath, 2 + 16)
    If $hOpen <= 0 Then Return SetError(0xff, 4, 0)

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

    $iFileSize = InetGetSize($sUrl)

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

    TCPSend($hCon, "GET " & $aRegEx[2] & " HTTP/1.1" & @CRLF & "Host: " & $aRegEx[0] & @CRLF & @CRLF)
    If @error Then Return SetError(@error, 5, 0)
    While $fConnected
    $hTimer = TimerInit()
    $vRecv = TCPRecv($hCon, $iBuffer, 1)
    $fConnected = Not @error
    $iRecvByte += BinaryLen($vRecv)
    FileWrite($hOpen, $vRecv)
    If IsFunc($sProcFunc) Then $sProcFunc(100 * $iRecvByte / $iFileSize)
    Sleep(($iBuffer * 1000 / _DownloadBySpeed_GetSpeed()) - TimerDiff($hTimer))
    WEnd

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

    FileClose($hOpen)

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

    Return True
    EndFunc ;==>_DownloadBySpeed

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

    Func _DownloadBySpeed_SetSpeed($iKbytesSpeed = Null)
    Local Static $iSpeed = 0
    If $iKbytesSpeed = Null Then
    Return $iSpeed
    Else
    $iSpeed = $iKbytesSpeed * 1024
    EndIf
    EndFunc ;==>_DownloadBySpeed_SetSpeed

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

    Func _DownloadBySpeed_GetSpeed()
    Return _DownloadBySpeed_SetSpeed(Null)
    EndFunc ;==>_DownloadBySpeed_GetSpeed

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

    Func WM_HSCROLL($hwnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam
    Local Static $hwndSlider = GUICtrlGetHandle($hSlider)
    Local $iSlider
    If $iMsg = $WM_HSCROLL And $lParam = $hwndSlider Then
    $iSlider = GUICtrlRead($hSlider)
    ToolTip($iSlider & " kByte/s")
    _DownloadBySpeed_SetSpeed($iSlider)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_HSCROLL

    [/autoit]

    Gruß,
    Spider

  • Convert to Uint32, Uint8 oder int16

    • GtaSpider
    • 21. Dezember 2014 um 00:32

    Hey,

    Hilfe anschauen ;) uint16 --> ushort

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    $tData = DllStructCreate("byte data[1024]")

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

    ;Hier kommen dann deine TCP Recv Funktion hin

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

    ;~ $sRecv = TCPRecv(..)
    $sRecv = Binary("0x3678696373610000300000000000000030020000020300")
    $tData.data = $sRecv

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

    $tCALLBACK_FORCED_ACK = DllStructCreate("char uid[8];char connected_uid[8];char position;byte hardware_version[3]; byte firmware_version[3];ushort device_identifier;byte enumeration_type",DllStructGetPtr($tData))

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

    ConsoleWrite(DllStructGetData($tCALLBACK_FORCED_ACK,"uid") & @CRLF)

    [/autoit]

    Gruß,
    Spider

  • Convert to Uint32, Uint8 oder int16

    • GtaSpider
    • 18. Dezember 2014 um 21:29

    HEy,

    Einfach das Binary() wegnehmen oder mit Int()

    Spoiler anzeigen
    [autoit]

    $tStruct = DllStructCreate("uint convert32;")
    DllStructSetData($tStruct, "convert32", 33688)
    $uint32 = Binary(DllStructGetData($tStruct, "convert32"))
    $default = DllStructGetData($tStruct, "convert32")

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

    ConsoleWrite("Uint32: " & $uint32 & @CRLF)
    ConsoleWrite("Default: " & $default & @CRLF)
    ConsoleWrite("Uint32 -> Int: " & Int($uint32) & @CRLF)

    [/autoit]

    Gruß,
    Spider

  • Convert to Uint32, Uint8 oder int16

    • GtaSpider
    • 17. Dezember 2014 um 21:33

    Geht auch mit 3.3.8.1 (warum benutzt du die Alte denn noch?)

    Spoiler anzeigen
    [autoit]

    $tStruct = DllStructCreate("uint convert32; short convert16;byte convert8")
    DllStructSetData($tStruct,"convert32",33688)
    DllStructSetData($tStruct,"convert16",33688);Achtung! signed short, nicht unsigned short
    DllStructSetData($tStruct,"convert8",33688);Passt hinten und vorne nicht. int8 kann nur ein byte (0-255) aufnehmen.
    ConsoleWrite(Binary(DllStructGetData($tStruct,"convert32")) & @CRLF)
    ConsoleWrite(Binary(DllStructGetData($tStruct,"convert16")) & @CRLF)
    ConsoleWrite(Binary(DllStructGetData($tStruct,"convert8")) & @CRLF)

    [/autoit]
  • Convert to Uint32, Uint8 oder int16

    • GtaSpider
    • 16. Dezember 2014 um 21:13

    Oder gleich nativ...

    Spoiler anzeigen
    [autoit]


    $tStruct = DllStructCreate("uint convert32; short convert16;byte convert8")
    $tStruct.convert32 = 33688
    $tStruct.convert16 = 33688;Achtung! signed short, nicht unsigned short
    $tStruct.convert8 = 33688;Passt hinten und vorne nicht. int8 kann nur ein byte (0-255) aufnehmen. Uint8 sollte nicht mehr verwendet werden, gibt es in AutoIt deswegen auch nicht mehr, da müsstest du ggf. selbst Hand anlegen
    ConsoleWrite(Binary($tStruct.convert32) & @CRLF)
    ConsoleWrite(Binary($tStruct.convert16) & @CRLF)
    ConsoleWrite(Binary($tStruct.convert8) & @CRLF)

    [/autoit]
  • Roboterarm / FTDI FT232RL / Com-Usb

    • GtaSpider
    • 12. Dezember 2014 um 19:18

    Hey,

    Mit dem Arm hab ich noch keine Erfahrung gehabt, aber mit COM32 und AutoIt ;) Die wohl beste COM Api ist die "CommAPI" :D Diese ist nämlich nativ und braucht keine extra DLL.

    Der Code müsste dann einfach so aussehen:

    Spoiler anzeigen
    [autoit]

    #include 'CommInterface.au3'

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

    Const $iComport = 3
    Const $iBaudrate = 57600
    Const $iBits = 8

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

    ConsoleWrite('>Error code: ' & @error & @CRLF & @CRLF & '@@ Trace(9) : $hCommAPI = _CommAPI_OpenCOMPort($iComport, $RS232_Baudrate, 0, $RS232_Bits)' & @CRLF) ;### Trace Console
    $hCommAPI = _CommAPI_OpenCOMPort($iComport, $iBaudrate, 0, $iBits)

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

    ConsoleWrite('>Error code: ' & @error & @CRLF & @CRLF & '@@ Trace(12) : _CommAPI_TransmitString($hCommAPI,"s")' & @CRLF) ;### Trace Console
    _CommAPI_TransmitString($hCommAPI,"s")

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

    ConsoleWrite('>Error code: ' & @error & @CRLF & @CRLF & '@@ Trace(15) : _CommAPI_CloseHandle($hCommAPI)' & @CRLF) ;### Trace Console
    _CommAPI_ClosePort($hCommAPI)
    ConsoleWrite('>Error code: ' & @error & @CRLF & @CRLF ) ;### Trace Console

    [/autoit]

    Gruß,
    Spider

  • Geschwindigkeitsoptimierung in AutoIt

    • GtaSpider
    • 11. Dezember 2014 um 17:42

    Hallo,

    Schön! Vielen Dank für das Feedback, da kann man sich doch gut was raus holen :)

    Zitat von Oscar

    GtaSpider : Bei mir erscheint als Ergebnis Deines Testscript auch, das For...Next am schnellsten ist, aber in der Schleife wird ja auch nichts ausgeführt.
    Wenn man das Script etwas abwandelt (praxisnäher gestaltet), dann relativiert sich das Ergebnis etwas. For...Next ist zwar noch immer am schnellsten, aber nicht derart krass.

    Stimmt; das hab ich nicht beachtet. ToolTip ist Grafisch, hier auch mal mit einer nicht grafischen Funktion

    Script
    [autoit]

    ;By GtaSpider
    #include <Array.au3>

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

    #Region Hier ggf Daten verändern
    Global Const $iNumberOfTestFuncs = 3;Wie viele Funktionen es gibt (werden benannt nach _TestFunc_1, _TestFunc_2, ..., _TestFunc_N)
    Global Const $iNumberOfTestRuns = 0xfff;Wie viele Tests pro Funktion

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

    Global Const $aFuncNames[$iNumberOfTestFuncs + 1] = ["", _
    "For", _;Funktionsname 1
    "While", _;Funktionsname 2
    "Do"];Funktionsname 3

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

    Global Const $vParam = 100

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

    Func _TestFunc_1($vParam = False);funktion 1
    For $i = 1 To $vParam
    Assign("a",$i)
    Next
    EndFunc ;==>_TestFunc_1

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

    Func _TestFunc_2($vParam = False);funktion 2
    Local $i = 0
    While $i < $vParam
    Assign("a",$i)
    $i += 1
    WEnd
    EndFunc ;==>_TestFunc_2

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

    Func _TestFunc_3($vParam = False);funktion 3
    Local $i
    Do
    Assign("a",$i)
    $i+=1
    Until $i = $vParam
    EndFunc ;==>_TestFunc_3

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

    Func _TestFunc_4($vParam = False);funktion 4
    ;...
    EndFunc ;==>_TestFunc_4

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

    ;...

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

    #EndRegion Hier ggf Daten verändern

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

    _Main()

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

    Func _Main()
    Local $hTimer, $nFuncCounter, $nTestCounter, $iMinIndex, $iMaxIndex, $sCPUname, $aMemStats, $sAutX64
    Local $aiTimers[$iNumberOfTestFuncs + 1] = [$iNumberOfTestFuncs]

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

    ConsoleWrite(StringFormat(">Start %d number of funcs á %d number of tests with parameter %s\r\n", $iNumberOfTestFuncs, $iNumberOfTestRuns, $vParam))

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

    For $nFuncCounter = 1 To $iNumberOfTestFuncs
    ConsoleWrite(StringFormat(">Start Test %d/%d", $nFuncCounter, $iNumberOfTestFuncs))
    $hTimer = TimerInit()
    #Region SAFE
    For $nCounter = 1 To $iNumberOfTestRuns
    Call("_TestFunc_" & $nFuncCounter, $vParam)
    Next
    $aiTimers[$nFuncCounter] = TimerDiff($hTimer)
    #EndRegion SAFE
    ConsoleWrite(StringFormat(" --> %f ms\r\n", $aiTimers[$nFuncCounter]))
    Next

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

    $iMinIndex = _ArrayMinIndex($aiTimers, 1, 1)
    $iMaxIndex = _ArrayMaxIndex($aiTimers, 1, 1)

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

    $sCPUname = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString")
    $aMemStats = MemGetStats()
    $sAutX64 = "x86"
    If @AutoItX64 Then $sAutX64 = "x64"

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

    ;Geht nicht da wir abwärtskompatibel bleiben sollten. (Ternärer Operator)
    ;~ ConsoleWrite(StringFormat("\r\n>Result with AutoIt %s %s.\r\n>CPU: %s %s\r\n>RAM: %.2f/%.2f GB\r\n>OS: %s (%d) %s\r\n", @AutoItVersion, (@AutoItX64 ? "x64" : "x86"), $sCPUname, @CPUArch, $aMemStats[2] / 1024 / 1024, $aMemStats[1] / 1024 / 1024, @OSVersion, @OSBuild, @OSArch))

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

    ConsoleWrite(StringFormat("\r\n>Result with AutoIt %s %s.\r\n>CPU: %s %s\r\n>RAM: %.2f/%.2f GB\r\n>OS: %s (%d) %s\r\n>Parameter: %s\r\n", @AutoItVersion, $sAutX64, $sCPUname, @CPUArch, $aMemStats[2] / 1024 / 1024, $aMemStats[1] / 1024 / 1024, @OSVersion, @OSBuild, @OSArch,$vParam))

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

    For $nFuncCounter = 1 To $iNumberOfTestFuncs
    Switch $nFuncCounter
    Case $iMinIndex
    ConsoleWrite("+");schnellster bekommt ein Plus (Grün in SciTE)
    Case $iMaxIndex
    ConsoleWrite("!");langsamster wird Rot dargestellt
    Case Else
    ConsoleWrite("-");Neutral Gelb
    EndSwitch
    ConsoleWrite(StringFormat("Func %s (%d)\tneeds for %d runs %.2f ms (Average: %.4f ms)\t--> ", $aFuncNames[$nFuncCounter], $nFuncCounter, $iNumberOfTestRuns, $aiTimers[$nFuncCounter], $aiTimers[$nFuncCounter] / $iNumberOfTestRuns))
    Switch $nFuncCounter
    Case $iMinIndex
    ConsoleWrite(StringFormat("1.0x\r\n"))
    Case Else
    ConsoleWrite(StringFormat("%.1fx\r\n", $aiTimers[$nFuncCounter] / $aiTimers[$iMinIndex]))
    EndSwitch

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

    Next
    ConsoleWrite(StringFormat("\r\n"))
    EndFunc ;==>_Main

    [/autoit]
  • Fenster maximieren

    • GtaSpider
    • 11. Dezember 2014 um 00:14

    Hey,

    Sorry, da hab ich falsch abgeschrieben. Das erste A muss natürlich klein. Siehst du mit dem Window Info Tool aber auch ;) Da schau dir einfach mal den zweiten Link an den ich oben gepostet hab, da wird das Tool erklärt.

    [autoit]

    WinSetState("[CLASS:MSPaintApp]", "", @SW_MAXIMIZE)

    [/autoit]

    Ja, deswegen heißt es ja SciTE Lite, weil da alle Funktionen draußen sind.. Entweder du holst dir die normale Version oder du machst es per Hand mit ConsoleWrite("Zeile "&@ScriptLineNumber&@CRLF) über/unter jedem Befehl.

    Gruß,
    Spider

  • Fenster maximieren

    • GtaSpider
    • 10. Dezember 2014 um 22:47

    Hey,

    Die Klasse von Paint ist nicht Paint sondern "MSPAintApp". Findest du raus mit dem AutoIt Window Tool (das findest du irgendwo im AutoIt ordner unter C:\Programme (x86)\AutoIt".

    Ja, in Scite: Tools -> Trace: Add Trace Lines

    Im Editor gibt es ganz rechts überhalb des Textfensterns so ein AutoIt zeichen. Da rauf klicken. Oder per hand: [autoit ][/autoit ] (ohne leerzeichen am Ende)

    Hast du schonmal in unserem Tutorial vorbei geschaut?
    http://wiki.autoit.de/wiki/index.php/Tutorial
    In der Hilfe gibt es auch ein erste Schritte Tutorial:
    http://translation.autoit.de/onlinehilfe/tu…pad/notepad.htm

    lg,
    Spider

  • Geschwindigkeitsoptimierung in AutoIt

    • GtaSpider
    • 10. Dezember 2014 um 20:34

    Hey,

    Klar, habt ihr beide recht mit. Irgendwann ist der Algorhytmus (gerade bei sowas wie ein Sniffer) aber Optimiert bis zum geht nicht mehr und dann kann es schon interessant werden ob z.B. GuiCtrlListViewCreate oder _GuiCtrlListView_Create schneller ist. In der Live Darstellung (>30 Aktualisierungen pro Sekunde) geht da bei nicht optimierter Programmierung schnell AutoIt in die Knie (unabhängig vom Prozessor).

    Auch wenn ich C und ein großteil von C++ beherrsche, lager ich gerne trotzdem viele einfache Sachen noch in AutoIt aus, ganz einfach wegen der Einfachheit der Sprache.

    Ich wollte hier aber auch keine Diskussion auslösen, ob man AutoIt für rechenintensive Vorgänge benutzen sollte oder nicht, manche tuns mehr, manche weniger, die Diskussion hatten wir schon oft genug hier im Forum, also lassen wir es jetzt bitte darauf beruhen.

    Falls jemand noch Ideen zur Codeoptimierung hat, natürlich immer gerne her damit :)

    lg,
    Spider

  • Geschwindigkeitsoptimierung in AutoIt

    • GtaSpider
    • 10. Dezember 2014 um 19:06

    Hallo,

    Dem kann ich nur bedingt zu stimmen. Natürlich stimmt es, dass AutoIt nicht für wirklich rechenintensive Aufgaben geeignet ist, sehr wohl aber für eine schnelle Benutzeroberfläche, wenn man es richtig angeht.
    Ich habe z.B. ein Projekt geschrieben, welches auf einem Low Level PC laufen soll (Atom 1,4 GHz; 1gb ram; win7) und welches Live Daten via WinPcap interpretiert und anzeigt und das in Millisekunden raster. Das habe ich nur geschafft in dem ich an jeder Kleinigkeit herum experimentiert habe um es so effizient wie nur möglich zu gestalten, da hier wirklich sehr viel interpretiert wird.

    Klar beim If/Switch Fall ist es relativ egal, man sieht ja das bei einem Aufruf der unterschied bei 0,002 ms ist, aber z.B. die Geschichte mit der For/While Schleife war hier sehr hilfreich und wenn ich nun 50 Interpretationsfunktionen habe, in denen ich alle von While auf For wechsle sind das gut und gerne paar Millisekunden die man direkt merkt.

    Ein paar Daten die da durchlaufen müssen allerdings noch entschlüsselt und entpackt werden, das lagere ich natürlich hier auch auf C aus, da hatte AutoIt keine Chance.

    Trotzdem: Ich arbeite mit AutoIt nach wie vor sehr gerne wenn es um grafische Angelegenheiten geht, da ist AutoIt C/C++ weit überlegen was die Einfachheit angeht; wenn der Kunde ein Änderungswunsch hat --> kein Problem, eine Stunde später steht die neue GUI.

    Deswegen dieser Thread, ich dachte mir falls jemand ein ähnliches Vorhaben hat kann er/sie sich hier paar Tips abholen ;)

    Gruß'
    Spider

  • Geschwindigkeitsoptimierung in AutoIt

    • GtaSpider
    • 10. Dezember 2014 um 15:36

    Hey,

    Ich wollte hier mal ein kleines Tutorial schreiben, wie man sein Script, wenn es wirklich um jede nanosekunde geht, optimieren kann. Ich würde mir wünschen, das ihr auch was dazu Beiträgt, egal in welchem Bereiech (Sei es nun einfache Funktionen, GDI, GUI, Operatoren, Arrays, ...) - immer alles her damit. :)

    Unten findet ihr ein Script mit dem ihr es testen könnt und eure Ergebnisse teilen könnt:

    Ich mache mal den Anfang:

    PC Info
    Zitat

    >Result with AutoIt 3.3.12.0 x86.
    >CPU: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz X64
    >RAM: 4.97/7.94 GB
    >OS: WIN_81 (9600) X64

    If/Switch/Select/Ternär

    Bei den If/Switch/Select gibt es kaum ein unterschied mittlerweile wobei es bei If abhängig davon ist, ob die expression wahr oder falsch ist, bei Switcht uns Select allerdings nicht. Witzig, weil es früher andersrum war, da hat If Switch um längen geschlagen mittlerweile ist dem nicht mehr so.
    Die neuen Ternären Operatoren in der Aktuellen AutoIt Version sind allerdings die schnellsten ($vParam = True ? True : False)

    Zitat

    >Parameter: True
    !Func If x = True Then (1) needs for 1048575 runs 3866.03 ms (Average: 0.0037 ms) --> 1.1x
    -Func If x <> True Then (2) needs for 1048575 runs 3725.93 ms (Average: 0.0036 ms) --> 1.0x
    -Func Switch (3) needs for 1048575 runs 3702.88 ms (Average: 0.0035 ms) --> 1.0x
    -Func Select (4) needs for 1048575 runs 3737.54 ms (Average: 0.0036 ms) --> 1.0x
    +Func Ternär (5) needs for 1048575 runs 3625.00 ms (Average: 0.0035 ms) --> 1.0x

    Zitat

    >Parameter: False
    !Func If x = True Then (1) needs for 1048575 runs 3710.02 ms (Average: 0.0035 ms) --> 1.0x
    -Func If x <> True Then (2) needs for 1048575 runs 3691.45 ms (Average: 0.0035 ms) --> 1.0x
    -Func Switch (3) needs for 1048575 runs 3667.33 ms (Average: 0.0035 ms) --> 1.0x
    -Func Select (4) needs for 1048575 runs 3698.65 ms (Average: 0.0035 ms) --> 1.0x
    +Func Ternär (5) needs for 1048575 runs 3578.56 ms (Average: 0.0034 ms) --> 1.0x

    For/While/Do

    For ist am schnellsten, While/Do geben sich nicht viel

    Zitat

    >Parameter: 100
    +Func For (1) needs for 4095 runs 842.98 ms (Average: 0.2059 ms) --> 1.0x
    -Func While (2) needs for 4095 runs 1049.78 ms (Average: 0.2564 ms) --> 1.2x
    !Func Do (3) needs for 4095 runs 1064.12 ms (Average: 0.2599 ms) --> 1.3x

    ListView


    Sollte selbsterklärend und auch nicht überraschend sein, Begin/EndUpdate schlägt hier alles obwohl die Nativen Funktionen nur kurz dahinter sind

    Zitat

    -Func GUICtrlCreateListViewItem (1) needs for 255 runs 3129.61 ms (Average: 12.2730 ms) --> 1.1x
    !Func _GUICtrlListView_AddItem (2) needs for 255 runs 6763.17 ms (Average: 26.5222 ms) --> 2.3x
    +Func _GUICtrlListView_AddItem BeginUpdate (3) needs for 255 runs 2901.29 ms (Average: 11.3776 ms) --> 1.0x

    Strukturen

    DllSructSetData mit Index ist am schnellsten, danach DllstructSetData mit Namen (Bezeichnung). Die in der euen AutoIt Version eingeführte Möglichkeit Strukturen direkt aufzurufen sieht zwar schick aus im Code ist aber am langsamsten ($tStruct.Name = 123)

    Zitat

    >Result with AutoIt 3.3.12.0 x86.
    >CPU: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz X64
    >RAM: 5.43/7.97 GB
    >OS: WIN_81 (9600) X64
    >Parameter: DllStructCreate("byte abyte;char test[255];double adouble")
    -Func For (1) needs for 4095 runs 2120.33 ms (Average: 0.5178 ms) --> 1.1x
    +Func While (2) needs for 4095 runs 1960.73 ms (Average: 0.4788 ms) --> 1.0x
    !Func Do (3) needs for 4095 runs 2243.12 ms (Average: 0.5478 ms) --> 1.1x

    Alles anzeigen

    Fortsetzung folgt (hoffentlich auch durch euch :) )

    Gruß,
    Spider

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™