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. autoBert

Beiträge von autoBert

  • Problem mit iniRead

    • autoBert
    • 6. Dezember 2012 um 19:46
    Zitat von derBrot

    Der Game Server ( GTA San Andreas Multiplayer ) speichert die Accounts aber in .ini datein ohne Sektionsnamen... :S


    Du betreibst einen GTA San Andreas Multiplayer Server?

    Zitat von derBrot

    Aufgrund dessen war meine Frage ja auch ob es möglich ist den Sektionsnamen auszuschließen.

    Ohne Sektionsnamen sind keine INI-Befehle anwendbar.

    mfg autoBert

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.6.1 2011.05.27)

    • autoBert
    • 6. Dezember 2012 um 17:25

    Bei StringReplace steht unter Parmeter occurrence:

    Zitat

    [optional] Die Anzahl der Wiederholungen zum Ersetzen des "searchstrings". Wird eine negative Zahl verwendet, so wird von der rechten Seite beginnend gesucht.
    0 = alle "searchstrings" werden ersetzt (Standard) [Anzahl < 0 ersetzt ebenfalls alles]

    Richtig wäre

    Zitat

    [optional] Die Anzahl der Wiederholungen zum Ersetzen des "searchstrings". Wird eine negative Zahl verwendet, so wird von der rechten Seite beginnend gesucht.
    0 = alle "searchstrings" werden ersetzt (Standard).

    da "[Anzahl < 0 ersetzt ebenfalls alles" nicht stimmt sondern dann die Suche von Rechts nach links mit der angegebenen Anzahl durchgeführt wird.

    mfg autoBert

  • Projekt Color Catcher / HEX in RGB umrechnen

    • autoBert
    • 6. Dezember 2012 um 15:14

    Hallo mirko2002,

    dein StringRegExp in InHexChange funktioniert nicht, darum wird die Funktion frühzeitig beendet. Darauf gekommen bin ich durch ConsoleWrite:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <StaticConstants.au3>

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

    Global $mainframe, $hImage, $hGraphic, $hImage1, $mouseposi

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

    $colorwheel = FileInstall("C:\Documents and Settings\751076\Desktop\AutoIT Tools\Color Catcher\colorwheel.png", @TempDir & "\colorwheel.png")
    $kreispkt2 = FileInstall("C:\Documents and Settings\751076\Desktop\AutoIT Tools\Color Catcher\kreispkt2.png", @TempDir & "\kreispkt2.png")

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

    $mainframe = GUICreate("Color Catcher", 800, 530)

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

    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\colorwheel.png")
    $hImage1 = _GDIPlus_ImageLoadFromFile(@TempDir & "\kreispkt2.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($mainframe)

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

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")

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

    GUICtrlCreateLabel("Ermittelte Farbe:", 540, 17, 80, 20)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $color_view = GUICtrlCreateLabel("", 540, 34, 100, 46)
    GUICtrlCreateLabel("HEX-Wert:", 540, 85, 60, 20)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $ausgabe_farbe = GUICtrlCreateInput("", 540, 100, 60, 20)
    GUICtrlSetBkColor($color_view, '0x' & "FFFFFF")

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

    $slRed = GUICtrlCreateSlider(540, 200, 250, 20, 0)
    GUICtrlSetLimit(-1, 255, 0)
    GUICtrlSetBkColor(-1, 0xFF0000)
    $slGreen = GUICtrlCreateSlider(540, 250, 250, 20, 0)
    GUICtrlSetLimit(-1, 255, 0)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $slBlue = GUICtrlCreateSlider(540, 300, 250, 20, 0)
    GUICtrlSetLimit(-1, 255, 0)
    GUICtrlSetBkColor(-1, 0x0000FF)
    $InRed = GUICtrlCreateInput("", 570, 175, 40, 21, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    $InGreen = GUICtrlCreateInput("", 570, 225, 40, 21, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    $InBlue = GUICtrlCreateInput("", 570, 275, 40, 21, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    $lbRed = GUICtrlCreateLabel("Rot", 540, 180, 21, 12)
    $lbGreen = GUICtrlCreateLabel("Grün", 540, 230, 27, 12)
    $lbBlue = GUICtrlCreateLabel("Blau", 540, 280, 25, 12)

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

    GUISetState(@SW_SHOW, $mainframe)

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

    While 1
    Switch (GUIGetMsg())
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ImageDispose($hImage1)
    _GDIPlus_Shutdown()
    Exit
    Case $InRed
    InRedChange()
    Case $InGreen
    InGreenChange()
    Case $InBlue
    InBlueChange()
    Case $ausgabe_farbe
    ConsoleWrite("Rufe InHexChange()" & @CRLF)
    InHexChange()
    Case $slRed
    _Slider2Hex()
    Case $slGreen
    _Slider2Hex()
    Case $slBlue
    _Slider2Hex()
    EndSwitch

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

    If _IsPressed("01") Then
    Sleep(75)
    $mouseposi = MouseGetPos()
    $farbe = Hex(PixelGetColor($mouseposi[0], $mouseposi[1]), 6)
    If $farbe = 'D4D0C8' Or $farbe = 'FFFFFF' Or $farbe = '000000' Or $farbe = 'FF0000' Or $farbe = '00FF00' Or $farbe = '0000FF' Or $farbe = '808080' Or $farbe = '404040' Or $farbe = '0A246A' Then
    Else
    GUICtrlSetData($ausgabe_farbe, "#" & $farbe)
    GUICtrlSetBkColor($color_view, '0x' & $farbe)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage1, $mouseposi[0] - 416, $mouseposi[1] - 236)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_VALIDATE)
    EndIf
    EndIf
    WEnd

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

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_PAINT

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

    Func InBlueChange()
    $tmp = GUICtrlRead($InBlue)
    If $tmp < 0 Or $tmp > 255 Then
    GUICtrlSetData($InBlue, GUICtrlRead($slBlue))
    Return
    EndIf
    GUICtrlSetData($slBlue, $tmp)
    _Slider2Hex()
    EndFunc ;==>InBlueChange

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

    Func InGreenChange()
    $tmp = GUICtrlRead($InGreen)
    If $tmp < 0 Or $tmp > 255 Then
    GUICtrlSetData($InGreen, GUICtrlRead($slGreen))
    Return
    EndIf
    GUICtrlSetData($slGreen, $tmp)
    _Slider2Hex()
    EndFunc ;==>InGreenChange

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

    Func InRedChange()
    $tmp = GUICtrlRead($InRed)
    If $tmp < 0 Or $tmp > 255 Then
    GUICtrlSetData($InRed, GUICtrlRead($slRed))
    Return
    EndIf
    GUICtrlSetData($slRed, $tmp)
    _Slider2Hex()
    EndFunc ;==>InRedChange

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

    Func InHexChange()
    ConsoleWrite("InHexChange(): Bin da" & @CRLF)
    $tmp = GUICtrlRead($farbe)
    ;#cs
    If Not StringRegExp($tmp, '(#[0-9A-Fa-f]{6}(?!.))') Then
    _Slider2Hex()
    Return
    EndIf
    ConsoleWrite("Rufe _Hex2Slider()" & @CRLF)
    ;#ce
    _Hex2Slider()
    EndFunc ;==>InHexChange

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

    Func _Slider2Hex()
    GUICtrlSetData($InBlue, GUICtrlRead($slBlue))
    GUICtrlSetData($InGreen, GUICtrlRead($slGreen))
    GUICtrlSetData($InRed, GUICtrlRead($slRed))
    $red = Hex(GUICtrlRead($slRed), 2)
    $green = Hex(GUICtrlRead($slGreen), 2)
    $blue = Hex(GUICtrlRead($slBlue), 2)
    $hexColor1 = '#' & $red & $green & $blue
    $hexColor2 = '0x' & $red & $green & $blue
    GUICtrlSetData($ausgabe_farbe, $hexColor1)
    GUICtrlSetBkColor($color_view, $hexColor2)
    EndFunc ;==>_Slider2Hex

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

    Func _Hex2Slider()
    ConsoleWrite("_Hex2Slider(): Bin da" & @CRLF)
    $red = Dec(StringMid(GUICtrlRead($farbe), 2, 2))
    $green = Dec(StringMid(GUICtrlRead($farbe), 4, 2))
    $blue = Dec(StringRight(GUICtrlRead($farbe), 2))
    GUICtrlSetData($InRed, $red)
    GUICtrlSetData($InGreen, $green)
    GUICtrlSetData($InBlue, $blue)
    GUICtrlSetData($slRed, $red)
    GUICtrlSetData($slGreen, $green)
    GUICtrlSetData($slBlue, $blue)
    GUICtrlSetBkColor($color_view, GUICtrlRead($farbe))
    EndFunc ;==>_Hex2Slider

    [/autoit]

    mfg autoBert

  • An bestimmte Textstelle etwas schreiben.

    • autoBert
    • 6. Dezember 2012 um 14:28

    Hallo LikeUuu,

    mit StringReplace so:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <String.au3>

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

    ;bur bei einmaligem Vorkommen
    $sText = "smilies[';)'] = new Array('wcf\/images\/smilies\/wink.png', 'wink');"
    $aFound = _StringBetween($sText, "images\/", "\/wink.png")
    _ArrayDisplay($aFound,"Fundstelle")
    if IsArray($aFound)Then $sText = StringReplace($sText, $aFound[0], "Neuer Ordner", -1) ;von rechts nach links 1*ersezen
    ConsoleWrite($sText & @CRLF)

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

    ;auch bei mehreren Vprkommen
    $sText = "smilies[';)'] = new Array('wcf\/images\/smilies\/wink.png', 'wink');"
    $sText &= "smilies[';)'] = new Array('wcf\/images\/smilies\/wink.png', 'wink');"

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

    $aFound = _StringBetween($sText, "images\/", "\/wink.png")
    _ArrayDisplay($aFound,"Fundstellen")
    For $i = 0 To UBound($aFound) - 1
    $sText = StringReplace($sText, $aFound[$i], "Neuer Ordner", -1) ;von rechts nach links 1*ersezen
    ConsoleWrite($i &".: " & $sText & @CRLF)
    Next

    [/autoit]

    mfg autoBert

  • Weihnachtsscripting-Challenge

    • autoBert
    • 5. Dezember 2012 um 21:44
    Zitat von General Kaboom

    Musik darf selbstverständlich auch eingebunden werden. Allerdings müsst ihr dabei das Copyright im Hinterkopf behandeln. Da die meisten Weihnachtslieder aber gar nicht lizensiert werden dürfen, sollte das keine Probleme auslösen.

    Mag ja sein dass Tet und Melodie nicht schützenswert sind die Rechte der Musiker die es eingespielt haben können aber trotzdem verletzt werden. Also selber singen oder freie verwenden.

    mfg autoBert

  • Internet Explorer steuern

    • autoBert
    • 5. Dezember 2012 um 21:08
    Zitat von mirko2002

    Wer kann mir hier weiterhelfen? ;( ;( ;(


    Wie soll derjenige in dein Intranet kommen? Also wohl eher nicht.

    mfg autoBert

  • Finde keine Lösung :(

    • autoBert
    • 5. Dezember 2012 um 16:27

    Ich habe deinen Beitrag nur kurz überflogen da wenig Zeit denke aber dass [ gelöst ] abhängige Comboboxen das Schema erklärt.

    In deinem Skript kann ich keinen Grund finden der das unterschiedliche Verhalten erklären würde, allerdings kann ich ohne die INI nicht testen:

    Code
    D:\Programme\AutoIt3\Test\asdf.au3 (47) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    GUICtrlSetData(-1, $personalnummer[2])
    GUICtrlSetData(-1, ^ ERROR


    Häng sie also bitte deinem Eröffnungsbeitrag an,

    mfg autoBert

  • [OpenGl] Feuerwerk

    • autoBert
    • 5. Dezember 2012 um 06:46

    @Jungs und Mädels: ich brauch neue Hardware, gerade einmal 4 fps.

    Zitat


    Diese Animation wurde Ihnen mit 4 echten FPS präsentiert. Es wurden 12440 Partikel in 25.87s gerendert.

    Spenden willkommen.

    minx: sieht aber trotzdem gut aus

    mfg autoBert

  • Pee wird 24 und Funkey 32

    • autoBert
    • 4. Dezember 2012 um 00:07

    Herzlichen Glückwünsche euch beiden, auf dass ihr uns noch lange erhalten bleibt Und feiert gut und ausgiebig. :party: :party: :party: :party: :party: :party: :party:

  • Datein vom FTP in Listview auflisten. ( Problem mit Refresh Funktion )

    • autoBert
    • 3. Dezember 2012 um 23:51

    Ich habe noch ein paar Änderungen gemacht:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>
    #include <FTPEx.au3>
    #include <Array.au3>
    Global $Prozentt, $Prozent
    Global $Server = "ftp.lima-city.de"
    Global $Username = "autobert"
    Global $Passwort = "13FTPBert1158"
    Global $Path = "/Tickets/"
    Global $Path = "/FTPTestfiles/Test/" ;wieder löschen
    Global $Ziel = @DesktopDir
    Global $Open, $l_FTPSession, $aFile, $iFileSize

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

    $gui = GUICreate('Ticket System', 699, 425)
    Global $hListView = GUICtrlCreateListView('Ticket Name |Erstellungs Datum |Gr', 16, 25, 425, 185)
    $idBtnRefresh = GUICtrlCreateButton("&Refresh", 351, 219, 92, 31)
    $Group1 = GUICtrlCreateGroup("Funktionen", 448, 8, 241, 209)
    $idInpTicketName = GUICtrlCreateInput("Ticket Name", 456, 32, 225, 26)
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idEdtTicketAmswer = GUICtrlCreateEdit("", 456, 64, 225, 145)
    GUICtrlSetData(-1, "Antwort auf das Ticket")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnMessage = GUICtrlCreateButton("Nachricht &Senden", 574, 219, 116, 31)
    $idBtnDeleteTicket = GUICtrlCreateButton("Ticket &Verwerfen", 450, 219, 116, 31)
    $Group2 = GUICtrlCreateGroup("Ticket Liste", 8, 8, 441, 209)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnExitTS = GUICtrlCreateButton("Ticket System V&erlassen", 351, 299, 340, 31)
    $idEdtTicketQuestion = GUICtrlCreateEdit("", 8, 224, 337, 109)
    GUICtrlSetData(-1, "Inhalt des Tickets")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idBtnOpenTicket = GUICtrlCreateButton("Ticket &Öffnen", 351, 259, 340, 31)
    _FTPLogin()
    _GetTickets()
    $idContextmenu = GUICtrlCreateContextMenu($hListView)
    $idCMnuDelete = GUICtrlCreateMenuItem("Ticket &Verwerfen", $idContextmenu)
    $idCMnuOpen = GUICtrlCreateMenuItem("Ticket &Öffnen", $idContextmenu)
    $idCMnuSend = GUICtrlCreateMenuItem("Nachricht &Senden", $idContextmenu)
    GUICtrlCreateMenuItem("", $idContextmenu)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<======================= Bemachrichtigung Doppelklick etc.
    _ColSizes()
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $idBtnExitTS
    $Ftpc = _FTP_Close($Open)
    Exit
    Case $idBtnOpenTicket, $idCMnuOpen
    _OpenTicket()
    Case $idBtnDeleteTicket, $idCMnuDelete
    $sDeleteTicket = GUICtrlRead($idInpTicketName)
    #cs ;so geht es schneller
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
    $aTicketLV = _GUICtrlListView_GetItemTextArray($hListView, $i)
    ConsoleWrite($aTicketLV[1] & @TAB)
    If $sDeleteTicket == $aTicketLV[1] Then
    _FTP_FileDelete($l_FTPSession, $sDeleteTicket)
    _GUICtrlListView_DeleteItem($hListView, $i)
    ConsoleWrite("Deleted" & @CRLF)
    $iFileSize -= $aTicketLV[3]
    Else
    ConsoleWrite(@CRLF)
    EndIf
    Next
    _ShowStat()
    #ce
    ;#cs ;so wird auch gleich refresht
    _FTP_FileDelete($l_FTPSession, $sDeleteTicket)
    _GUICtrlListView_DeleteAllItems($hListView)
    _GetTickets()
    ;#ce
    GUICtrlSetData($idInpTicketName, "Ticket Name")
    Case $idBtnMessage, $idCMnuSend
    MsgBox(0, "Sorry", "muss erst noch programmiert werden")
    GUICtrlSetData($idInpTicketName, "Ticket Name")
    Case $idBtnRefresh
    _GUICtrlListView_DeleteAllItems($hListView)
    _GetTickets()
    EndSwitch
    WEnd

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

    Func _FTPLogin()
    Local $iRetrys
    Do
    $Open = _FTP_Open('Mein FTP-Control')
    If @error Then $iRetrys += 1
    ConsoleWrite("Open Retrys: " & $iRetrys & @CRLF)
    If $iRetrys > 5 Then
    MsgBox(16, "FTP-Fehler", "Open: " & @error)
    Exit
    EndIf
    Until $Open <> 0
    $iRetrys = 0
    Do
    $l_FTPSession = _FTP_Connect($Open, $Server, $Username, $Passwort)
    If @error Then $iRetrys += 1
    ConsoleWrite("Connect Retrys: " & $iRetrys & @CRLF)
    If $iRetrys > 5 Then
    MsgBox(16, "FTP-Fehler", "Connect: " & @error)
    Exit
    EndIf
    Until $l_FTPSession <> 0
    _FTP_DirSetCurrent($l_FTPSession, $Path)
    EndFunc ;==>_FTPLogin

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

    Func _GetTickets()
    Local Static $iRetrys
    $aFile = _FTP_ListToArrayEx($l_FTPSession, 2, $INTERNET_FLAG_RELOAD)
    If $aFile = 0 Then
    ConsoleWrite("GetTicket Retrys: " & $iRetrys & @CRLF)
    If $iRetrys < 4 Then
    $iRetrys += 1
    $iAnswer = 6
    Else
    $iAnswer = MsgBox(36, "FTP-Fehler", "Tickets holen: " & @error & @CRLF & @CRLF & "Nochmal versuchen?")
    EndIf
    If $iAnswer = 6 Then
    $Ftpc = _FTP_Close($Open) ;vorsichtshalber
    Sleep(1000)
    _FTPLogin()
    _GetTickets()
    Else
    Exit
    EndIf
    EndIf
    $iFileSize = 0
    _GUICtrlListView_BeginUpdate($hListView)
    For $i = 1 To $aFile[0][0]
    GUICtrlCreateListViewItem($aFile[$i][0] & '|' & $aFile[$i][3] & '|' & $aFile[$i][1], $hListView)
    $iFileSize += $aFile[$i][1]
    Next
    _ColSizes()
    _GUICtrlListView_EndUpdate($hListView)
    _ShowStat()
    EndFunc ;==>_GetTickets

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

    Func _ShowStat()
    ConsoleWrite("Grösse aller Tickets: " & $iFileSize & @CRLF)
    ConsoleWrite("Anzahl aller Tickets: " & _GUICtrlListView_GetItemCount($hListView) & @CRLF)
    ;dies evtl. in Labels anzeigen lassen
    EndFunc ;==>_ShowStat

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

    Func _OpenTicket()
    $sOpenTicket = GUICtrlRead($idInpTicketName)
    If $sOpenTicket <> "Ticket Name" Then
    ConsoleWrite($sOpenTicket & @TAB)
    #cs ;klappt nicht
    $hFileOpen = _FTP_FileOpen($l_FTPSession, $sOpenTicket)
    $sText = ""
    Do
    $sText &= _FTP_FileRead($hFileOpen, 256)
    Until @error
    $sText = BinaryToString($sText)
    #ce
    _FTP_FileGet($l_FTPSession, $sOpenTicket, $Ziel & "\" & $sOpenTicket)
    ConsoleWrite(@error & @CRLF)
    $sText = FileRead($Ziel & "\" & $sOpenTicket)
    GUICtrlSetData($idEdtTicketQuestion, $sText)
    ;FileDelete($Ziel&"\"&$sOpenTicket)
    GUICtrlSetData($idInpTicketName, "Ticket Name")
    Else
    ConsoleWrite("nothing selected" & @CRLF)
    EndIf
    ConsoleWrite("ready " & @CRLF)
    EndFunc ;==>_OpenTicket

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

    Func _ColSizes()
    _GUICtrlListView_HideColumn($hListView, 2) ;Größe verstecken
    _GUICtrlListView_SetColumnWidth($hListView, 0, 210)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 140)
    EndFunc ;==>_ColSizes

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListView Then
    ;ConsoleWrite($code & @CRLF)
    Switch $code
    ;Case $NM_CLICK,$NM_RCLICK ,$NM_DBLCLK; Links-, Rechts-, Doppelklick
    Case $NM_CLICK, $NM_RCLICK, $NM_DBLCLK
    $i = _GUICtrlListView_GetSelectedIndices($hListView)
    If $i <> "" Then
    $i = Int($i)
    $aTicket = _GUICtrlListView_GetItemTextArray($hListView, $i)
    $sTicket = $aTicket[1]
    GUICtrlSetData($idInpTicketName, $sTicket)
    EndIf
    If $code = $NM_DBLCLK Then _OpenTicket()
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Es ist kurz angetestet, es kann aber nicht schaden wenn du es auch noch testest.

    mfg autoBert

  • Datein vom FTP in Listview auflisten. ( Problem mit Refresh Funktion )

    • autoBert
    • 3. Dezember 2012 um 18:14

    Hast du schon mit einem FTP-Client z.B.: FileZilla nachgeschaut ob diese im Ordner /Tickets landen und nicht direkt in / ?

    du kannst einmal Case $idBtnRefresh so

    [autoit]

    _GUICtrlListView_DeleteAllItems($hListView)
    $Ftpc = _FTP_Close($Open)
    _FTPLogin()
    _GetTickets()

    [/autoit]

    abändern und testen ursprünglich hast du da die Sitzung geschlossen und wieder neu aufgebaut. Obige Änderung bewirkt genau das gleiche.

    mfg autoBert

  • Geschwindigkeit

    • autoBert
    • 3. Dezember 2012 um 17:33
    Zitat von AnnaM

    Diese Zeilen können sich also beliebig verändern wie schon beschrieben und in der nächsten steht der Betrag.
    Also mache ich es lieber mit RegExp, oder? Ich will ja auch zu jeder Zeile den entsprechenden Preis haben.

    gerade weil sie sich beliebig ändern können solltest du StringSplit nehmen:

    Zitat von autoBert

    Bei der StringSplit-Methode brauchtr man sich um nichts kümmern, wenn ein neuer Begriff auftaucht wird diese Zeile trotzdem autmatisch getrennt.
    Bei der RegEx-Methode muss man das Skript anpassen und dies dauert länger als einige Millisekunden, vor allem muss man daran denken ansonsten werden Zeilen unterschlagen.

    auch wenn durch eine 0 mehr es jetzt vielleicht Sekunden sind Skript anpassen dauert länger.


    Zitat von chip

    Ich merke schon mit lesen hast es nicht so wirklich ;). Das war die Antwort auf die indirekte Aussage von Autobert bezüglich Split-Regexp wäre nur mit .net 4.5 möglich.


    Leider habe ich in diesem Beitrag nur bis

    Zitat von chip

    Logische Schlussfolgerung

    gescrollt und sah mich bestätigt: du hast dich getäuscht.
    Im übrigen hast du zu stark verkürzt zitiert:

    Zitat von autoBert

    Ich habe aber kein .NET Framework 4.5 installiert und bisher auch nirgends gelesen dass AutoIt überhaupt irgendein .NET Framework benötigt.

    Dass du dann mit einem Link auf die MSDN:

    Zitat von chip

    Leg ich dir halt mal den Arm aus der Sonne: http://msdn.microsoft.com/de-de/library/…=vs.110%29.aspx

    dass AutoIt StringSplit mit RegEx realisiert hat ist listig und daher

    Zitat von chip

    Und nun bist du dran minx, beweise mal das nicht Regexp benutzt.

    nicht zulässig. Dies

    Zitat von Ineluki

    Ich denke mal das hier sollte die Diskussion klären:

    Spoiler anzeigen
    Code
    AUT_RESULT AutoIt_Script::F_StringSplit(VectorVariant &vParams, Variant &vResult)
    {
    	int			iCount, iElements, iIndex;
    	int			nPos, nFlag;
    	char const	*pcSearch, *pcDelim, *pcTmp;	// pointer can change, but the pointed at stuff will not.
    	Variant		*pvTemp;
    
    
    	// For speed, pre-allocate our string class to be same size as input string
    	AString		sElement((int)strlen(vParams[0].szValue()));
    
    
    	if (vParams.size() < 3)
    		nFlag = 0;
    	else
    		nFlag = vParams[2].nValue();
    
    
    	pcSearch	= vParams[0].szValue();
    	pcDelim		= vParams[1].szValue();
    
    
    	// Create array with single characters when the delimiter is empty
    	if (pcDelim[0] == '\0')
    	{
    		iCount   = 0;
    		iIndex   = 1;
    		iElements = (int)strlen(pcSearch);
    		Util_VariantArrayDim(&vResult, iElements+1);    // create the array , String length + 1
    		pvTemp = Util_VariantArrayGetRef(&vResult, 0);  // First element set to length
    		*pvTemp = iElements;
    		while (iCount < iElements)
    		{
    			sElement.assign(pcSearch, iCount, iCount + 1);
    			pvTemp = Util_VariantArrayGetRef(&vResult, iIndex++);   //Next element
    			*pvTemp = sElement.c_str();
    			++iCount;                  // Increase count
    		}
    		return AUT_OK;
    	}
    
    
    
    
    	switch (nFlag)
    	{
    	case 0:	// default method - any characters in delimeter string delimit fields
    		// Count how many times the delimiters occur
    		iCount = 0;
    		nPos = 0;
    		while (pcSearch[nPos] != '\0')
    		{
    			if ( strchr(pcDelim, pcSearch[nPos]) )
    					++iCount;						// Increase count
    			++nPos;
    		}
    		break;
    	case 1: // use exact delimeter string to delimit fields
    		iCount=0;
    		while (pcSearch != NULL)
    		{
    			pcSearch = strstr(pcSearch, pcDelim);
    			if (pcSearch != NULL) {
    				++iCount;
    				pcSearch += strlen(pcDelim);	// skip by the length of the delimter
    			}
    		}
    		// reset back to starting place
    		pcSearch = vParams[0].szValue();
    		break;
    	default:
    		iCount = -1;
    	}
    
    
    	// Find any delimiters?
    	if (iCount <= 0)
    	{
    		// Create array of 2 to return count = 1 and full string in element[1]
    		Util_VariantArrayDim(&vResult, 2);
    		pvTemp = Util_VariantArrayGetRef(&vResult, 0);	//First element
    		*pvTemp = 1;
    
    
    		pvTemp = Util_VariantArrayGetRef(&vResult, 1);	//Second element
    		*pvTemp = pcSearch;
    
    
    		SetFuncErrorCode(-iCount+1);	// 1 for no delimiters, 2 for bad flag
    		return AUT_OK;
    	}
    
    
    
    
    	// Number of string elements will be iCount number of delimiters + 1 (3 delims = 4 elements to return)
    	iElements = iCount+1;
    
    
    	// Create our return array (first element is number of strings return, so we need iElements+1 elements)
    	Util_VariantArrayDim(&vResult, iElements+1);
    
    
    	pvTemp = Util_VariantArrayGetRef(&vResult, 0);	//First element
    	*pvTemp = iElements;							// Number of elements we will return
    
    
    
    
    	// Go through the loop again but this time, make a note of the strings and store in our new array
    	iCount	= 0;
    	nPos	= 0;
    	iIndex	= 1;
    	sElement = "";
    	bool bStored;
    	while (iCount < iElements)
    	{
    		switch (nFlag)
    		{
    		case 0:
    			bStored = false;
    			if ( strchr(pcDelim, pcSearch[nPos]) )	// This works as \0 is also matched so overrun is prevented
    			{
    				pvTemp = Util_VariantArrayGetRef(&vResult, iIndex++);	//Next element
    				*pvTemp = sElement.c_str();
    				sElement = "";
    
    
    				bStored = true;
    				++iCount;						// Increase count
    			}
    
    
    			if (bStored == false)
    				sElement += pcSearch[nPos];
    
    
    			++nPos;
    			break;
    		case 1:
    			pcTmp = pcSearch;
    			pcSearch = strstr(pcSearch, pcDelim);
    			if (pcSearch != NULL) {
    				sElement = "";
    
    
    				// copy all elements up to the beginning of the delimiter into sElement
    				for (;pcTmp != pcSearch; ++pcTmp)
    					sElement += *pcTmp;
    
    
    				pcSearch += strlen(pcDelim);	// skip by the length of the delimter
    			}
    			else
    				sElement = pcTmp;
    			// copy string into array
    			pvTemp = Util_VariantArrayGetRef(&vResult, iIndex++);	//Next element
    			*pvTemp = sElement.c_str();
    			++iCount;
    			break;
    		}	// switch
    	}	// while (iCount < iElements)
    
    
    	return AUT_OK;
    
    
    }
    Alles anzeigen


    Ich persönlich sehe das kein RegEx.
    Ist zwar von der 3.1.0 aber ich denke, da hat sich nichts geändert:
    http://www.autoitscript.com/autoit3/files/…-v3.1.0-src.exe


    sollte als Beweis genügen, ansonsten wäre es wohl im ChangeLog erwähnt.

    mfg autoBert

  • Datein vom FTP in Listview auflisten. ( Problem mit Refresh Funktion )

    • autoBert
    • 3. Dezember 2012 um 16:45

    geh in Zeile 10 da istmir beim zurück ändern von meinen Daten ein Tippfehler passiert es muss "/Tickets/" heissen und nicht "/Tickets&"

    mfg autoBert

  • ControlListview --> FindItem liefert nicht den korrekten Index zurück

    • autoBert
    • 3. Dezember 2012 um 16:32

    Hast du dir schon einmal @Error ausgeben lassen z.B. so:

    [autoit]

    ;ASUS WebStorage auswählen und deinstallieren
    $a=ControlListView("Programme und Funktionen", "1", "SysListView321", "FindItem", "Adobe AIR")
    ConsoleWrite("$a & @TAB & @error & @CRLF)
    ControlListView("Programme und Funktionen","","SysListView321","SelectClear")
    ControlListView("Programme und Funktionen","","SysListView321","Select", $a)
    WinWait("Programme und Funktionen")
    ControlSend("Programme und Funktionen", "", "", "!d")

    [/autoit]

    Was wird dabei in der Konsole ausgegeben?

    mfg autoBert

  • ControlListview --> FindItem liefert nicht den korrekten Index zurück

    • autoBert
    • 3. Dezember 2012 um 15:01

    Du hast auf jeden Fall einen Tippfehler im Sript.

    [autoit]

    ControlListView("Programme und Funktionen","","SysListView321","Select", &a)

    [/autoit]

    muss zu geändert werden

    [autoit]

    ControlListView("Programme und Funktionen","","SysListView321","Select", $a)

    [/autoit]

    Du kannst dir auch mit

    [autoit]

    ConsoleWrite($a &@CRLF)

    [/autoit]

    den Inhalt von $a ausgeben lassen um zu sehen ob Zeile 2 funktioniert. Die Ausgabe erfolgt in derScitekonsole.

    Zitat von Hilfe zu ControlListView

    Bemerkungen

    Manche Befehle funktionieren nicht, wenn ein 32-bit AutoIt Prozess verwendet wird, um von einem 64-Bit Prozess zu lesen. Genauso können Befehle nicht funktionieren, wenn ein 64-bit AutoIt Prozess verwendet wird, um von einem 32-bit Prozess zu lesen.

    mfg autoBert

  • Umbau eines Skriptes

    • autoBert
    • 3. Dezember 2012 um 03:50
    Zitat von timyboy

    autoBert, Menschen können sich auch Irren und man sollte mit solchen Äußerungen etwas bedeckt halten. Und ja, es war mir nicht bewusst das man für eine Hilfestellung bei dessen Beispiel den Namen mit nennen muss, mein Fehler! Aber man lernt ja immer dazu.


    Ja, Menschen können sich irren. Meine Schlussfolgerung war falsch und dafür entschuldige ich mich.

    Aber Unwissenheit schützt vor Strafe nicht. Du kannst von Glück reden, dass CyRoX die ungenehmigte Veröffentlichung seines Skriptes auf sich beruhen lässt und es dir nachträglich erlaubt hat.

    mfg autoBert

  • Datein vom FTP in Listview auflisten. ( Problem mit Refresh Funktion )

    • autoBert
    • 3. Dezember 2012 um 00:47

    Hallo derBrot,

    ich habe dein Sript mal etwas überarbeiet. Teste es einfach einmal mit deinen Zugangsdaten:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>
    #include <FTPEx.au3>
    #include <Array.au3>
    Global $Prozentt, $Prozent
    Global $Server = "ftp.csx.cam.ac.uk"
    Global $Username = ""
    Global $Passwort = ""
    Global $Path = "/Tickets"
    Global $Path = "/pub/mac" ;wieder löschen
    Global $Ziel = @DesktopDir
    Global $Open, $l_FTPSession, $aFile, $FileSize

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

    $gui = GUICreate('Ticket System', 699, 425)
    Global $hListView = GUICtrlCreateListView('Ticket Name|Erstellungs Datum|', 16, 25, 425, 185)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 210)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 180)
    $idBtnRefresh = GUICtrlCreateButton("Refresh", 351, 219, 92, 31)
    $Group1 = GUICtrlCreateGroup("Funktionen", 448, 8, 241, 209)
    $idInpTicketName = GUICtrlCreateInput("Ticket Name", 456, 32, 225, 26)
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idEdtTicketAmswer = GUICtrlCreateEdit("", 456, 64, 225, 145)
    GUICtrlSetData(-1, "Antwort auf das Ticket")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnMessage = GUICtrlCreateButton("Nachricht senden", 574, 219, 116, 31)
    $idBtnDeleteTicket = GUICtrlCreateButton("Ticket Verwerfen", 450, 219, 116, 31)
    $Group2 = GUICtrlCreateGroup("Ticket Liste", 8, 8, 441, 209)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnExitTS = GUICtrlCreateButton("Ticket System Verlassen", 351, 299, 340, 31)
    $idEdtTicketQuestion = GUICtrlCreateEdit("", 8, 224, 337, 109)
    GUICtrlSetData(-1, "Inhalt des Tickets")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idBtnOpenTicket = GUICtrlCreateButton("Ticket Öffnen", 351, 259, 340, 31)
    _FTPLogin()
    _GetTickets()

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    $Ftpc = _FTP_Close($Open)
    Exit
    Case $idBtnDeleteTicket
    _FTP_FileDelete($l_FTPSession, GUICtrlRead($idInpTicketName))
    _GUICtrlListView_DeleteAllItems($hListView)
    _GetTickets()
    Case $idBtnRefresh
    _GUICtrlListView_DeleteAllItems($hListView)
    _GetTickets()
    EndSwitch
    WEnd

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

    Func _FTPLogin()
    $Open = _FTP_Open('Mein FTP-Control')
    If @error Then
    MsgBox(16, "FTP-Fehler", "Open: " & @error)
    Exit
    Else
    $l_FTPSession = _FTP_Connect($Open, $Server, $Username, $Passwort)
    If @error Then
    MsgBox(16, "FTP-Fehler", "Connect: " & @error)
    Exit
    EndIf
    EndIf
    _FTP_DirSetCurrent($l_FTPSession, $Path)
    EndFunc ;==>_FTPLogin

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

    Func _GetTickets()
    $aFile = _FTP_ListToArrayEx($l_FTPSession, 2)
    If @error Then
    If MsgBox(36, "FTP-Fehler", "Tickets holen: " & @error & @CRLF & @CRLF & "Nochmal versuchen?") = 6 Then
    $Ftpc = _FTP_Close($Open) ;vorsichtshalber
    Sleep(1000)
    _FTPLogin()
    _GetTickets()
    Else
    Exit
    EndIf
    EndIf
    $FileSize = _FTP_FileGetSize($l_FTPSession, "Tickets")
    For $i = 1 To $aFile[0][0]
    GUICtrlCreateListViewItem($aFile[$i][0] & ' | ' & $aFile[$i][3], $hListView)
    Next
    EndFunc ;==>_GetTickets

    [/autoit]

    ich komme derzeit nicht auf meinen FTP beim Hoster, so konnte ich es nur auf einem öffentlichen Server testen. Dort habe ich natürlich nicht die nötigen Rechte um Dateien zu löschen.

    Edit: mittlerweile ist auch mein FTP-Serer wieder erreichbar, so konnte ich testen und etwas optimieren:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>
    #include <FTPEx.au3>
    #include <Array.au3>
    Global $Prozentt, $Prozent
    Global $Server = ""
    Global $Username = ""
    Global $Passwort = ""
    Global $Path = "/Tickets"
    Global $Path = "/Privat" ;wieder löschen
    Global $Ziel = @DesktopDir
    Global $Open, $l_FTPSession, $aFile, $FileSize

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

    $gui = GUICreate('Ticket System', 699, 425)
    Global $hListView = GUICtrlCreateListView('Ticket Name|Erstellungs Datum|', 16, 25, 425, 185)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 210)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 180)
    $idBtnRefresh = GUICtrlCreateButton("Refresh", 351, 219, 92, 31)
    $Group1 = GUICtrlCreateGroup("Funktionen", 448, 8, 241, 209)
    $idInpTicketName = GUICtrlCreateInput("Ticket Name", 456, 32, 225, 26)
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idEdtTicketAmswer = GUICtrlCreateEdit("", 456, 64, 225, 145)
    GUICtrlSetData(-1, "Antwort auf das Ticket")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnMessage = GUICtrlCreateButton("Nachricht senden", 574, 219, 116, 31)
    $idBtnDeleteTicket = GUICtrlCreateButton("Ticket Verwerfen", 450, 219, 116, 31)
    $Group2 = GUICtrlCreateGroup("Ticket Liste", 8, 8, 441, 209)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnExitTS = GUICtrlCreateButton("Ticket System Verlassen", 351, 299, 340, 31)
    $idEdtTicketQuestion = GUICtrlCreateEdit("", 8, 224, 337, 109)
    GUICtrlSetData(-1, "Inhalt des Tickets")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idBtnOpenTicket = GUICtrlCreateButton("Ticket Öffnen", 351, 259, 340, 31)
    _FTPLogin()
    _GetTickets()

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    $Ftpc = _FTP_Close($Open)
    Exit
    Case $idBtnDeleteTicket
    $sDeleteTicket = GUICtrlRead($idInpTicketName)
    ;so geht es schneller
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
    $sTicketLV = StringStripWS (_GUICtrlListView_GetItemText($hListView, $i),3)
    ;ConsoleWrite($sTicketLV&@TAB)
    If $sDeleteTicket == $sTicketLV Then
    _FTP_FileDelete($l_FTPSession, $sDeleteTicket)
    _GUICtrlListView_DeleteItem($hListView, $i)
    ;ConsoleWrite("Deleted" & @CRLF)
    Else
    ;ConsoleWrite(@CRLF)
    EndIf
    Next
    ;_GUICtrlListView_DeleteAllItems($hListView)
    ;_GetTickets()
    Case $idBtnRefresh
    _GUICtrlListView_DeleteAllItems($hListView)
    _GetTickets()
    EndSwitch
    WEnd

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

    Func _FTPLogin()
    $Open = _FTP_Open('Mein FTP-Control')
    If @error Then
    MsgBox(16, "FTP-Fehler", "Open: " & @error)
    Exit
    Else
    $l_FTPSession = _FTP_Connect($Open, $Server, $Username, $Passwort)
    If @error Then
    MsgBox(16, "FTP-Fehler", "Connect: " & @error)
    Exit
    EndIf
    EndIf
    _FTP_DirSetCurrent($l_FTPSession, $Path)
    EndFunc ;==>_FTPLogin

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

    Func _GetTickets()
    $aFile = _FTP_ListToArrayEx($l_FTPSession, 2)
    If @error Then
    If MsgBox(36, "FTP-Fehler", "Tickets holen: " & @error & @CRLF & @CRLF & "Nochmal versuchen?") = 6 Then
    $Ftpc = _FTP_Close($Open) ;vorsichtshalber
    Sleep(1000)
    _FTPLogin()
    _GetTickets()
    Else
    Exit
    EndIf
    EndIf
    $FileSize = _FTP_FileGetSize($l_FTPSession, "Tickets")
    For $i = 1 To $aFile[0][0]
    GUICtrlCreateListViewItem($aFile[$i][0] & ' | ' & $aFile[$i][3], $hListView)
    Next
    EndFunc ;==>_GetTickets

    [/autoit]

    Edit2: meine Zugangsdaten entfernt

    Edit3: und hier noch ein weiterer Stand:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>
    #include <FTPEx.au3>
    #include <Array.au3>
    Global $Prozentt, $Prozent
    Global $Server = ""
    Global $Username = ""
    Global $Passwort = ""
    Global $Path = "/Tickets&"
    Global $Ziel = @DesktopDir ;wäre @Tempdir nicht besser????
    Global $Open, $l_FTPSession, $aFile, $FileSize

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

    $gui = GUICreate('Ticket System', 699, 425)
    Global $hListView = GUICtrlCreateListView('Ticket Name|Erstellungs Datum|', 16, 25, 425, 185)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 210)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 180)
    $idBtnRefresh = GUICtrlCreateButton("Refresh", 351, 219, 92, 31)
    $Group1 = GUICtrlCreateGroup("Funktionen", 448, 8, 241, 209)
    $idInpTicketName = GUICtrlCreateInput("Ticket Name", 456, 32, 225, 26)
    ;GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idEdtTicketAmswer = GUICtrlCreateEdit("", 456, 64, 225, 145)
    GUICtrlSetData(-1, "Antwort auf das Ticket")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnMessage = GUICtrlCreateButton("Nachricht senden", 574, 219, 116, 31)
    $idBtnDeleteTicket = GUICtrlCreateButton("Ticket Verwerfen", 450, 219, 116, 31)
    $Group2 = GUICtrlCreateGroup("Ticket Liste", 8, 8, 441, 209)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $idBtnExitTS = GUICtrlCreateButton("Ticket System Verlassen", 351, 299, 340, 31)
    $idEdtTicketQuestion = GUICtrlCreateEdit("", 8, 224, 337, 109)
    GUICtrlSetData(-1, "Inhalt des Tickets")
    GUICtrlSetFont(-1, 8, 800, 0, "Palatino Linotype")
    $idBtnOpenTicket = GUICtrlCreateButton("Ticket Öffnen", 351, 259, 340, 31)
    _FTPLogin()
    _GetTickets()
    $idContextmenu = GUICtrlCreateContextMenu($hListView)
    $idCMnuDelete = GUICtrlCreateMenuItem("Löschen", $idContextmenu)
    $idCMnuOpen = GUICtrlCreateMenuItem("Öffnen", $idContextmenu)
    $idCMnuSend = GUICtrlCreateMenuItem("senden", $idContextmenu)
    GUICtrlCreateMenuItem("", $idContextmenu)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<=========================================== Bemachrichtigung Doppelklick

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    $Ftpc = _FTP_Close($Open)
    Exit
    Case $idBtnOpenTicket, $idCMnuOpen
    _OpenTicket()
    Case $idBtnDeleteTicket, $idCMnuDelete
    $sDeleteTicket = GUICtrlRead($idInpTicketName)
    ;so geht es schneller
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
    $sTicketLV = StringStripWS(_GUICtrlListView_GetItemText($hListView, $i), 3)
    ConsoleWrite($sTicketLV & @TAB)
    If $sDeleteTicket == $sTicketLV Then
    _FTP_FileDelete($l_FTPSession, $sDeleteTicket)
    _GUICtrlListView_DeleteItem($hListView, $i)
    ConsoleWrite("Deleted" & @CRLF)
    Else
    ConsoleWrite(@CRLF)
    EndIf
    Next
    ;_GUICtrlListView_DeleteAllItems($hListView)
    ;_GetTickets()
    GUICtrlSetData($idInpTicketName, "Ticket Name")
    Case $idBtnMessage, $idCMnuSend
    MsgBox(0,"Sorry","muss erst noch programmiert werden")
    Case $idBtnRefresh
    _GUICtrlListView_DeleteAllItems($hListView)
    _GetTickets()
    EndSwitch
    WEnd

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

    Func _FTPLogin()
    $Open = _FTP_Open('Mein FTP-Control')
    If @error Then
    MsgBox(16, "FTP-Fehler", "Open: " & @error)
    Exit
    Else
    $l_FTPSession = _FTP_Connect($Open, $Server, $Username, $Passwort)
    If @error Then
    MsgBox(16, "FTP-Fehler", "Connect: " & @error)
    Exit
    EndIf
    EndIf
    _FTP_DirSetCurrent($l_FTPSession, $Path)
    EndFunc ;==>_FTPLogin

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

    Func _GetTickets()
    $aFile = _FTP_ListToArrayEx($l_FTPSession, 2)
    If @error Then
    If MsgBox(36, "FTP-Fehler", "Tickets holen: " & @error & @CRLF & @CRLF & "Nochmal versuchen?") = 6 Then
    $Ftpc = _FTP_Close($Open) ;vorsichtshalber
    Sleep(1000)
    _FTPLogin()
    _GetTickets()
    Else
    Exit
    EndIf
    EndIf
    $FileSize = _FTP_FileGetSize($l_FTPSession, "Tickets")
    For $i = 1 To $aFile[0][0]
    GUICtrlCreateListViewItem(StringStripWS($aFile[$i][0], 3) & ' | ' & StringStripWS($aFile[$i][3], 3), $hListView)
    Next
    EndFunc ;==>_GetTickets

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

    Func _OpenTicket()
    $sOpenTicket = GUICtrlRead($idInpTicketName)
    If $sOpenTicket <> "Ticket Name" Then
    ConsoleWrite($sOpenTicket & @TAB)
    #cs ;klappt nicht
    $hFileOpen = _FTP_FileOpen($l_FTPSession, $sOpenTicket)
    $sText = ""
    Do
    $sText &= _FTP_FileRead($hFileOpen, 256)
    Until @error
    $sText = BinaryToString($sText)
    #ce
    _FTP_FileGet($l_FTPSession, $sOpenTicket, $Ziel & "\" & $sOpenTicket)
    ConsoleWrite(@error & @CRLF)
    $sText = FileRead($Ziel & "\" & $sOpenTicket)
    GUICtrlSetData($idEdtTicketQuestion, $sText)
    ;FileDelete($Ziel&"\"&$sOpenTicket)
    GUICtrlSetData($idInpTicketName, "Ticket Name")
    Else
    ConsoleWrite("nothing selected" & @CRLF)
    EndIf
    ConsoleWrite("ready " & @CRLF)
    EndFunc ;==>_OpenTicket

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListView Then
    ;ConsoleWrite($code & @CRLF)
    Switch $code
    ;Case $NM_CLICK,$NM_RCLICK ,$NM_DBLCLK; Links-, Rechts-, Doppelklick
    Case $NM_CLICK, $NM_RCLICK ,$NM_DBLCLK
    $i = _GUICtrlListView_GetSelectedIndices($hListView)
    If $i <> "" Then
    $i = Int($i)
    $aTicket = _GUICtrlListView_GetItemTextArray($hListView, $i)
    $sTicket = StringStripWS($aTicket[1], 3)
    GUICtrlSetData($idInpTicketName, $sTicket)
    EndIf
    if $code = $NM_DBLCLK Then _OpenTicket()
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    er enthält ein Kontextmenü (öffnen durch Rechsklick) für Löschen, Öffnen, senden. Öffnen ist schon funktionsfähigund kann zusätzlich auch durch Doppelklick gestartet werden. Bei senden öffnet sichnur eine MsgBox. Da ich nicht wissen kann wie du dir dein Ticketsystem gedacht hast wollte ich damit nur die Bedienbarkeit erleichtern, denn mich hat es beim Testen immer gestört die Namen einzugeben.

    mfg autoBert

  • Geschwindigkeit

    • autoBert
    • 2. Dezember 2012 um 23:17
    Zitat von name22

    autoBert Ehrlich gesagt finde ich nicht, dass da eines flexibler ist als das andere..


    Bei der StringSplit-Methode brauchtr man sich um nichts kümmern, wenn ein neuer Begriff auftaucht wird diese Zeile trotzdem autmatisch getrennt.
    Bei der RegEx-Methode muss man das Skript anpassen und dies dauert länger als einige Millisekunden, vor allem muss man daran denken ansonsten werden Zeilen unterschlagen.

    mfg autoBert

  • Geschwindigkeit

    • autoBert
    • 2. Dezember 2012 um 20:48
    Zitat von minx

    Na ^^
    Vielleicht hat sich was geändert, aber ich glaube das nicht.

    Es hätte ja auch nach dem Prinzip funktionieren können, aber das wäre, wie gesagt, sinnlos dann die Funktion gleichwertig anzubieten.


    Sinnlos ist angesichts der Zeitunterschiede die Diskussion darüber was besser ist, denn

    Zitat von autoBert


    Damit würde meine Enrscheidung bei so kleinen Unterschieden zugunsten _StringBetween fallen, denn das Anpassen des Source dauert länger als die gesparte Zeit durch RegEx.

    mfg autoBert

  • Geschwindigkeit

    • autoBert
    • 2. Dezember 2012 um 18:47
    Zitat von chip

    Leg ich dir halt mal den Arm aus der Sonne: http://msdn.microsoft.com/de-de/library/…=vs.110%29.aspx


    Und nun bist du dran minx, beweise mal das nicht Regexp benutzt.

    OK,jetzt weis ich warum du folgerst dass AutoIt es so macht. Ich habe aber kein .NET Framework 4.5 installiert und bisher auch nirgends gelesen dass AutoIt überhaupt irgendein .NET Framework benötigt. Trotzdem funktioniert StringSplit bei mir also kann (muss aber nicht)deine Folgerung auch ein Trugschluss sein. Da AutoIt lt. Hilfe auch mit Win 95 läuft drängt sich bei mir der Verdacht auf, dass dies so ist.

    mfg autoBert

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™