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

  • Wörter zählen

    • BugFix
    • 7. Oktober 2008 um 23:25

    Muß nicht gleich 'ne UDF werden ;)
    Mit RegEx ist es eine Codezeile:

    [autoit]

    $str = 'Das ist ein Wort und auch das ist eins.'
    MsgBox(0, 'Wortzahl', 'Der String enthält: ' & UBound(StringRegExp($str, '[^\s]+', 3)) & ' Worte.')

    [/autoit]


    Man könnte hier noch verfeinern und definieren, was genau ein Wort ist (2 oder 3 Buchstaben min).
    In der momentanen Abfrage werden auch alleinstehende Ziffern, Zeichen als Wort erfaßt.

  • Wörter zählen

    • BugFix
    • 7. Oktober 2008 um 19:58

    Da man davon ausgehen kann, dass die Wörter durch Leerzeichen getrennt sind, einfach StringSplit mit Leerzeichen als Trenner.

  • Arrays vergleichen

    • BugFix
    • 6. Oktober 2008 um 22:11

    Könntest du z.B. so machen:

    [autoit]

    Global $oAList_1 = _ObjAListCreate()
    Global $oAList_2 = _ObjAListCreate()
    Global $Str1 = 'l|p|s|d|u|t'
    Global $Str2 = 'q|o|l|f|p|w'

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

    _ObjAListAddColl($oAList_1, $Str1)
    _ObjAListAddColl($oAList_2, $Str2)

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

    Global $sDiff = ''
    For $element In $oAList_1
    If Not _ObjAListSearch($oAList_2, $element) Then $sDiff &= $element & '|'
    Next
    ConsoleWrite('Unterschied: ' & StringTrimRight($sDiff, 1) & @CRLF)

    [/autoit]
  • Arrays vergleichen

    • BugFix
    • 6. Oktober 2008 um 20:09

    Guckst Du: UDF-Sammlung Array Alternativen ;)

  • Arrays vergleichen

    • BugFix
    • 6. Oktober 2008 um 19:58

    Verwende Array-Alternativen.
    In einer ArrayList kannst du ohne zu suchen direkt auf Existenz eines Elements abfragen. Damit sollte das relativ schnell ablaufen.

  • Programmtraffic ermitteln - wie?

    • BugFix
    • 5. Oktober 2008 um 18:00

    Hi,
    vllt. hilft dir das weiter:

    Spoiler anzeigen
    [autoit]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $objRefresher = ObjCreate("WbemScripting.SWbemRefresher")
    $colItems = $objRefresher.AddEnum _
    ($objWMIService, "Win32_PerfFormattedData_TCPIP_NetworkInterface").objectSet
    $objRefresher.Refresh

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

    For $i = 1 To 5
    For $objItem In $colItems
    ConsoleWrite("Bytes Received Per Second: " & $objItem.BytesReceivedPersec & @CRLF)
    ConsoleWrite("Bytes Sent Per Second: " & $objItem.BytesSentPersec & @CRLF)
    ConsoleWrite("Bytes Total Per Second: " & $objItem.BytesTotalPersec & @CRLF)
    ConsoleWrite("Caption: " & $objItem.Caption & @CRLF)
    ConsoleWrite("Current Bandwidth: " & $objItem.CurrentBandwidth & @CRLF)
    ConsoleWrite("Description: " & $objItem.Description & @CRLF)
    ConsoleWrite("Name: " & $objItem.Name & @CRLF)
    ConsoleWrite("Output Queue Length: " & $objItem.OutputQueueLength & @CRLF)
    ConsoleWrite("Packets Outbound Discarded: " & $objItem.PacketsOutboundDiscarded & @CRLF)
    ConsoleWrite("Packets Outbound Errors: " & $objItem.PacketsOutboundErrors & @CRLF)
    ConsoleWrite("Packets Per Second: " & $objItem.PacketsPersec & @CRLF)
    ConsoleWrite("Packets Received Discarded: " & $objItem.PacketsReceivedDiscarded & @CRLF)
    ConsoleWrite("Packets Received Errors: " & $objItem.PacketsReceivedErrors & @CRLF)
    ConsoleWrite("Packets Received Non-Unicast Per Second: " & $objItem.PacketsReceivedNonUnicastPersec & @CRLF)
    ConsoleWrite("Packets Received Per Second: " & $objItem.PacketsReceivedPersec & @CRLF)
    ConsoleWrite("Packets Received Unicast Per Second: " & $objItem.PacketsReceivedUnicastPersec & @CRLF)
    ConsoleWrite("Packets Received Unknown: " & $objItem.PacketsReceivedUnknown & @CRLF)
    ConsoleWrite("Packets Sent Non-Unicast Per Second: " & $objItem.PacketsSentNonUnicastPersec & @CRLF)
    ConsoleWrite("Packets Sent Per Second: " & $objItem.PacketsSentPersec & @CRLF)
    ConsoleWrite("Packets Sent Unicast Per Second: " & $objItem.PacketsSentUnicastPersec & @CRLF)
    Sleep(2000)
    $objRefresher.Refresh
    Next
    Next

    [/autoit]
  • Hab ma ne Frage zu meinem Script

    • BugFix
    • 5. Oktober 2008 um 17:36

    Deklarationen (Variablen, Hotkeys) am Skriptanfang!
    Endlosschleifen haben in Funktionen nichts zu suchen.

    Schau dir mal Skripte von anderen Usern an (findest eine reichliche Auswahl hier im Forum), damit du ein sauberes Konzept zusammbekommst.

    P.S. - Schon erstaunlich: Das Skript ist noch nicht mal lauffähig, aber die wichtigste Information, die eingebracht wird, ist ein Copyright!! :rofl:

  • Radio "Gruppen"

    • BugFix
    • 3. Oktober 2008 um 09:46
    Zitat von ManuIt

    BitAND(GUICtrlRead($RadioD[$o]), $GUI_CHECKED) = $GUI_CHECKED


    Das ist doppelt gemoppelt.
    BitAND(GUICtrlRead($RadioD[$o]), $GUI_CHECKED) liefert TRUE, wenn checked, sonst FALSE

  • Silkroad Process Manager

    • BugFix
    • 2. Oktober 2008 um 19:39

    Is klar blubbi :D aber wir waren rechts- und nicht linksorientiert. :rofl:

  • Silkroad Process Manager

    • BugFix
    • 2. Oktober 2008 um 19:15
    Zitat von anno2008


    Wenn ich jetzt StringTrimright("Hallo", 3) machen würde, würde "lo" rausgekommen.


    :D Da hast du aber 2 Befehle verwechselt.
    StringTrimRight("Hallo", 3) liefert "Ha" (die rechten 3 werden abgeschnippelt).
    StringRight("Hallo", 3) liefert "llo" (die rechten 3 werden zurückgegeben).

  • Radio "Gruppen"

    • BugFix
    • 2. Oktober 2008 um 19:08

    OK, hier mal ein Muster:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Global $arRadio[10], $str

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

    $gui = GUICreate('test', 500, 400)
    GUICtrlCreateGroup('', 10, 10, 400, 60)
    $arRadio[0] = GUICtrlCreateRadio('Radio 1', 20, 20, 70)
    $arRadio[1] = GUICtrlCreateRadio('Radio 2', 20, 45, 70)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup('', 10, 80, 400, 60)
    $arRadio[2] = GUICtrlCreateRadio('Radio 3', 20, 90, 70)
    $arRadio[3] = GUICtrlCreateRadio('Radio 4', 20, 115, 70)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup('', 10, 150, 400, 60)
    $arRadio[4] = GUICtrlCreateRadio('Radio 5', 20, 160, 70)
    $arRadio[5] = GUICtrlCreateRadio('Radio 6', 20, 185, 70)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup('', 10, 220, 400, 60)
    $arRadio[6] = GUICtrlCreateRadio('Radio 7', 20, 230, 70)
    $arRadio[7] = GUICtrlCreateRadio('Radio 8', 20, 255, 70)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup('', 10, 290, 400, 60)
    $arRadio[8] = GUICtrlCreateRadio('Radio 9', 20, 300, 70)
    $arRadio[9] = GUICtrlCreateRadio('Radio 10', 20, 325, 70)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    For $i = 0 To UBound($arRadio) -2 Step 2
    GUICtrlSetState($arRadio[$i], $GUI_CHECKED)
    Next
    $bCheck = GUICtrlCreateButton('Check', 10, 370, 60, 20)
    GUISetState()

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

    Do
    $msg = GUIGetMsg()
    If $msg = $bCheck Then
    $str = ''
    For $i = 0 To UBound($arRadio) -1
    If BitAND(GUICtrlRead($arRadio[$i]), $GUI_CHECKED) Then
    $str &= ControlGetText("", "", $arRadio[$i]) & @LF
    EndIf
    Next
    MsgBox(0, '', 'Markiert sind: ' & @LF & $str )
    EndIf
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]
  • Radio "Gruppen"

    • BugFix
    • 2. Oktober 2008 um 18:25

    Klar kommen die MsgBoxen - es sind ja alle Bedingungen erfüllt. Du hast falsch abgefragt und keine Klammern verwendet.
    Case $RadioO[$o] - ist schonmal True
    And BitAND(GUICtrlRead($RadioO[$o]), $GUI_CHECKED) ergibt das True, welches für And notwendig ist und somit ist die gesamte Abfrage wahr!
    = $GUI_CHECKED wird gar nicht mehr geprüft
    Außerdem mußt du für diese Abfrageform Select-Case statt Switch-Case verwenden.

  • Radio "Gruppen"

    • BugFix
    • 2. Oktober 2008 um 18:14

    Raupi : Was soll das werden? - Eine Zitatschlacht?
    Nur ein Zitat zu bringen ohne eigenen Kommentar ist weitgehend sinnfrei... :S

  • Exceldatenblatterstellung per GUI-Combo

    • BugFix
    • 2. Oktober 2008 um 18:12
    Zitat von BugFix

    In den Combos geht das ja auch jetzt schon - könnte man aber auch ersetzen wegen der Optik ;) .

    Deswegen ;)

  • Radio "Gruppen"

    • BugFix
    • 2. Oktober 2008 um 14:38

    Schau dir

    [autoit]

    GUICtrlCreateGroup()

    [/autoit]

    an.

  • hilfe bei endlos schleife

    • BugFix
    • 2. Oktober 2008 um 10:01
    Zitat von rewejo

    brauch nur noch den abbruch druch benutzer denke muss ne gui werden ,oder?

    HotKey geht auch - oder TrayMenü.

  • Exceldatenblatterstellung per GUI-Combo

    • BugFix
    • 2. Oktober 2008 um 09:37

    Hi,
    zum Sortieren brauchst du keinen Extra-Button. Das kannst du per Klick auf den Spaltenkopf lösen.
    Ich habe mal das Bsp. aus der Hilfe "entschlackt":

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    Global $hListView

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

    GUICreate("ListView SimpleSort", 400, 300)
    $hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 268)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line4|5|more_a", $hListView)
    GUICtrlCreateListViewItem("line5|4.50 |more_c", $hListView)
    GUICtrlCreateListViewItem("line5|4.0 |more_c", $hListView)
    GUICtrlCreateListViewItem("line3|23|more_e", $hListView)
    GUICtrlCreateListViewItem("line2|0.34560 |more_d", $hListView)
    GUICtrlCreateListViewItem("line1|1.0 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|0.1 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|10|more_b", $hListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 2, 75)
    GUISetState()

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

    ; die 2 Folgezeilen in dein Skript einfügen und die Func WM_NOTIFY
    ; dann kannst du per Klick auf den Spaltenkopf sortieren (auf/absteigend)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Edit
    Und nun habe ich eine Anregung für dich :D
    Bau das ganze etwas um unter Einbeziehung dieses Postings: IntelliSenseBox
    Verwende statt der Datums-/Textfelder und Combos nur Inputfelder als IntellisenseBox.
    Ich vermute, du machst deine Abrechnung monatlich. Somit kannst du beim Start die möglichen Datumseinträge als Liste hinterlegen und mit max. 2 eingegebenen Ziffern hast du das richtige Datum (geht schneller als Mausklickerei). In den Combos geht das ja auch jetzt schon - könnte man aber auch ersetzen wegen der Optik ;) .
    Für die Zeit könntest du ein formatiertes Input erstellen, das dir den : automatisch setzt, sodass du einfach die Zeit 4-stellig hintereinander eingibst. Zum Formatieren findest du Infos im Forum.
    Wenn du das alles verwendest, brauchst du nicht mehr zur Maus greifen und schaffst dein Formular in 2 Minuten :D

  • hilfe bei endlos schleife

    • BugFix
    • 1. Oktober 2008 um 23:36

    Quäle mal die Hilfe, genau denselben Fall hatten wir schon mal.

  • Silkroad Process Manager

    • BugFix
    • 1. Oktober 2008 um 23:34
    Zitat von r1fLeX

    Ja , aber wie kann ich das Programm "wissen" lassen welcher Client grade angewählt ist und welcher Pid dieser Client hat?
    Ich enschudlige mich für den Spamm!

    Indem du PID und zugehörigen Titel in einem Array verwaltest. Lies den Titel aus der Liste, suche im Array nach der PID für diese Liste.

  • Silkroad Process Manager

    • BugFix
    • 1. Oktober 2008 um 23:15

    Verwende ProcessClose() zum Schließen. Die PID bekommst du doch von der Prozessliste sowieso.

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™