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

  • PIN Verzeichniss Struktur erstellen

    • BugFix
    • 27. Dezember 2009 um 15:54

    Was bitte, soll eine "PIN Verzeichniss Struktur" sein? Wozu soll das dienen?

  • Delimiter auslesen statt ausführen?

    • BugFix
    • 27. Dezember 2009 um 11:24

    Hi,
    das war alles etwas zu kompliziert gedacht. ;)
    Problem war doch: Da ist "irgendein" Zeilenumbruch.
    Und dazu gibt es doch die passende Funktion um alle "irgendwelche Nichtzeichen" zu killen:
    StringStripWS ( "string", 2 )

  • Liste - Automatisches Sortieren verhindern

    • BugFix
    • 27. Dezember 2009 um 10:59

    Da du keinen Style angibst, wird der Default verwendet:
    default ( -1) : $LBS_SORT, $WS_BORDER, $WS_VSCROLL

    Um also ohne $LBS_SORT zu arbeiten, gib als Style an:
    BitOr($WS_BORDER, $WS_VSCROLL)

  • Bitmap-Handle an DLL (Freebasic) übergeben

    • BugFix
    • 26. Dezember 2009 um 10:06

    Probier mal so:

    [autoit]

    Local $txt = 'Dein Text'
    Local $txtBuffer = DllStructCreate('wchar[' & StringLen($txt)+1 & ']') ; Unicode
    ; Local $txtBuffer = DllStructCreate('char[' & StringLen($txt) & ']') ; ASCII
    DllCall("test.dll", "int", "funktion1", "ptr", DllStructGetPtr($txtBuffer))

    [/autoit]

    hBitmap in der dll dürfte mit Integer funktionieren, in AutoIt nimmst du dafür dann "hwnd".

  • Abkürzungen in SciTE verwalten

    • BugFix
    • 26. Dezember 2009 um 00:32

    Hab ich keine Erklärung für, zumal bisher nur bei dir dieses Problem auftritt. Aus dem Code heraus ist es definitiv nicht erklärbar. Die folgende Funktion verarbeitet den erstellten Code in das Abbrevformat:

    Spoiler anzeigen
    [autoit]

    Func _Code2Abbrev()
    Local $out = '', $count = _GUICtrlEdit_GetLineCount($Edit2), $line
    If @error Then Return SetError(1)
    For $i = 0 To $count - 1
    $line = _GUICtrlEdit_GetLine($Edit2, $i)
    If StringInStr($line, @TAB, 1) Then $line = StringReplace($line, @TAB, '\t')
    If $i = $count - 1 Then
    $out &= $line
    Else
    $out &= $line & '\n'
    EndIf
    Next
    Return $out
    EndFunc ;==>_Code2Abbrev

    [/autoit]

    Da kann kein Fragezeichen angehängt werden.

  • Funktion _RegReadBinary()

    • BugFix
    • 25. Dezember 2009 um 20:28

    Tja, gab eine Änderung bei @extend von RegRead. Früher wurde der Typ als String zurückgegeben - nun als Konstante.
    Habe die Funktion angepaßt.

    Spoiler anzeigen
    [autoit]

    Func _RegReadBinary($KEY, $VALUE)
    If $KEY = '' Or $VALUE = '' Then Return SetError(4,0,1)
    Local $reg = RegRead($KEY, $VALUE)
    Local $err = @error, $ext = @extended
    If $err Then Return SetError($err,0,1)
    If $ext <> 3 Then Return $reg
    Local $val = ''
    For $i = 1 To StringLen($reg) - 2 Step 2
    $tmp = BinaryToString('0x' & StringMid($reg, $i, 2))
    If $tmp <> "" Then
    $val = $val & $tmp
    EndIf
    Next
    Return $val
    EndFunc ;==>_RegReadBinary

    [/autoit]
  • nuts hats [Geburtstag!!]

    • BugFix
    • 25. Dezember 2009 um 09:02

    Alles Gute zum Geburtstag!
    Hast dir ja ein tolles Datum ausgesucht, entweder sind die Geschenke doppelt so groß 8o , oder man spart einmal ein :huh: .

    Von mir Alles Gute und Viel Spaß usw. usf. :D

  • tray mit häkchen

    • BugFix
    • 22. Dezember 2009 um 23:19
    Zitat von Scripter192

    hm.. ich glaub du weis nicht was ich mein ^^

    Wenn man zum Beispiel via tray optionen einstellen kann, dann kann man etwas "anhaken" bzw. "ankreuzen" oder nicht.

    Standart ist ja eine einfache Schaltfläche, auf die man drauf drücken kann


    Bei einem Klick wird der Menüpunkt angehakt (Standard), Schaltflächen gibt es keine. Das Bsp. von SEuBo zeigt alles, was passiert.

  • Maske zum Markieren in Monatskalender erstellen

    • BugFix
    • 22. Dezember 2009 um 13:13

    Ich habe das mal erweitert (Übergabe als String oder Array) und direkt in die Funktion _GUICtrlMonthCal_SetDayState integriert.
    Im EN-Forum (Developer Chat) hab ich mal zur Diskussion gestellt, ob es eine sinnvolle Ergänzung der bisherigen Funktion wäre. Mal sehen, wie die Reaktionen sind.

  • ListViewItem auslesen

    • BugFix
    • 22. Dezember 2009 um 12:40

    Ich denke, das ist noch einfacher:

    [autoit]

    Opt('GUIOnEventMode', 1)

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

    $gui = GUICreate('Test')
    GUISetOnEvent(-3, '_ende')
    $ID_LV = GUICtrlCreateListView('Bla|Blub', 10, 10, 300, 200)
    For $i = 0 To 19
    GUICtrlCreateListViewItem(Random(100, 999, 1) & '|' & Random(100, 999, 1), $ID_LV)
    GUICtrlSetOnEvent(-1, '_ItemClick')
    Next
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ende()
    Exit
    EndFunc

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

    Func _ItemClick()
    Local $txt = GUICtrlRead(@GUI_CtrlId)
    MsgBox(0, '', 'ListviewItem geklickt: ' & $txt)
    EndFunc

    [/autoit]
  • Neuer Stil

    • BugFix
    • 22. Dezember 2009 um 09:37

    Zum Verstecken / Wiederherstellen der Smileys:

    K-Meleon: Verstecken-JA / Wiederherstellen-erfordert Neuladen der Seite

    Iron: Verstecken-JA / Wiederherstellen-JA-aber: s. Bild
    [Blockierte Grafik: http://www.imgbox.de/users/BugFix/new_style.png]

  • Maske zum Markieren in Monatskalender erstellen

    • BugFix
    • 22. Dezember 2009 um 00:24

    Hier ein Bsp.:

    Spoiler anzeigen
    [autoit]

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

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

    Opt('MustDeclareVars', 1)

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

    GUICreate("Month Calendar Set Day State", 400, 300)
    Local $hMonthCal = GUICtrlCreateMonthCal("", 4, 4, -1, -1, BitOR($WS_BORDER, $MCS_DAYSTATE), 0x00000000)

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

    Local $aMasks[_GUICtrlMonthCal_GetMonthRangeSpan($hMonthCal, True)]

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

    $aMasks[1] = _GetHexMask('1,5,6,8,12,22,23,24,30', ',')
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)

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

    GUISetState()

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Func _GetHexMask($sDays, $Delim=Default)
    If $Delim = Default Then $Delim = Opt('GUIDataSeparatorChar')
    Local $aDays = StringSplit($sDays, $Delim, 2)
    Local $aHex[8] = [0,0,0,0,0,0,0,0], $pos, $out = ''
    For $i = 0 To UBound($aDays) -1
    Select
    Case $aDays[$i] < 5
    $pos = 0
    Case $aDays[$i] < 9
    $pos = 1
    Case $aDays[$i] < 13
    $pos = 2
    Case $aDays[$i] < 17
    $pos = 3
    Case $aDays[$i] < 21
    $pos = 4
    Case $aDays[$i] < 25
    $pos = 5
    Case $aDays[$i] < 29
    $pos = 6
    Case Else
    $pos = 7
    EndSelect
    $aDays[$i] -= $pos * 4
    $aHex[$pos] += 2 ^ ($aDays[$i]-1)
    Next
    For $i = 0 To UBound($aHex) -1
    $out = Hex($aHex[$i], 1) & $out
    Next
    Return '0x' & $out
    EndFunc ;==>_GetHexMask

    [/autoit]
  • Maske zum Markieren in Monatskalender erstellen

    • BugFix
    • 21. Dezember 2009 um 23:17

    Hi,
    wenn man in einem Monatskalender (GUICtrlCreateMonthCal) Tage fett markieren möchte (erfordert Style: $MCS_DAYSTATE) ist es erforderlich, die Tage zu maskieren.
    Mit der folgenden Funktion wird das erledigt. Einfach einen String mit den zu markierenden Tagen übergeben (braucht nicht in Reihenfolge zu sein) und die Maske als Hexstring wird zurückgegeben.
    Trennzeichen ist standardmäßig das per Opt('GUIDataSeparatorChar') festgelegte Zeichen.
    Markiert wird mit _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks).

    Edit:
    Übergabe nun als trennzeichenbasierter String oder als Array möglich.

    Edit 12.08.2011
    Da sich diese Funktion nicht nur für _GUICtrlMonthCal_SetDayState verwenden läßt, sondern generell, wenn innerhalb eines Monats Markierungen für verschiedene Tage gesetzt werden sollen, habe ich jetzt mal noch die Gegenfunktion zum Auslesen der markierten Tage erstellt.
    Die Funktionen sind also:

    _GetHexMask($vDays [, $Delim=Default])
    Codiert die übergebenen Tageszahlen (1-31) als Hex-String, wie er als Maske zum Markieren mit _GUICtrlMonthCal_SetDayState im MonthCal Anwendung findet

    _DecodeHexMask($sHex [, $fArray=True[, $Delim=Default]])
    Gibt die mit _GetHexMask() codierten Tageszahlen (1-31) als Array (Standard) oder Trennzeichenstring zurück

    Days2HexMask.au3
    [autoit]

    Local $aDays[6] = [10,12,13,23,25,31]
    $sHex1 = _GetHexMask($aDays)
    ConsoleWrite('--@@Line[' & @ScriptLineNumber -1 & '] Debug_Var >> $sHex1 >>' & $sHex1 & @CRLF) ;### DebugToConsole
    $sHex2 = _GetHexMask('1|5|7|22|30|31')
    ConsoleWrite('--@@Line[' & @ScriptLineNumber -1 & '] Debug_Var >> $sHex2 >>' & $sHex2 & @CRLF) ;### DebugToConsole

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

    $sRet = _DecodeHexMask($sHex1, False)
    ConsoleWrite($sRet & @CRLF)

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

    $sRet = _DecodeHexMask($sHex2, False)
    ConsoleWrite($sRet & @CRLF)

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

    $aRet = _DecodeHexMask($sHex1)
    _ArrayDisplay($aRet)

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

    ;===============================================================================
    ; Function Name..: _GetHexMask($vDays [, $Delim=Default])
    ; Description....: Codiert die übergebenen Tageszahlen (1-31) als Hex-String, wie er als Maske zum Markieren mit _GUICtrlMonthCal_SetDayState
    ; ...............: im MonthCal Anwendung findet
    ; Parameter(s)...: $vDays Trennzeichenbasierter String oder Array mit den zu markierenden Tagen
    ; ...............: $Delim das Trennzeichen, Standard ist 'Default' (Zeichen von 'GUIDataSeparatorChar')
    ; Return Value(s): Hexstring für $aMasks
    ; Author(s)......: BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _GetHexMask($vDays, $sDelim=Default)
    If $sDelim = Default Then $sDelim = Opt('GUIDataSeparatorChar')
    If (( Not IsArray($vDays) ) And ($vDays = '') ) Or _
    (( IsArray($vDays) ) And ($vDays[0] = '') ) Then
    Return '0x0'
    Else
    Local $aDays
    If (Not IsArray($vDays)) Then
    $aDays = StringSplit($vDays, $sDelim, 2)
    Else
    $aDays = $vDays
    EndIf
    Local $aHex[8] = [0,0,0,0,0,0,0,0], $pos, $mask = ''
    For $i = 0 To UBound($aDays) -1
    Select
    Case $aDays[$i] < 5
    $pos = 0
    Case $aDays[$i] < 9
    $pos = 1
    Case $aDays[$i] < 13
    $pos = 2
    Case $aDays[$i] < 17
    $pos = 3
    Case $aDays[$i] < 21
    $pos = 4
    Case $aDays[$i] < 25
    $pos = 5
    Case $aDays[$i] < 29
    $pos = 6
    Case Else
    $pos = 7
    EndSelect
    $aDays[$i] -= $pos * 4
    $aHex[$pos] += 2 ^ ($aDays[$i]-1)
    Next
    For $i = 0 To UBound($aHex) -1
    $mask = Hex($aHex[$i], 1) & $mask
    Next
    Return '0x' & $mask
    EndIf
    EndFunc ;==>_GetHexMask

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

    ;===============================================================================
    ; Function Name..: _DecodeHexMask($sHex [, $fArray=True[, $Delim=Default]])
    ; Description....: Gibt die mit _GetHexMask() codierten Tageszahlen (1-31) als Array (Standard) oder Trennzeichenstring zurück
    ; Parameter(s)...: $sHex Der Hex-String mit dem/den codierten Zahlenwert/-en
    ; ...............: $fArray Rückgabe als Array (Standard), $a[0]=Anzahl oder String mit Trennzeichen
    ; ...............: $Delim Das Trennzeichen für Stringausgabe, Standard ist 'Default' (Zeichen von 'GUIDataSeparatorChar')
    ; Return Value(s): Array/String mit den im Hex-String codierten Tageszahlen
    ; Author(s)......: BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _DecodeHexMask($sHex, $fArray=True, $sDelim=Default)
    If $sDelim = Default Then $sDelim = Opt('GUIDataSeparatorChar')
    Local $aHex = StringSplit(Hex($sHex, 8), '', 2), $iInt, $sOut = ''
    Local $aMask[8][4] = [[29,30,31],[25,26,27,28],[21,22,23,24],[17,18,19,20],[13,14,15,16],[9,10,11,12],[5,6,7,8],[1,2,3,4]]
    For $i = 7 To 0 Step -1
    $iInt = Int('0x' & $aHex[$i])
    If $iInt = 0 Then ContinueLoop
    For $j = 0 To 3
    If BitAND($iInt, 2^$j) Then
    $sOut &= $aMask[$i][$j] & ","
    $iInt = BitXOR($iInt, 2^$j)
    EndIf
    Next
    Next
    If $fArray Then Return StringSplit(StringTrimRight($sOut, 1), ',')
    Return StringTrimRight($sOut, 1)
    EndFunc ;==>_DecodeHexMask

    [/autoit]

    Dateien

    Days2HexMask[1.0].au3 3,29 kB – 371 Downloads
  • Tage hervorheben

    • BugFix
    • 21. Dezember 2009 um 22:02

    LOL - wußte gar nicht, dass es dafür schon eine UDF gibt. :rofl:
    Zumindest kannst du damit einen Tag (Heute) markieren.

    Edit: Mehrere Tage markierst du (fett) mit _GUICtrlMonthCal_SetDayState($hWnd, $aMasks).
    In der Hilfe findest du ein Bsp. dazu.

    Edit: Um das Erstellen der Maske zu vereinfachen: Maske zum Markieren in Monatskalender erstellen

    [autoit]

    #Include <GuiMonthCal.au3>
    $gui = GUICreate('')
    $cal = GUICtrlCreateMonthCal('MyCal', 10, 10)
    $hWnd = GUICtrlGetHandle($cal)
    GUISetState()

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

    Sleep(1000)
    _GUICtrlMonthCal_SetToday($hWnd, 2009, 12, 24)
    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Tage hervorheben

    • BugFix
    • 21. Dezember 2009 um 20:41

    Man könnte experimentieren, ob sich der Bereich (Rectangle) eines Datums selektieren und dann OWNERDRAW darauf anwenden läßt. Wer will kann loslegen. :D

  • Relais-Karte... Ports auslesen

    • BugFix
    • 21. Dezember 2009 um 20:38

    Was wir brauchen ist eine Beschreibung der Dll. Dann können wir sicher weiterhelfen.

  • Abkürzungen in SciTE verwalten

    • BugFix
    • 21. Dezember 2009 um 20:22

    Es waren noch zwei Bugs, die ich nun geFixed habe. :rofl:

  • Registry Key

    • BugFix
    • 21. Dezember 2009 um 16:53
    Zitat von XP-User

    Habe ein vbs Script mit dem geht es.


    Na dann zeig doch mal das VBS-Skript, läßt sich meist recht problemlos portieren.

  • Abkürzungen in SciTE verwalten

    • BugFix
    • 21. Dezember 2009 um 16:28
    Zitat von Greek

    Bei mir geht es garnicht mehr richtig seit der neuen AutoIt Version, werden immer ? oder sonstige komische Zeichen ans Ende jeder Linie geschrieben


    Auch mit der aktuellen Stable (3.3.2.0) läuft das bei mir problemlos.
    Was für ein Betriebssystem verwendest du?

  • ListView Doppelklick

    • BugFix
    • 21. Dezember 2009 um 08:42

    @Vor"Redner" :) - Von ListBox war nicht die Rede, sondern von Listview. ;)

    Und nun mal noch ein Bsp. ;)
    Du brauchst nicht alle Parameter, die in $tInfo enthalten sind. Habe sie der Vollständigkeit alle angeführt.
    Damit ein Klick/Doppelklick auch die richtige Spalte verwertet, ist der Style $LVS_EX_FULLROWSELECT notwendig.

    Spoiler anzeigen
    [autoit]

    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    $ListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200, -1, BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_TRACKSELECT))
    $hListView = GUICtrlGetHandle($ListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 146)
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
    For $i = 1 To 10
    GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $ListView)
    Next
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

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

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

    Func _LeftDblClick($aInfo)
    Local $sMsg = 'Doppelklick auf:' & @LF & 'ZeilenIndex: ' & $aInfo[3] & @LF & _
    'Spaltenindex: ' & $aInfo[4] & @LF & _
    'Zellen Text: ' & _GUICtrlListView_GetItemText($hListView, $aInfo[3], $aInfo[4])
    MsgBox(0, 'Doppelklick', $sMsg)
    EndFunc

    [/autoit] [autoit][/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 $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)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/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™