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

  • StringRegExp Flag 2

    • BugFix
    • 10. November 2008 um 20:58

    Also wenn ich das richtig verstanden habe, brauchst du ein Pattern, das nur Zeilen ohne .SIC anzeigt.
    Aber der String beginnt mit VV_ oder VE_ .

    [autoit]

    If StringRegExp($string, 'V(E|V)_[A-Z]*\.TXT*(?!.)') Then
    ; kein .SIC enthalten
    EndIf

    [/autoit]
  • DVD Archiv

    • BugFix
    • 10. November 2008 um 20:43
    Zitat von Oscar

    Ohne Bugfixs UDF herabwürdigen zu wollen, aber in diesem Fall reichen auch die "Standard"-UDFs. :)


    Wo er Recht hat, hat er Recht :D - Man muß doch nicht gleich mit Kanonen auf Spatzen schießen :rofl:

  • In Inputbox nur Zahlen und ein buchstabe Zulassen

    • BugFix
    • 9. November 2008 um 20:51

    Hi,
    wenn das 'M' sowieso immer dasein muß, braucht es ja gar nicht ins Input. Dann kann man auch einfacher prüfen.
    Nun kannst du wirklich nur noch 1-10 eintippen. ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Test", 369, 420, 331, 130)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUICtrlCreateLabel('M', 90, 22, 12)
    GUICtrlSetFont(-1, 11, 600)
    $Input1 = GUICtrlCreateInput("", 104, 19, 28, 21, $ES_NUMBER)
    $lbFalse = GUICtrlCreateLabel('Eingabe unzulässig', 180, 22, 100)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hInput = GUICtrlGetHandle($Input1)
    If $hCtrl = $hInput And $nNotifyCode = 1024 Then
    Local $read = GUICtrlRead($Input1)
    GUICtrlSetState($lbFalse, $GUI_HIDE)
    If (StringLen($read) = 1 And $read = 0) Or (StringLen($read) > 1 And _
    (Not StringRegExp($read , "((?<!.)[1-9]|10)(?!.)"))) Then
    GUICtrlSetState($lbFalse, $GUI_SHOW)
    GUICtrlSetData($Input1, '')
    EndIf
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • DVD Archiv

    • BugFix
    • 9. November 2008 um 20:08

    Ich empfehle dir SQLite zu verwenden. Schau mal im Unterforum Datenbanken, da wirst du schon fündig. Fang einfach an und wenn Probleme auftauchen: Hier werden Sie geholfen! :D

  • In Inputbox nur Zahlen und ein buchstabe Zulassen

    • BugFix
    • 9. November 2008 um 20:00

    Hi,
    ich hab dir mal 'ne schönere Variante gebastelt. ;)

    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Test", 369, 420, 331, 130)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Input1 = GUICtrlCreateInput("", 104, 19, 65, 21)
    $lbFalse = GUICtrlCreateLabel('Eingabe unzulässig', 180, 22, 100)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hInput = GUICtrlGetHandle($Input1)
    If $hCtrl = $hInput And $nNotifyCode = 1024 Then
    GUICtrlSetState($lbFalse, $GUI_HIDE)
    If StringLen(GUICtrlRead($Input1)) > 1 And (Not StringRegExp(GUICtrlRead($Input1) , "M(?i)(10|[1-9])(?!.)")) Then
    GUICtrlSetState($lbFalse, $GUI_SHOW)
    GUICtrlSetData($Input1, '')
    Return
    EndIf
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • Umgangsformen - wie gehen wir miteinander um

    • BugFix
    • 9. November 2008 um 18:47

    Oh man, ich bin echt betrübt. Allein die Reaktionen bisher zeigen, das mein Empfinden richtig ist. :S
    Wozu soll ich jemanden mit Namen benennen? Mir geht es doch nicht darum irgendwen anzuschwärzen oder zu maßregeln. Ich bin doch keine Gouvernante.
    Mein Ansinnen ist schlicht und einfach, dass wir alle darüber nachdenken wie wir uns hier begegnen. Naja, das war wohl zuviel an Erwartung. :(

  • Monitor-Gamma einstellen

    • BugFix
    • 9. November 2008 um 18:01
    Zitat von arxior

    wäre super, wenn jetzt jemand noch auf meine frage aus post #3 eingehen kann.

    [autoit]

    Send("{CTRLDOWN}{ALTDOWN}1{ALTUP}{CTRLUP}")

    [/autoit]
  • Umgangsformen - wie gehen wir miteinander um

    • BugFix
    • 9. November 2008 um 17:00

    Hi,
    ich mache mir etwas Sorgen um den Umgangston, der zur Zeit im Forum herrscht.
    Ich bin seit fast 3 Jahren hier dabei und habe es immer als sehr wohltuend empfunden, dass i.A. weder Besserwissermentalität noch Selbstverleugnung vorzufinden waren. Das Klima war geprägt von freundschaftlichem, wohlwollendem Miteinander. User, die anderer Natur waren, haben sich recht schnell wieder verzogen.
    Im Moment liegt jedoch teilweise ein Ton in der Luft, den ich mal als 'gereizt' bezeichnen möchte. Ich hoffe, die User die gemeint sind, fühlen sich auch angesprochen. Da werden die Werke Anderer recht grob runtergemacht, in einem anderen Thread gibt es dann die Retourkutsche durch den Betroffenen. Das ist eine Art und Weise, die schnell wieder abgelegt werden sollte.
    Ich hoffe mal, dass dies eine Nebenwirkung der unfreundlichen Jahreszeit ist - also reiner Vitamin-D Mangel.

    In diesem Sinne - habt Euch alle lieb und nehmt Euch in die Arme. :thumbup:

  • Intuitive Bedienung von Windows

    • BugFix
    • 9. November 2008 um 15:01

    Na das ist ja eine gewaltige Aufgabe, die du dir vorgenommen hast. Wünsche dir viel Erfolg dabei.
    ( Deine Aufgabenstellung noch um Cybersex erweitern und alle sind glücklich :rofl: )

  • Monitor-Gamma einstellen

    • BugFix
    • 9. November 2008 um 14:57

    Ist mir bisher noch nicht begegnet ( was nix heißen muß :D ), aber ich weiß auch nicht ob das generell möglich ist, da die Einstellung ja schon von PC zu PC nicht im selben Menü ist. Viele Grafiktreiber versorgen dich dort mit zusätzlichen Tabs, auf denen herstellerspezifische Einstellungen vorgenommen werden können.

  • FTP Upload?

    • BugFix
    • 9. November 2008 um 14:45

    Nicht dass wir uns mißverstehen. Ich spreche nicht von den allgemeinen AutoItfehlermeldungen, sondern von den Auswertungen der Funktionsreturns:

    [autoit]

    #include <FTP.au3>
    $server = "SERVER.de"
    $username = "USER"
    $pass = "PASSWORD"
    $Open = _FTPOpen('Test')
    If @error Then MsgBox(0, '', 'FTP-Sitzung konnte nicht erstellt werden.')
    $Conn = _FTPConnect($Open,$server,$username,$pass)
    If @error Then MsgBox(0, '', 'Verbindung zum Server fehlgeschlagen.')
    $Ftpp = _FTPPutFile($Conn, @TempDir & '\DOA.log', '/test.txt')
    If @error Then MsgBox(0, '', 'Upload fehlgeschlagen.')
    $Ftpc = _FTPClose($Open)

    [/autoit]

    Edit: Das Flag für passiv noch
    $Conn = _FTPConnect($Open,$server,$username,$pass, 0, 1, 0x08000000)

  • FTP Upload?

    • BugFix
    • 9. November 2008 um 13:42
    Zitat von Masterfreak0815

    aber ezz geht es iwi nicht mehr


    Na das ist ja mal 'ne goldige Fehlerbeschreibung. ;)
    Was ergibt denn dein Debugging? Wo tritt der Fehler auf? Bei ..Open, ..Connect, ..Upload? Das kannst du doch alles prüfen. Wenn die Funktionen fehlschlagen geben sie einen Fehlerwert zurück.

  • TreeView Items deaktivieren und mehr

    • BugFix
    • 9. November 2008 um 13:27

    Ich handhabe das dynamisch, also definieren als $arTreeItem[1][2]. Bei Erstellen eines Item wird das Array mit ReDim vergrößert und die die ID in [n][0] eingetragen. In [n][1] hinterlege ich dann den Text des Item, das erleichert die Auswertung beim Zugriff.

  • zeilen aus txt file löschen

    • BugFix
    • 9. November 2008 um 12:47

    Du hast nur den Text durch Leerstring ersetzt - die Zeile wird aber beendet mit einem @CRLF. Das mußt du auch entfernen, wenn die Zeile komplett verschwinden soll.

  • AutoIt Editor

    • BugFix
    • 9. November 2008 um 12:38
    Zitat von Dankeschön


    edit: Was genau nützt der Board manager?


    Das kommt etwas unklar rüber mit dem Begriff. Soll ein Container für kopierte Elemente sein. Habs selbst noch nicht getestet.
    Ich habe immer etwas Bauchschmerzen mit Programmen, die nicht portabel laufen. Eingriffe in mein System möchte ich weitgehend verhindern.

  • vorhandenen Ordner/Datei auswählen

    • BugFix
    • 9. November 2008 um 11:55
    Zitat von Micha_he


    Ich möchte aber das der Anwender entweder eine vorhandene Datei oder einen vorhandenen Ordner wählen kann.
    Gibt es dafür eine Lösung ?


    Füge doch einfach eine Abfrage ein, wo der User wählen muß: Datei od. Ordner - und dann öffnest du den entsprechenden Dialog.

  • GuictrlSetData() klappt nicht richtig?! (Setzt sofort Maximum)

    • BugFix
    • 9. November 2008 um 08:27

    Ich vermute du lädst du die Datei rauf? Dazu gibt es schon entsprechende Skripts (ich glaube von Xeno), wie du die Größe beim Upload ermitteln kannst. Mußt mal suchen.

  • In Inputbox nur Zahlen und ein buchstabe Zulassen

    • BugFix
    • 8. November 2008 um 22:40

    Hier findest du die Codes:
    Hilfe AutoIt ==> Appendix ==> Windows Message Codes

    Näheres über die Anwendung kannst du mit dem jeweiligen Code ergoogeln, oder bei MSDN nachschauen.

  • User - Date Input

    • BugFix
    • 8. November 2008 um 19:20

    Hi,
    da ich für meine Oberflächen auf Arbeit viel mit Datumsfeldern arbeite, habe ich mir jetzt mal eigene Datum-Inputs erstellt.
    Der Nachteil beim GUICtrlCreateDate ist, dass man bei der Eingabe immer in einer der 3 Gruppen (TT, MM od. JJJJ) hängt und nicht fortlaufend schreiben kann.
    Da ich den Date-Picker sowieso nie benutze, ist mir ein vorformatiertes Input lieber. Die Eingaben werden während des Schreibens auf Richtigkeit geprüft. Bei Eingabe eines falschen Wertes wird die Anzeige auf den Stand vor der Eingabe zurückgesetzt. Rein optisch bleibt der Cursor stehen. Beim Verlassen des Inputs wird nochmals validiert (falls unvollständige Eingabe). Liegt ein Fehler vor, bleibt der Fokus auf dem Input. Man kann das Input nur bei korrektem oder wieder gelöschtem Datum verlassen.
    Überprüft wird der Datumszeitraum von 01.01.1900 bis 31.12.2999 (Da das Pattern bis 2099 unwesentlich kürzer als bis 2999 ist, habe ich den gesamten Zeitraum verwendet.). Löschen ist nicht mit Backspace möglich, sondern über: Markieren - Entfernen.
    Zur Verwendung:
    Die Inputs, wie im Bsp. erstellen und deren ID's im $arDateInput der Funktion MY_WM_COMMAND() hinterlegen.
    Geschrieben werden kann nur, wenn ein Bereich markiert ist (also überschreibbar). Das ist gewollt, da immer der noch nicht geschriebene Teil des Datums markiert wird. Deshalb am Besten per TAB zu den Inputs bewegen, dann ist sofort alles markiert.

    Edit: Oops, da hatte ich einen Fehler in die Validierungsfunktion reinkopiert... Ist nun behoben.

    Spoiler anzeigen
    [autoit]

    #include <Editconstants.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    Global $GUI, $Input1, $Input2, $Input3, $Input4
    $GUI = GUICreate('TEST')
    $Input1 = GUICtrlCreateInput("__.__.____", 20, 50, 62, 21, $ES_NUMBER)
    $Input2 = GUICtrlCreateInput("__.__.____", 20, 80, 62, 21, $ES_NUMBER)
    $Input3 = GUICtrlCreateInput("__.__.____", 20, 110, 62, 21, $ES_NUMBER)
    $Input4 = GUICtrlCreateInput("__.__.____", 20, 140, 62, 21, $ES_NUMBER)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case Else
    ; ...
    EndSwitch
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $arDateInput[4] = [$Input1,$Input2,$Input3,$Input4] ; Array mit den ID der zu prüfenden Inputs
    If $nNotifyCode = 1024 Then
    For $i = 0 To UBound($arDateInput) -1
    If $hCtrl = GUICtrlGetHandle($arDateInput[$i]) Then
    _CheckDateInput($hWnd, $arDateInput[$i])
    ExitLoop
    EndIf
    Next
    ElseIf $nNotifyCode = 512 Then
    For $i = 0 To UBound($arDateInput) -1
    If $hCtrl = GUICtrlGetHandle($arDateInput[$i]) Then
    _CheckByFocusLost($hWnd, $arDateInput[$i])
    ExitLoop
    EndIf
    Next
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _CheckDateInput($hWnd, $ID)
    Local $current = StringReplace(GUICtrlRead($ID),'.',''), $str = '__.__.____'
    Local $num = StringRegExp($current, '\d', 3)
    If @error Then Return GUICtrlSetData($ID, $str)
    Local $ub = UBound($num)
    Local $arPattern[8] = [ _
    "[0-3]", "(0[1-9]|[12][0-9]|3[01])", "(0[1-9]|[12][0-9]|3[01])[0-1]", _
    "(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))", _
    "(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))[12]", _
    "(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))[12][09]", _
    "(((0[1-9]|[12][0-9])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))[12][09]\d", _
    "((((0[1-9]|1[0-9]|2[0-8])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))" & _
    "((19|2[0-9])([02468][1235679]|[13579][01345789])|(19|2[1235679])00))|((((0[1-9]|1[0-9]|2[0-9])02)|((0[1-9]|[12][0-9]|30)" & _
    "(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))((19|2[0-9])(04|08|[2468][048]|[13579][26])|(20|24|28)00))"]
    If Not StringRegExp($current, $arPattern[$ub-1]) Then $ub -= 1
    Switch $ub
    Case 0
    GUICtrlSetData($ID, $str)
    Case 1
    GUICtrlSetData($ID, $num[0] & StringRight($str, 9))
    Case 2
    GUICtrlSetData($ID, $num[0] & $num[1] & StringRight($str, 8))
    Case 3
    GUICtrlSetData($ID, $num[0] & $num[1] & '.' & $num[2] & StringRight($str, 6))
    $ub += 1
    Case 4
    GUICtrlSetData($ID, $num[0] & $num[1] & '.' & $num[2] & $num[3] & StringRight($str, 5))
    $ub += 1
    Case 5 to 8
    Local $sYear = ''
    For $i = 4 To $ub -1
    $sYear &= $num[$i]
    Next
    GUICtrlSetData($ID, $num[0] & $num[1] & '.' & $num[2] & $num[3] & '.' & $sYear & StringRight($str, 8 -$ub))
    $ub += 2
    EndSwitch
    ControlSend($hWnd, '', $ID, '{END}{SHIFTDOWN}{HOME}{RIGHT ' & $ub & '}{SHIFTUP}')
    EndFunc

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

    Func _CheckByFocusLost($hWnd, $ID)
    If StringLen(StringReplace(StringReplace(GUICtrlRead($ID),'.',''),'_','')) = 0 Then Return
    If Not StringRegExp(StringReplace(StringReplace(GUICtrlRead($ID),'.',''),'_',''), "((((0[1-9]|1[0-9]|2[0-8])02)|((0[1-9]|[12][0-9]|30)(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))" & _
    "((19|2[0-9])([02468][1235679]|[13579][01345789])|(19|2[1235679])00))|((((0[1-9]|1[0-9]|2[0-9])02)|((0[1-9]|[12][0-9]|30)" & _
    "(0[469]|11))|(0[1-9]|[12][0-9]|3[01])(0[13578]|1[02]))((19|2[0-9])(04|08|[2468][048]|[13579][26])|(20|24|28)00))") Then _
    ControlFocus($hWnd, '', $ID)
    EndFunc

    [/autoit]
  • AutoIt Basic Teamspeak Client

    • BugFix
    • 8. November 2008 um 17:09
    Zitat von Tom99

    Hab das in Python angefangen, da Auoit dafür nicht geignet ist.

    Hab zwar keine Phyton-Kenntnisse - aber das was ich im Code gelesen hab, scheint mir ohne weiteres auch in AutoIt realisierbar.
    Woraus schließt du, das AutoIt dafür ungeeignet ist?

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™