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

  • Inputbox nur Dezimalzahlen

    • BugFix
    • 16. Dezember 2014 um 19:12
    Zitat von BlutigerAnfänger

    Oder muß ich da irre Abfragen konstruieren?


    Nicht sehr irre. :D

    Spoiler anzeigen
    [autoit]

    $hGui = GUICreate('Test')
    $cInput = GUICtrlCreateInput('', 20, 20, 150, 20)
    $hInput = GUICtrlGetHandle($cInput)
    GUISetState()

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

    GuiRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $iIDFrom, $hWndEdit, $sRead, $iCode
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)
    $hWndEdit = GUICtrlGetHandle($iIDFrom)
    If $hWndEdit = $hInput And $iCode = $EN_CHANGE Then
    $sRead = GUICtrlRead($iIDFrom)
    If Not StringRegExp($sRead, '^\d+,?(\d+)?$') Then
    GUICtrlSetData($iIDFrom, StringLeft($sRead, StringLen($sRead)-1))
    EndIf
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]


    Edit:
    Aber denk dran, dass man mit Komma in AutoIt nicht rechnen kann. Du kannst es in der Anzeige verwenden musst aber zum Rechnen in Punkt umwandeln. ;)

  • Sprungmarke setzen

    • BugFix
    • 14. Dezember 2014 um 12:27

    Auch wenn es dort nur zur Testausgabe geschieht:

    Zitat

    Warnung: Das Blockieren von laufenden Benutzerfunktionen, die Fensternachrichten verwenden (z.B. mit Befehlen wie "Msgbox()"), kann zu unerwartetem Verhalten führen. So schnell wie möglich sollte dann die Rückkehr zum System stattfinden !!!

    ^^

    Das Verhalten tritt auf, weil die registrierte Message noch nicht an das System weitergereicht wurde. Du wertest einen Zustand aus, der erst beim Verlassen der Funktion vom System umgesetzt wird.

    Edit:
    Hier mal ein Weg, wie man das sauber löst.

    Spoiler anzeigen
    [autoit]

    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>

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

    Global $hListBox, $fDouble = False

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

    _Main()

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

    Func _Main()
    Local $hGUI = GUICreate("(UDF) ListBox: Erzeugen", 400, 296)
    $hListBox = _GUICtrlListBox_Create($hGUI, "String bei Erzeugung", 2, 2, 396, 296, $LBS_SORT)
    GUISetState()

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    ; Fügt Dateien hinzu
    _GUICtrlListBox_BeginUpdate($hListBox)
    _GUICtrlListBox_ResetContent($hListBox)
    _GUICtrlListBox_InitStorage($hListBox, 100, 4096)
    _GUICtrlListBox_AddString($hListBox, "Musterfrau D1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann D2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind D3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum D4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad D5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau DK1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann DK2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind DK3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum DK4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad DK5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau DKD 1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann DKD 2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind DKD 4")
    _GUICtrlListBox_AddString($hListBox, "Mustermum DKD4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad DKD5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau PD1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann PD2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind PD3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum PD4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad PD5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau PDK1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann PDK2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind PDK3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum PDK4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad PDK5")
    _GUICtrlListBox_EndUpdate($hListBox)

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

    While True
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $GUI_EVENT_PRIMARYUP
    If $fDouble Then
    $fDouble = False
    ConsoleWrite(_GUICtrlListBox_GetText($hListBox, _GUICtrlListBox_GetCurSel($hListBox)) & @CRLF)
    EndIf
    EndSwitch
    WEnd
    EndFunc ;==>_Main

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $iCode = BitShift($iwParam, 16)
    If $ilParam = $hListBox And $iCode = $LBN_DBLCLK Then $fDouble = True
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]
  • Simples Connect Tool von Batch in AutoIt übernehmen?

    • BugFix
    • 14. Dezember 2014 um 09:47
    Zitat von djdanby

    dann schlagen nur 3 Scanner an. Das ist allerdings immernoch zu viel.


    Die Anzahl ist völlig unerheblich, wichtiger ist welche Scanner anschlagen. Meldet "virustotalschutz-jamaica.com" oder "the-safest-scan-u-know.ru" oder irgend solch total unbekanntes Programm, dann hast du alles richtig gemacht. :D

  • 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]

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™