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

Beiträge von BugFix

  • Geschwindigkeitsoptimierung in AutoIt

    • BugFix
    • 13. Dezember 2014 um 19:04

    Wieso sind meine Ergebnisse deutlich schneller als bei euch? In der Hardware sehe ich keine gravierenden Unterschiede (eher ist meine Hardware lahmer). :/

    Spoiler anzeigen
    Code
    >Result with AutoIt 3.3.12.0 x86.
    >CPU: Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz X64
    >RAM: 4.52/7.92 GB
    >OS: WIN_7 (7601) X64
    >Parameter: 100
    
    
    +Func For (1)    needs for 4095 runs 44.36 ms (Average: 0.0108 ms)    --> 1.0x
    -Func While (2)    needs for 4095 runs 277.87 ms (Average: 0.0679 ms)    --> 6.3x
    !Func Do (3)    needs for 4095 runs 370.64 ms (Average: 0.0905 ms)    --> 8.4x
    
    
    +Func For (1)    needs for 32767 runs 358.61 ms (Average: 0.0109 ms)    --> 1.0x
    -Func While (2)    needs for 32767 runs 3814.49 ms (Average: 0.1164 ms)    --> 10.6x
    !Func Do (3)    needs for 32767 runs 4141.80 ms (Average: 0.1264 ms)    --> 11.5x
    
    
    ;=============== x64 =====================
    
    
    >Result with AutoIt 3.3.12.0 x64.
    >CPU: Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz X64
    >RAM: 4.48/7.92 GB
    >OS: WIN_7 (7601) X64
    >Parameter: 100
    
    
    +Func For (1)    needs for 4095 runs 43.07 ms (Average: 0.0105 ms)    --> 1.0x
    -Func While (2)    needs for 4095 runs 223.21 ms (Average: 0.0545 ms)    --> 5.2x
    !Func Do (3)    needs for 4095 runs 273.16 ms (Average: 0.0667 ms)    --> 6.3x
    
    
    +Func For (1)    needs for 32767 runs 283.24 ms (Average: 0.0086 ms)    --> 1.0x
    -Func While (2)    needs for 32767 runs 2532.80 ms (Average: 0.0773 ms)    --> 8.9x
    !Func Do (3)    needs for 32767 runs 3653.13 ms (Average: 0.1115 ms)    --> 12.9x
    
    
    ; =================================== Beta ===========================================
    ; == x86
    >Result with AutoIt 3.3.13.19 x86.
    
    
    +Func For (1)    needs for 4095 runs 50.10 ms (Average: 0.0122 ms)    --> 1.0x
    -Func While (2)    needs for 4095 runs 269.21 ms (Average: 0.0657 ms)    --> 5.4x
    !Func Do (3)    needs for 4095 runs 334.39 ms (Average: 0.0817 ms)    --> 6.7x
    
    
    +Func For (1)    needs for 32767 runs 322.58 ms (Average: 0.0098 ms)    --> 1.0x
    -Func While (2)    needs for 32767 runs 2626.79 ms (Average: 0.0802 ms)    --> 8.1x
    !Func Do (3)    needs for 32767 runs 3430.09 ms (Average: 0.1047 ms)    --> 10.6x
    
    
    ; == x64
    >Result with AutoIt 3.3.13.19 x64.
    
    
    +Func For (1)    needs for 4095 runs 39.87 ms (Average: 0.0097 ms)    --> 1.0x
    -Func While (2)    needs for 4095 runs 207.68 ms (Average: 0.0507 ms)    --> 5.2x
    !Func Do (3)    needs for 4095 runs 243.99 ms (Average: 0.0596 ms)    --> 6.1x
    
    
    +Func For (1)    needs for 32767 runs 263.88 ms (Average: 0.0081 ms)    --> 1.0x
    -Func While (2)    needs for 32767 runs 1821.63 ms (Average: 0.0556 ms)    --> 6.9x
    !Func Do (3)    needs for 32767 runs 2624.34 ms (Average: 0.0801 ms)    --> 9.9x
    Alles anzeigen


    Edit: Ergänzt um Beta-Ergebnisse

  • Geschwindigkeitsoptimierung in AutoIt

    • BugFix
    • 13. Dezember 2014 um 11:06

    Interessanter Thread - habe ich gleich mal gepinnt.

  • FTP Upload Script

    • BugFix
    • 12. Dezember 2014 um 23:23
    Zitat

    Ich nutzte Autoit v3.4.1.


    ... wie geht das? Aktuell: 3.3.12.0 :D
    Und wenn du eine halbwegs aktuelle Version nutzt (so etwa ab 3.3.6.0) werden die im Forum zu findenden Beispiele auch bei dir laufen.

  • Frage zu SetError

    • BugFix
    • 12. Dezember 2014 um 16:45
    Zitat von Lottich

    warum kann man bei SetError() eigentlich keinen Text angeben???


    Hilfe lesen hilft auch hier:

    [autoit]

    $errText = _Test()
    ConsoleWrite(@error & @TAB & $errText & @CRLF)

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

    Func _Test()
    Return SetError(1, 0, "Fehlertext")
    EndFunc

    [/autoit]
  • FTP Ordner Download mit Process Bar

    • BugFix
    • 7. Dezember 2014 um 16:32
    Zitat von xouco

    $hTitle - The path where to download the file (with filename) (required)


    Vielleicht liest du mal die Beschreibungen der Funktionen, die du zusammenkopierst. :whistling:

  • SQLite über SSH

    • BugFix
    • 7. Dezember 2014 um 13:49
    Zitat von Dani

    Meine Frage war eher, ob ich das Problem komplett umgehen kann.


    Sei doch mal kreativ.
    Ich verwende als Trennzeichen meist ein Nicht-Text Zeichen: Chr(7)
    Da ist es völlig egal, welche Inhalte du hast - BELL ist sicher nicht dabei. :rolleyes:

  • Beschreibung zur StringInStr Funktion

    • BugFix
    • 7. Dezember 2014 um 13:44
    Zitat von Donsen64

    Um das zu vermeiden könnte eine Anpassung der Hilfe nach meiner Meinung durchaus hilfreich sein.


    Sollen wir uns wirklich auf das US-Verbraucherniveau hinabbegeben müssen und Mikrowellen mit dem Hinweis versehen, dass man darin keine Katzen trocknen darf?
    Nichts anderes wäre die Erklärung von Selbstverständlichkeiten.

  • Tutorial – OOP in AutoIt

    • BugFix
    • 7. Dezember 2014 um 11:43

    Mal ein kleiner Tipp zur Syntax. Es empfiehlt sich beim mehrfachen Zugriff auf dieselben Objekte od. Bestandteile dieses in With $obj ... EndWith abzuarbeiten.
    Also statt:

    Spoiler anzeigen
    [autoit]

    Func _Button_Create($hGUI, $sText, $iLeft, $iTop, $iWidth, $iHeight, $hFunc)
    ReDim $__avButton[$__avButton[0] +2]
    $__avButton[0] += 1
    $__avButton[$__avButton[0]] = __Class_Button().Object

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

    $__avButton[$__avButton[0]].handle = $hGUI
    $__avButton[$__avButton[0]].text = $sText
    $__avButton[$__avButton[0]].left = $iLeft
    $__avButton[$__avButton[0]].top = $iTop
    $__avButton[$__avButton[0]].width = $iWidth
    $__avButton[$__avButton[0]].height = $iHeight
    $__avButton[$__avButton[0]].func = $hFunc

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

    Return $__avButton[0]
    EndFunc

    [/autoit]

    besser:

    Spoiler anzeigen
    [autoit]

    Func _Button_Create($hGUI, $sText, $iLeft, $iTop, $iWidth, $iHeight, $hFunc)
    ReDim $__avButton[$__avButton[0] +2]
    $__avButton[0] += 1
    $__avButton[$__avButton[0]] = __Class_Button().Object
    With $__avButton[$__avButton[0]]
    .handle = $hGUI
    .text = $sText
    .left = $iLeft
    .top = $iTop
    .width = $iWidth
    .height = $iHeight
    .func = $hFunc
    EndWith
    Return $__avButton[0]
    EndFunc

    [/autoit]
  • SQLite über SSH

    • BugFix
    • 7. Dezember 2014 um 10:14
    Zitat von Dani

    Fällt da jemand eventuell was zu ein?


    Die verlinkte Doku auch mal lesen?

    Zitat

    You can use the ".separator" dot command to change the separator for list mode. For example, to change the separator to a comma and a space, you could do this:

    sqlite> .separator ", "
    sqlite> select * from tbl1;
    hello, 10
    goodbye, 20
    sqlite>

  • _HTML_GetSource: Kann ich auch lokale Dateien einlesen?

    • BugFix
    • 1. Dezember 2014 um 18:57

    Wenn du Nicht-Standard-UDF verwendest, verlinke diese bitte auch hier.

    Und wenn du dir _HTML_GetSource() anschaust, siehst du, dass dass dort InetRead() verwendet wird. Ein Blick in die Hilfe bringt dir die Antwort:

    Zitat

    Downloads a file from the internet using the HTTP, HTTPS or
    FTP protocol.

    Also - geht nicht.

    Wäre allerdings auch schwachsinnig - lokale Dateien kannst du mit FileRead lesen. :whistling:

  • Gutes Webhosting finden..

    • BugFix
    • 1. Dezember 2014 um 00:40

    Ähm - mal interessenhalber: Wozu braucht man einen WebShop? Socken verkaufen?
    Aber im Ernst, hobbymässig ist das ja ohne jeden Wert und wenn man es beruflich macht: Kommt da überhaupt was bei rum?

  • StringRegExp-Problem (Gruppe wiederholen)

    • BugFix
    • 30. November 2014 um 14:47

    Meines Wissens kannst du leere Inhalte ( ||| ) nicht zählen.
    Hierfür würde ich _StringRegExpReplace_Callback verwenden:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $sInput = 'aaa|41|63|43|70|58|52|||||||||||||||3|0|327|54.500|1|7.50|7.50|aaa' & @CRLF
    $sInput &= 'bbb|||||||||||||||||||||2|0|327|54.500|1|7.50|7.50|aaa' & @CRLF
    $sInput &= 'ccc|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|1|0|327|54.500|1|7.50|7.50|aaa' & @CRLF

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

    _StringRegExpReplace_Callback($sInput, '([^|\n]*\|)', "_MyFunc('$1')")
    $aMatch = _MyFunc('_get_Result_')
    _ArrayDisplay($aMatch)

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

    Func _MyFunc($1)
    Local Static $sResult = ''
    Local Static $fStart = False
    Local Static $iNum = 0
    If $1 = '_get_Result_' Then
    Local $sTmp = StringTrimRight($sResult, 2)
    Local $aTmp = StringSplit($sTmp, '@')
    Local $aOut[$aTmp[0]][21]
    Local $aTmp2
    For $i = 1 To $aTmp[0]
    $aTmp2 = StringSplit($aTmp[$i], '|')
    For $j = 1 To $aTmp2[0]
    $aOut[$i-1][$j-1] = $aTmp2[$j]
    Next
    Next
    $sResult = ''
    $fStart = False
    $iNum = 0
    Return $aOut
    EndIf
    If StringRegExp($1, '[\d.]+') Or $1 = '|' Then
    If $fStart Then
    $iNum +=1
    If $iNum > 20 Then
    $iNum = 0
    $sResult = StringTrimRight($sResult, 1) & '@'
    $fStart = False
    Else
    $sResult &= $1
    EndIf
    EndIf
    Else
    If Not $fStart Then
    $fStart = True
    $sResult &= $1
    EndIf
    EndIf
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _StringRegExpReplace_Callback
    ; Description ...: Replaces ByRef all matches in a string by manipulation of the matches in a callback function
    ; Parameters ....: $sString String to manipulate
    ; ...............: $sPattern RegExp pattern for the match
    ; ...............: $sCallback Callback function as string, i.e. "MyCallback('$1')" -- '$1' represents the match
    ; .....optional..: $sBefore String to insert before the manipulated match
    ; .....optional..: $sAfter String to insert after the manipulated match
    ; Return values .: Success 1
    ; ...............: Failure 0 set error = 1
    ; Author ........: Taz77
    ; ===============================================================================================================================
    Func _StringRegExpReplace_Callback(ByRef $sString, $sPattern, $sCallback, $sBefore = '', $sAfter = '')
    $sString = Execute("'" & StringRegExpReplace(StringReplace($sString, "'", Chr(26), 0, 2), $sPattern, $sBefore & "'&" & $sCallback & "&'" & $sAfter) & "'")
    If @error Then
    ConsoleWrite('_StringRegExpReplace_Callback error! Pattern: "' & $sPattern & '", Callback: "' & $sCallback & '"' & @LF)
    Return SetError(1,0,0)
    EndIf
    $sString = StringReplace($sString, Chr(26), "'", 0, 2)
    Return 1
    EndFunc ;==>_StringRegExpReplace_Callback

    [/autoit]
  • _IsPressed Frage

    • BugFix
    • 26. November 2014 um 14:26

    Lösung hätte ich, aber das geht deutlich über das hinaus, was z.B. _IsPressed bietet.
    Es ist sowieso keine glückliche Lösung, die Dauer eines Tastendruckes über _IsPressed erfassen zu wollen. Dazu nutzt man KeyEvents (Down, Up) und misst die Zeitspanne zwischen beiden.

    Problem: Wie das geht werden wir hier nicht offen aufzeigen, da es dann nur noch ein kleiner Schritt bis zum Keylogger ist.Aber wenn du dir die Funktion _IsPressed im Include mal anschaust und dann mit den dort gefundenen Inhalten etwas googelst wirst du auch heraus finden, wie der weitere Weg sein sollte.

  • RegEx, die 188ste...

    • BugFix
    • 24. November 2014 um 18:40

    Da Zeilenumbrüche in Websites häufig nicht CRLF, sondern LF sind, habe ich das CR im Pattern mal optional gemacht. Es geht also mit beiden Umbrüchen.

    [autoit]

    Local $s = _
    '<tr>' & @CRLF & _
    '<th>Hausanschrift</th>' & @CRLF & _
    '<td>' & @CRLF & _
    'Hausplatz 1<br />' & @CRLF & _
    '12345 Stadt' & @CRLF & _
    '</td>' & @CRLF

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

    Local $aRet = StringRegExp($s, 'Hausanschrift</th>\r\n<td>\r?\n([^<]+)<br />\r?\n(.+)\r?\n</td>', 3)

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

    _ArrayDisplay($aRet)

    [/autoit]
  • "Tree"-Variable

    • BugFix
    • 22. November 2014 um 19:33
    Zitat von FKFK

    Was ist eigentlich schneller? Das über ein Array oder über einen String zu betreiben?


    - Array ist schnell - aber da kein Direktzugriff musst du jedesmal eine Suche durchführen.
    - Stringbefehle sind sehr schnell
    - überlegenswert ist ein Dictionary einzusetzen, braucht zwar etwas mehr Zeit beim Erstellen, aber das wäre ja einmalig, danach hast du direkten Zugriff - Vorteil gegenüber einem Array. Bedingt aber dass du nur einmalige Schlüssel verwendest

    Letztlich musst du es wohl einfach mal ausprobieren mit welcher Variante du besser fährst.

  • Pseudo Desktop

    • BugFix
    • 22. November 2014 um 19:27
    Zitat von klaros

    Wie kann ich denn über PIDs ein Fenster aktivieren?


    Schau mal hier: Wie kann ich aus einer Pid ein Handle machen?

  • Hilfe bei dem "mitzählen" der Sections innerhalb der Inidatei

    • BugFix
    • 22. November 2014 um 18:35
    [autoit]

    Global $INI = @ScriptDir & '\test_sections.ini'
    Global $iNext

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

    If Not FileExists($INI) Then
    IniWriteSection($INI, 'about', 'next_value=1')
    EndIf
    $iNext = IniRead($INI, 'about', 'next_value', '1')

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

    Func _WriteNextSection($sData)
    Local Static $sT = "Termin_"
    IniWriteSection($INI, $sT & $iNext, $sData)
    $iNext += 1
    IniWrite($INI, 'about', 'next_value', $iNext)
    EndFunc

    [/autoit]
  • Pseudo Desktop

    • BugFix
    • 22. November 2014 um 18:29

    Lass dir alle Prozesse "firefox.exe" auflisten: $aProcList = ProcessList("firefox.exe"). Dann kannst du auf alle Instanzen zugreifen (sofern sie als eigener Prozeß gestartet werden).
    Bei Excel z.B. wirst du meist nur einen Prozeß haben, dann musst du dir alle Fensterhandle dieses Prozesses auslesen (Schau mal die _WinAPI-UDF an).

    Was das Verhalten über das Netzwerk angeht: Wird dein Programm nicht auf den Clients gestartet?

  • Hilfe bei dem "mitzählen" der Sections innerhalb der Inidatei

    • BugFix
    • 22. November 2014 um 18:20

    Leg doch einfach eine Sektion [about] an mit dem Schlüssel "next_value" = "1".
    Daraus baust du dann den Sektionsnamen zusammen und erhöhst next_value um 1.

  • Forum-Umstellung Problemsammlung

    • BugFix
    • 22. November 2014 um 16:34

    Ein Punkt, den ich als extrem störend empfinde:
    "Wer ist online" ist auf der Startseite nicht sichtbar. Dafür sehe ich wer das Team ist (klar, DIE Info muss ich immer verfügbar haben :S ) und wer die neuesten User sind.
    Die beiden Kategorien könnte man doch problemlos vom Dashboard streichen und stattdessen die Online-User dort anzeigen.

    Wie seht ihr das?

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™