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

  • Event kann nicht ausgelesen werden

    • BugFix
    • 16. Februar 2008 um 22:10

    :D Ist doch drin - halt ein wenig in der Hilfe vergraben, aber da. :S

  • Event kann nicht ausgelesen werden

    • BugFix
    • 16. Februar 2008 um 21:11

    Ich denke, du suchst sowas:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    $lv = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200)
    For $i = 1 To 10
    GUICtrlCreateListViewItem('Zeile ' & $i & 'Spalte 1|Zeile ' & $i & 'Spalte 2', $lv)
    Next
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "MY_WM_COMMAND")

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

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

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

    Func ListView1Click()
    Local $item = _GUICtrlListView_GetItemTextArray($lv)
    MsgBox(0, '', 'Text in Spalte 2: ' & $item[2])
    EndFunc

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $tagNMHDR, $event
    Switch $wParam
    Case $lv ; ListView-ID
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    Switch $event
    Case $NM_CLICK
    ListView1Click()
    Case $NM_DBLCLK
    ;~ ListView1DoubleClick()
    Case $NM_RCLICK
    ;~ ListView1RightClick()
    Case $NM_RDBLCLK
    ;~ ListView1RightDoubleClick()
    Case $NM_LDOWN
    ;~ ListView1LeftDown()
    Case $NM_RDOWN
    ;~ ListView1RightDown()
    EndSwitch
    EndSwitch
    $tagNMHDR = 0
    EndFunc

    [/autoit]

    Edit:
    Ich hab jetzt mal die Funktion 'WM_NOTIFY' aus der aktuellen Version verwendet und die auswertbaren Parameter in ein Array gepackt, dass an die Funktion übergeben werden kann.
    Bietet jetzt viel mehr Möglichkeiten als noch die alte Version.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    $hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200)
    For $i = 1 To 10
    GUICtrlCreateListViewItem('Zeile ' & $i & 'Spalte 1|Zeile ' & $i & 'Spalte 2', $hListView)
    Next
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

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

    Func _LeftClick($Info)
    MsgBox(0, 'Text in Spalte', _GUICtrlListView_GetItemText($Info[1], $Info[3], $Info[4]) )
    EndFunc

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

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

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ColumnClick($aInfo)
    Case $LVN_DELETEITEM ; An item is about to be deleted
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    ;~ _ItemDeleted($aInfo)
    Case $LVN_HOTTRACK ; Sent by a list-view control when the user moves the mouse over an item
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    Local $aInfo[11] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "Param")]
    Return 0 ; allow the list view to perform its normal track select processing.
    ;Return 1 ; the item will not be selected.
    ;~ _HottTrackItem($aInfo)
    Case $LVN_KEYDOWN ; A key has been pressed
    Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    Local $aInfo[5] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "VKey"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _KeyDown($aInfo)
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftClick($aInfo)
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _LeftDblClick($aInfo)
    Case $NM_KILLFOCUS ; The control has lost the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _LostFocus($aInfo)
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ; Return 1 ; not to allow the default processing
    Return 0 ; allow the default processing
    ;~ _RightClick($aInfo)
    Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    ;~ _RightDblClick($aInfo)
    Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _InputFocusReturn($aInfo)
    Case $NM_SETFOCUS ; The control has received the input focus
    Local $aInfo[3] = [$hWndFrom, _
    $iIDFrom, _
    $iCode]
    ;~ _SetFocus($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • GuiButtons in einem Array deklariert - Gui event mit schleife für buttonabfrage?

    • BugFix
    • 16. Februar 2008 um 20:27

    Mach es doch so:

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    Opt('GUIOnEventMode', 1)
    Dim $verk1[15], $counter = 0, $button_pos = 10
    GUICreate('', 600, 500, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
    Do
    $verk1[$counter] = GUICtrlCreateButton ('Button' & $counter+1, 100, $button_pos, 80)
    GUICtrlSetOnEvent($verk1[$counter], '_FuncButt' & $counter+1)
    $button_pos += 30
    $counter += 1
    Until $counter > 14

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

    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ende()
    Exit
    EndFunc

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

    Func _FuncButt1()
    MsgBox(0, '', 'Button1')
    EndFunc
    Func _FuncButt2()
    MsgBox(0, '', 'Button2')
    EndFunc
    Func _FuncButt3()
    MsgBox(0, '', 'Button3')
    EndFunc
    Func _FuncButt4()
    MsgBox(0, '', 'Button4')
    EndFunc
    Func _FuncButt5()
    MsgBox(0, '', 'Button5')
    EndFunc
    Func _FuncButt6()
    MsgBox(0, '', 'Button6')
    EndFunc
    Func _FuncButt7()
    MsgBox(0, '', 'Button7')
    EndFunc
    Func _FuncButt8()
    MsgBox(0, '', 'Button8')
    EndFunc
    Func _FuncButt9()
    MsgBox(0, '', 'Button9')
    EndFunc
    Func _FuncButt10()
    MsgBox(0, '', 'Button10')
    EndFunc
    Func _FuncButt11()
    MsgBox(0, '', 'Button11')
    EndFunc
    Func _FuncButt12()
    MsgBox(0, '', 'Button12')
    EndFunc
    Func _FuncButt13()
    MsgBox(0, '', 'Button13')
    EndFunc
    Func _FuncButt14()
    MsgBox(0, '', 'Button14')
    EndFunc
    Func _FuncButt15()
    MsgBox(0, '', 'Button15')
    EndFunc

    [/autoit]
  • Infofenster, dass sich aktualisiert?

    • BugFix
    • 15. Februar 2008 um 23:17

    Du verwendest $hallo an einer Stelle, wo die Variable noch gar keinen Wert hat - quasi noch nicht existiert ;)
    Außerdem mußt du GUICtrlSetData() innerhalb der Schleife zum Zuweisen verwenden. Und dafür benötigst du die ID des Edits, die wird dir beim Erstellen zurückgegeben: $ID = GUICtrlCreateEdit()

  • Infofenster, dass sich aktualisiert?

    • BugFix
    • 15. Februar 2008 um 22:42

    z.B. TrayTip()

  • Mehrdimensionales Array aus Datei und wieder hinein!?

    • BugFix
    • 15. Februar 2008 um 07:58

    Wieder der Hinweis: Bitte in die Hilfe zum Befehl schauen.
    _ArrayDelete() arbeitet NUR mit 1D-Arrays. (OK, steht in der Hilfe nicht explizit. Aber aus Bsp. und Nichterwähnung 2D ableitbar.)
    Verwende die Funktion _Array2DDelete()aus meiner Signatur.

    Edit
    Nochwas:

    [autoit]

    _ArrayDelete( $name, $name[$i][1])

    [/autoit]

    geht so nicht. $name ist ein 1D-Array(oder hast du das geändert?) - also:

    [autoit]

    _ArrayDelete( $name, $name[$i])

    [/autoit]

    Das führt aber zu einem Fehler, weil durch das Löschen das Array kleiner wird und die Indexzuordnung nicht mehr stimmt!
    Empfehlung: NICHT löschen, sondern Null-Strings reinschreiben und beim Abarbeiten die Nullstringinhalte per Abfrage übergehen.

  • _WinAPI_MakeLong / _WinAPI_MakeDWord - 2 Integerwerte in einer Variablen

    • BugFix
    • 14. Februar 2008 um 22:00

    @Lina
    Naja, deshalb hab ich es auch im Forum Entwickler gepostet ;)
    Aber in einem Satz zusammengefaßt:
    Du kannst Integerzahlen bis 65535 paarweise in einer Variablen ablegen.

    Mal ein Anwendungsbeispiel:
    Mit _WinAPI_GetWindowLong kannst du die Eigenschaften eines Fensters ermitteln.
    Möchtest du das Fenster mit 2 verschiedenen Eigenschaften nutzen, legst du eine Variable für Style1 und eine für Style2 an.
    Im LoWord von Var1 speicherst du den Wert für Style1 und im HiWord für ExStyle1.
    Analog in Var2 für die anderen Styles.
    In der Anwendung kannst du dann zwischen beiden Eigenschaften mit _WinAPI_SetWindowLong switchen.

  • _WinAPI_MakeLong / _WinAPI_MakeDWord - 2 Integerwerte in einer Variablen

    • BugFix
    • 14. Februar 2008 um 20:59

    Hi,
    ich hab mal ein wenig in den WinAPI-Funktionen gestöbert. Da gibt es sicher noch Vieles, was so nach und nach in unsere tägliche Programmierung einfließen wird. ;)
    Dabei bin ich über _WinAPI_MakeLong und _WinAPI_MakeDWord gestolpert.
    Beide Funktionen bieten die Möglichkeit, einer Variablen 2 Integer-Werte zuzuordnen - einmal im LoWord-Sektor und einmal im HiWord-Sektor.
    Der speicherbare Zahlenbereich erstreckt sich von 0-65535 (Word = 16 Bit).
    Die Werte lassen sich aus der Variablen mit _WinAPI_LoWord bzw. _WinAPI_HiWord selektieren.
    Eine Besonderheit ergibt sich hierbei:
    Während _WinAPI_LoWord den Wert genau, wie übergeben zurückgibt, werden alle Zahlen > 32767 von _WinAPI_HiWord als negative Zahl, rückwärts auf Null zählend zurückgegeben, wobei die erste Negativzahl -32768 ist.
    Daraus folgt: Wenn _WinAPI_HiWord negativ, dann gilt: Integerwert = 65536 + neg. Rückgabewert
    Ob man _WinAPI_MakeLong oder _WinAPI_MakeDWord verwendet ist für diese Art der Anwendung ohne Belang. Ich würde aber _WinAPI_MakeLong bevorzugen, da hier die Reihenfolge der Parameter logischer ist (erst LoWord, dann HiWord).

    [autoit]

    $varLo = 65535
    $varHi = 240
    $testLong = _WinAPI_MakeLong($varLo, $varHi)

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

    $loOut = _WinAPI_LoWord($testLong)
    $hiOut = _WinAPI_HiWord($testLong)
    If $hiOut < 0 Then $hiOut = 65536 + $hiOut

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

    MsgBox(0, 'ausgelesene Werte', 'LoWord: ' & $loOut & @LF & 'HiWord: ' & $hiOut)

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

    Func _WinAPI_MakeLong($iLo, $iHi)
    Return BitOR(BitShift($iHi, -16), BitAND($iLo, 0xFFFF))
    EndFunc
    Func _WinAPI_MakeDWord($HiWord, $LoWord)
    Return BitOR($LoWord * 0x10000, BitAND($HiWord, 0xFFFF))
    EndFunc
    Func _WinAPI_HiWord($iLong)
    Return BitShift($iLong, 16)
    EndFunc
    Func _WinAPI_LoWord($iLong)
    Return BitAND($iLong, 0xFFFF)
    EndFunc

    [/autoit]
  • _StringSplitOnce

    • BugFix
    • 14. Februar 2008 um 19:26

    Dann gibbet was auf die Mütze wegen erwiesener Dummheit :rofl:

    Edit:
    Nee, mal ernsthaft.
    Dann bekommst du natürlich Fehler = 3, denn 0-tes Auftreten des Trennzeichens ist identisch mit Trennzeichen nicht im String.

  • 6 Arrays in einem Array zusammenfügen?

    • BugFix
    • 14. Februar 2008 um 16:39

    Hier mal als Code:

    [autoit]

    Dim $Ardir1[10]
    Dim $Ardir2[12]
    Dim $ArReg1[8]
    Dim $ArReg2[4]
    Dim $ArReg3[8]
    Dim $ArReg4[15]
    Dim $arALL[6]=[$Ardir1,$Ardir2,$ArReg1,$ArReg2,$ArReg3,$ArReg4]
    For $i = 1 To UBound($arALL)-1
    _Array2DJoin($arALL[0], $arALL[$i])
    Next
    ; $arALL[0] (also $Ardir1) enthält dann alle Arrays

    [/autoit]
  • 6 Arrays in einem Array zusammenfügen?

    • BugFix
    • 14. Februar 2008 um 16:02

    Nimm _Array2DJoin() aus meiner Signatur und füge in einer Schleife alle zueinander ;)

  • Mehrdimensionales Array aus Datei und wieder hinein!?

    • BugFix
    • 14. Februar 2008 um 06:48

    Ich denke, da helfen dir meine Funktionen:
    • _FileWriteFromArray2D und
    • _FilereadToArray2D
    weiter: FileWriteFromArray2D

  • Encrypter für "Geheimsprache"

    • BugFix
    • 13. Februar 2008 um 18:19

    OK, dann speichere deine Zuordnung in einem Array ab:

    [autoit]

    Dim $aMuster[27][2]
    $aMuster[0][0] = 'A'
    $aMuster[0][1] = 'L'

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

    $aMuster[1][0] = 'B'
    $aMuster[1][1] = 'SPR'

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

    $aMuster[2][0] = 'C'
    $aMuster[2][1] = '18'

    [/autoit]


    usw.

    Aber glaub mir: Du wirst es nicht schaffen das wieder zu Decrypten. Denn woher weißt du, dass z.B. "SPR" für ein Zeichen steht....??

  • Abfrage Problem

    • BugFix
    • 13. Februar 2008 um 18:11
    Zitat

    wollts nur sagen bevor er den ganzen Code nochma durchgeht und mit tab einrückt oder so


    Schon mal was von Tiny gehört? ;) Findest du in SciTE und das erledigt das für dich.

  • Encrypter für "Geheimsprache"

    • BugFix
    • 13. Februar 2008 um 18:06

    Du verwendest das Wort "Encrypter" - also gehe ich davon aus, dass du (wenn auch primitiv) verschlüsseln willst.
    Verschlüsseln ist nichts anderes als rechnen und zum Rechnen braucht man Zahlen. Ergo ==> ASCII-Werte der Buchstaben.
    Ich weiß nicht, inwieweit du dich mit Verschlüsselungssystemen auskennst, ein ganz simples ist z.B. Rot13.
    Der ROT13-Algorithmus basiert auf einer Verschiebung aller Buchstaben um 13 Positionen im Alphabet. Technisch heisst das, dass die ASCII-Werte der Buchstaben um 13 inkrementiert bzw. dekrementiert werden.

  • Encrypter für "Geheimsprache"

    • BugFix
    • 13. Februar 2008 um 17:52

    - Für jeden Buchstaben gibt es einen entsprechenden ASCII-Wert - schau mal in der Hilfe unter ASCII.-
    - Button in einer GUI ==> Hilfe: Funktion GUICtrlCreateButton(), da findest du alles was du brauchst.

  • _StringSplitOnce

    • BugFix
    • 13. Februar 2008 um 12:38

    Hi,
    mal wieder ein kleines Helferlein ;)
    _StringSplitOnce($STRING, $DELIM [, $OCCURENCE=1])
    • Splitten eines Strings am gegebenen Vorkommen des Trennzeichens
    • Standard: erstes Auftreten von links
    • mit negativen Werten wird von rechts gezählt
    • Rückgabe eines Array, Array[0]=links v. Trennzeichen; Array[1]=rechts v. Trennzeichen

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _StringSplitOnce($STRING, $DELIM [, $OCCURENCE=1])
    ; Description: Splits a string on given occurence of delimiter
    ; Parameter(s): $STRING String to split
    ; $DELIM Delimiter
    ; $OCCURENCE Occurence of Delimiter ('-' starts from the right side, Default=1)
    ; Requirement(s):
    ; Return Value(s): Succes Array[0]=left side / Array[1]=right side of splittet string
    ; Failure Set error
    ; @error = 1 No string given
    ; @error = 2 No delimiter given
    ; @error = 3 Delimiter not in string
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;
    ;===============================================================================
    Func _StringSplitOnce($STRING, $DELIM, $OCCURENCE=1)
    If $STRING = '' Then Return SetError(1)
    If $DELIM = '' Then Return SetError(2)
    Local $Out[2]
    Local $len = StringLen($STRING)
    Local $pos = StringInStr($STRING, $DELIM, 1, $OCCURENCE)
    If @error Then Return SetError(3)
    $Out[0] = StringLeft($STRING, $pos-1)
    $Out[1] = StringRight($STRING, $len-$pos)
    Return $Out
    EndFunc ;==>_StringSplitOnce

    [/autoit]

    Dateien

    _StringSplitOnce.au3 1,32 kB – 418 Downloads
  • ListView - Suche

    • BugFix
    • 12. Februar 2008 um 19:17

    Hier Oscar, nur für dich ;)
    Du kannst den Start Index für Item und SubItem festlegen. Der SubItemIndex wird natürlich nur einmal verwendet, anschließend werden wieder alle Spalten durchsucht.
    Somit kannst du deine Suche mit dem letzten Ergebnis fortsetzen. Mußt nur (in Abhängigkeit von der Spaltenzahl und dem letzten Treffer) entweder ItemIndex oder SubItemIndex um 1 erhöhen.

    Spoiler anzeigen
    [autoit]

    ;-----------------------------------------------------------------------------------------------------------------------
    ; Function _LV_Search($LV, $What2Find [, $CaseSens=True [, $Partial=False [, $iStart=0 [,$kStart=0]]]])
    ;
    ; Description search a term in every item and subitem of a given ListView
    ;
    ; Parameter $LV ListView -ID
    ; $What2Find Search term
    ; $CaseSens Casesensitivity True (default) or False
    ; $Partial Partialsearch, Casesens will set to False also if given True
    ; $iStart ItemIndex for start (default 0)
    ; $kStart SubItemIndex for start (default 0), works only in 1.st loop, than SubItemIndex is 0
    ;
    ; Return Success Array[0] = LV-Index
    ; Array[1] = SubItem-Index
    ; Failure Return -1 and set @error : 1 - ListView is empty
    ; 2 - $What2Find was not found
    ;
    ; Requirements #include <GuiListView.au3>
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;-----------------------------------------------------------------------------------------------------------------------
    #include <GuiListView.au3>
    Func _LV_Search($LV, $What2Find, $CaseSens=True, $Partial=False, $iStart=0, $kStart=0)
    $count = _GUICtrlListView_GetItemCount($LV)
    Local $aOut[2] = [-1,0]
    If $count < 1 Then
    SetError(1)
    Return -1
    EndIf
    If $Partial Then $CaseSens = False
    $countSub = _GUICtrlListView_GetColumnCount($LV)
    For $i = $iStart To $count-1
    For $k = $kStart To $countSub-1
    If $CaseSens Then
    If _GUICtrlListView_GetItemText($LV, $i, $k) == $What2Find Then
    $aOut[0] = $i
    $aOut[1] = $k
    Return $aOut
    EndIf
    Else
    If Not $Partial Then
    If _GUICtrlListView_GetItemText($LV, $i, $k) = $What2Find Then
    $aOut[0] = $i
    $aOut[1] = $k
    Return $aOut
    EndIf
    Else
    If StringInStr(_GUICtrlListView_GetItemText($LV, $i, $k), $What2Find, 1) Then
    $aOut[0] = $i
    $aOut[1] = $k
    Return $aOut
    EndIf
    EndIf
    EndIf
    Next
    $kStart = 0
    Next
    SetError(2)
    Return -1
    EndFunc ;==>_LV_Search

    [/autoit]
  • ListView - Suche

    • BugFix
    • 12. Februar 2008 um 14:10

    So, angepaßt an 3.2.10.0 und funktional erweitert.
    s. Post #1

  • Abkürzungen in SciTE verwalten

    • BugFix
    • 12. Februar 2008 um 14:00
    Zitat von Alina

    Einen Vorschlag noch, bzw. mir ist aufgefallen, das er die neuen Einträge nicht sortiert.

    Hi Lina,
    die Einträge sind auch so nicht sortiert, sondern gruppiert nach Themen. Insofern war mir das nicht so wichtig. Ich stelle die Einträge in der Reihenfolge dar, wie sie in der Datei enthalten sind.
    Neue Einträge werden in jedem Fall ans Ende geschrieben, gewissermaßen hast du dann eine zusammenhängende Gruppe selbst erstellter Abkürzungen.
    Editierte Abkürzungen werden in jedem Fall an dieselbe Position zurückgeschrieben.

    NB: Neu erstellte Kürzel benötigen einen erneuten Start von SciTE, damit sie initialisiert werden können. ;)

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™