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

Beiträge von nuts

  • 2000 ini einträge Prüfen

    • nuts
    • 2. Oktober 2009 um 13:52

    Schau mal in Post5.
    Dort ists richtig deklariert.

  • Nochmal WM_Command - Enter Taste beim Input-Control

    • nuts
    • 2. Oktober 2009 um 13:48

    Ja habs auch grad bemerkt.
    Endweder man ist auf dem Input oder auf dem Button.

    Also "irgendwie" die Entertaste abfangen und entsprechend auf den Fokus reagieren.

    Danke an alle Beteiligten.

    P.S. Welche Message das Inputcontrol empfangsbreit macht wäre trotzdem ganz interessant.

  • Nochmal WM_Command - Enter Taste beim Input-Control

    • nuts
    • 2. Oktober 2009 um 13:35
    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>

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

    Global $eventCount = 0
    $sHeader = "Input1|Input2|Input3"
    Global $hGui = GUICreate("", 400, 400, -1, -1)
    Global $hButton = GUICtrlCreateButton('Test', 10, 10, 100, 20)
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    Global $aInputWidth[$aHeader[0]] = [100, 100, 100] ; hier die Länge (in Pixel) der Inputfelder eintragen
    Global $xPos = 20
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], $xPos + 2, 200, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", $xPos, 220, $aInputWidth[$i - 1], 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    $xPos += $aInputWidth[$i - 1] + 5
    Next

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

    GUISetState(@SW_SHOW, $hGui)
    GUIRegisterMsg($WM_Command, "WM_COMMAND")

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus

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

    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $aNew[0]
    GUICtrlSetState($aNew[1], $GUI_FOCUS)
    #Region Schließen
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    Exit

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

    EndSwitch

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

    #EndRegion Schließen
    EndSwitch

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

    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hwndFrom, $iIDFrom, $iCode
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    If $iCode = 0 Then
    Send('{TAB}')
    If ControlGetFocus($hGui) = 'Edit3' Then Send('{TAB}')
    MsgBox(1, "", "Enter")
    Return 1
    EndIf
    ;~ Switch $iIDFrom
    ;~ case $anew[0]
    ;~ switch $iCode
    ;~ case 0
    ;~ GUICtrlSetState($aNew[1], $GUI_FOCUS)
    ;~ EndSwitch
    ;~ case $anew[1]
    ;~ switch $icode
    ;~ case 0
    ;~ GUICtrlSetState($aNew[2], $GUI_FOCUS)
    ;~ EndSwitch
    ;~ case $anew[2]
    ;~ switch $iCode
    ;~ case 0
    ;~ GUICtrlSetState($aNew[0], $GUI_FOCUS)
    ;~ EndSwitch

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

    ;~ EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]


    Hab mal eine msgbox eingefügt um das Problem damit zu verdeutlichen.

    Über den Fokus müsste sich aber wirklich was machen lassen.
    In WM_Command den Fokus bestimmten und in Abjängigkeit vom Fokus reagieren.

    Die zweite Möglichkeit: Man findet heraus was die Inputfelder für eine Nachricht erhalten nachdem etwas eingegeben wurde und schickt dieses Nachricht via GUICtrlSendMsg hinterher.
    Irgendwie krieg ichs aber nicht raus. :(

    edit \

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>

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

    Global $eventCount = 0
    $sHeader = "Input1|Input2|Input3"
    Global $hGui = GUICreate("", 400, 400, -1, -1)
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]]
    Global $haNew[$aHeader[0]]
    Global $aInputWidth[$aHeader[0]] = [100, 100, 100] ; hier die Länge (in Pixel) der Inputfelder eintragen
    Global $xPos = 20
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], $xPos + 2,200, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", $xPos, 220, $aInputWidth[$i - 1], 20,Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    $hanew[$i-1] = GUICtrlGetHandle($aNew[$i - 1])
    $xPos += $aInputWidth[$i - 1] + 5
    Next

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

    GUISetState(@SW_SHOW, $hGui)
    GUIRegisterMsg($WM_Command ,"WM_COMMAND")

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus

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

    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    case $anew[0]
    GUICtrlSetState($aNew[1], $GUI_FOCUS)
    #Region Schließen
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    exit

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

    EndSwitch

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

    #EndRegion Schließen
    EndSwitch

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

    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    ;ConsoleWrite($hWnd & @tab & $iMsg & @tab & $iwParam & @tab & $ilParam& @CRLF)
    Local $hwndFrom, $iIDFrom, $iCode, $fokus
    ;$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    $fokus = _WinAPI_GetFocus()
    Switch $fokus
    case $hanew[0]
    switch $iCode
    case 0
    ;GUICtrlRecvMsg($anew[1],$NM_KEYDOWN)
    GUICtrlSetState($aNew[1], $GUI_FOCUS)
    ;GUICtrlSendMsg($anew[1],$NM_KEYDOWN, -1,0)
    EndSwitch
    case $hanew[1]
    switch $icode
    case 0
    GUICtrlSetState($aNew[2], $GUI_FOCUS)
    EndSwitch
    case $hanew[2]
    switch $iCode
    case 0
    GUICtrlSetState($aNew[0], $GUI_FOCUS)
    EndSwitch

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

    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]


    Eine Möglichkeit über den Fokus.

  • 2000 ini einträge Prüfen

    • nuts
    • 2. Oktober 2009 um 13:06

    Alternativ das Ergebnis Array mit der maximalen Anzahl deklarieren und am Ende zurecht "Redimen".

  • Nochmal WM_Command - Enter Taste beim Input-Control

    • nuts
    • 2. Oktober 2009 um 13:02

    Ah das hätte ich dazuschreiben müssen, sorry.
    Hotkeyset, _Ispressed und $BS_DEFPUSHBUTTON kenne ich schon :)

    Bei $BS_DEFPUSHBUTTON gibt teilweise Problem, wenn ein anderer Button den Fokus hat.
    Schaus mir aber nochmal an, bei einer Erfassungsmaske kann man damit vielleicht leben.

  • 2000 ini einträge Prüfen

    • nuts
    • 2. Oktober 2009 um 12:43

    Klaro, mir ist nur nicht so klar was dir Probleme bereitet.
    Die Vorgehensweise oder die Umsetzung in Autoit?

    Ein Beispiel wie man eine Ini einliest, jeden Eintrag durchgeht, der Vergleich mit den ausgeschlossenen Usern?

    Man könnte auch sein Skript bis zum unklaren Vorgang posten. ;)

  • 2000 ini einträge Prüfen

    • nuts
    • 2. Oktober 2009 um 12:30

    Schon wieder ein Input <-> Output Problem :rolleyes:

    Die Sektion [ADMIN_MEMBER] in ein Array einlesen (Inireadsection).
    Das Array durcharbeiten (for ... next) und jeden Eintrag mit den ausgeschlossenen Usern vergleichen (if ... then ... else).

    Bist doch jetzt Profi :D

  • Nochmal WM_Command - Enter Taste beim Input-Control

    • nuts
    • 2. Oktober 2009 um 12:14

    Hey,

    folgendes Problem:
    Bei einer Erfassungsmaske (hauptsächlich für Zahlen) soll man immer mit der Enter-Taste (bzw. Num-Enter) zum nächsten Feld springen können.
    Das funktioniert auch grudnsätzlich:

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>

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

    Global $eventCount = 0
    $sHeader = "Input1|Input2|Input3"
    Global $hGui = GUICreate("", 400, 400, -1, -1)
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    Global $aInputWidth[$aHeader[0]] = [100, 100, 100] ; hier die Länge (in Pixel) der Inputfelder eintragen
    Global $xPos = 20
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], $xPos + 2,200, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", $xPos, 220, $aInputWidth[$i - 1], 20,Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    $xPos += $aInputWidth[$i - 1] + 5
    Next

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

    GUISetState(@SW_SHOW, $hGui)
    GUIRegisterMsg($WM_Command ,"WM_COMMAND")

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus

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

    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    case $anew[0]
    GUICtrlSetState($aNew[1], $GUI_FOCUS)
    #Region Schließen
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    exit

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

    EndSwitch

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

    #EndRegion Schließen
    EndSwitch

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

    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hwndFrom, $iIDFrom, $iCode
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $iIDFrom
    case $anew[0]
    switch $iCode
    case 0
    GUICtrlSetState($aNew[1], $GUI_FOCUS)
    EndSwitch
    case $anew[1]
    switch $icode
    case 0
    GUICtrlSetState($aNew[2], $GUI_FOCUS)
    EndSwitch
    case $anew[2]
    switch $iCode
    case 0
    GUICtrlSetState($aNew[0], $GUI_FOCUS)
    EndSwitch

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

    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]


    Allerdings gibt es in meinem Fall auch einige Felder, die nicht jedes mal befüllt/geändert werden müssen.
    WM_Command reagiert aber leider nur nachdem im Input etwas erfasst wurde :(
    Gibts einen Trick das zu umgehen?

    Gruß nuts

  • listview Item erstellen

    • nuts
    • 2. Oktober 2009 um 11:05

    Wie ojo schon gefragt hat: "Wo kommt dein $i her"? (Zeile 5)

    Den Index vom ausgewählten Item bekommst du über _GUICtrlListView_GetSelectedIndices

  • Treeview und Ini

    • nuts
    • 1. Oktober 2009 um 14:36

    Es geht doch um folgendes:

    Gegeben ist eine Datenmenge (.ini, .txt, sql Datenbank, Array -> erstmal egal).

    1. Datenmenge einlesen (in ein Array, Zeile für Zeile als Variable usw.)
    2. Datenmenge grafisch darstellen -> Überlegung: Welches Gui-Control eignet sich dafür?
    3. Datenmenge weiterverarbeiten -> Überlegung: Wie komme ich an die grafisch dargestellten Informationen?
    4. Die erhaltenen Informationen an die entsprechenden Funktionen übergeben, Rückgabewerte weiterverarbeiten usw.

    Danach kommt der Feinschliff, dabei kann man dann auch gut, gezielt helfen.

  • Starplayer v2 (MP3-Player)

    • nuts
    • 1. Oktober 2009 um 13:05

    Nun läufts :)
    Das Hinzufügen ist leider nichtmehr besonders schnell. :(
    Schuld ist wie erwähnt die _SoundLenght Funktion.

    edit \
    Hab hier was gefunden:

    Spoiler anzeigen
    [autoit]


    $file = FileOpenDialog("Please select file", "", "MP3 files (*.mp3)");
    if @error then Exit
    $aData = _GetMP3Info($file)
    if @error then Exit
    $aLabel = StringSplit("MPEG Version: |Layer: |Bitrate: |Frequency: |Channel Mode: |Have CRC: |Copyright: |Original: ", "|")
    Dim $out = ""
    for $i = 0 to UBound($aData)-1
    $out = $out & $aLabel[$i+1] & $aData[$i] & @CR
    next
    MsgBox (0, "MP3 Data", $out)

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

    ;===============================================================================
    ;
    ; Description: Retrieve MP3 basic information
    ; Parameter(s): File name
    ; Requirement(s): None
    ; Return Value(s): On Success - array with data:
    ; 0 - MPEG version
    ; 1 - Layer
    ; 2 - Bitrate
    ; 3 - Frequency
    ; 4 - Channel Mode
    ; 5 - CRC protected
    ; 6 - Copyrighted
    ; 7 - Original
    ; On Failure empty string and sets @ERROR:
    ; 1 - Info not found
    ; Author(s): YDY (Kot) <[email='mpc@nm.ru'][/email]>
    ; Version: 1.0.00
    ; Date: 22.08.2004
    ; Note(s): None
    ;
    ;===============================================================================

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

    Func _GetMP3Info($file)
    Local $frame = "", $data[8], $offset = 1, $isVBR = 0
    Local $aVersion = StringSplit("MPEG 2.5|Undefined|MPEG 2.5|MPEG 1", "|")
    Local $aLayer = StringSplit("Undefined|Layer III|Layer II|Layer I", "|")
    Local $sBitrate = ""
    Local $sFrequency = ""
    Local $aChanMode = StringSplit("Stereo|Joint stereo|Dual channel|Mono", "|")
    Local $aFlags = StringSplit("No|Yes", "|")

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

    If _FileReadAtOffsetHEX ($file, 1, 3) = "494433" Then; ID3v2 tag found
    $offset = BitShift(Dec(_FileReadAtOffsetHEX ($file, 7, 4)), 1); End of ID3v2 tag
    Endif

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

    For $ic = $offset to 2048 + $offset
    $marker = _FileReadAtOffsetHEX ($file, $ic, 2)
    $marker = StringLeft($marker, 3)
    If StringInStr("FFF,FFE", $marker) Then; Assume that is frame start
    $frame = _FileReadAtOffsetHEX ($file, $ic, 4)
    If _FileReadAtOffsetHEX ($file, $ic+36, 4) = "58696E67" Then $isVBR = 1; This is a right way?..
    Exitloop
    Endif
    Next

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

    If $frame = "" Then
    SetError(1); Frame not found (not mp3 data?)
    Return ("")
    Endif

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

    Local $head = _HexToBin($frame)
    Local $nVer = _GetRBits($head, 19, 2)
    Local $nLay = _GetRBits($head, 17, 2)

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

    Select
    Case $nVer = 3
    $sFrequency = "44100|48000|32000|Undefined"
    Case $nVer = 2
    $sFrequency = "22050|24000|16000|Undefined"
    Case $nVer = 0
    $sFrequency = "11025|12000|8000|Undefined"
    EndSelect
    Local $aFrequency = StringSplit($sFrequency, "|")

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

    If $isVBR Then
    $data[2] = "Variable"
    Else
    Select
    Case $nVer = 3 and $nLay = 3
    $sBitrate = "Free|32|64|96|128|160|192|224|256|288|320|352|384|416|448|Undefined"
    Case $nVer = 3 and $nLay = 2
    $sBitrate = "Free|32|48|56|64|80|96|112|128|160|192|224|256|320|384|Undefined"
    Case $nVer = 3 and $nLay = 1
    $sBitrate = "Free|32|40|48|56|64|80|96|112|128|160|192|224|256|320|Undefined"
    Case $nVer = 2 and $nLay = 3
    $sBitrate = "Free|32|48|56|64|80|96|112|128|144|160|176|192|224|256|Undefined"
    Case ($nVer = 2 and $nLay = 2) or ($nVer = 2 and $nLay = 1)
    $sBitrate = "Free|8|16|24|32|40|48|56|64|80|96|112|128|144|160|Undefined"
    EndSelect
    Local $aBitrate = StringSplit($sBitrate, "|")
    $data[2] = _GetData($aBitrate, _GetRBits($head, 12, 4))
    Endif

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

    $data[0] = _GetData($aVersion, $nVer)
    $data[1] = _GetData($aLayer, $nLay)
    $data[3] = _GetData($aFrequency, _GetRBits($head, 10, 2))
    $data[4] = _GetData($aChanMode, _GetRBits($head, 6, 2))
    $data[5] = _GetData($aFlags, not _GetRBits($head, 16, 1)); CRC
    $data[6] = _GetData($aFlags, _GetRBits($head, 3, 1)); Private
    $data[7] = _GetData($aFlags, _GetRBits($head, 2, 1)); Original
    Return($data)
    EndFunc

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

    Func _GetRBits($str, $pos, $size)
    Local $ic, $res = 0, $bStr = StringMid($str, 33 - $pos - $size, $size)
    For $ic = 0 to $size-1
    If StringMid($bStr, $size-$ic, 1) == "1" Then $res = $res + 2^$ic
    Next
    Return ($res)
    EndFunc

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

    Func _GetData(ByRef $array, $val)
    If $val > UBound($array)-1 Then Return("Undefined")
    Return ($array[$val+1])
    EndFunc

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

    Func _HexToBin($str)
    Local $res=""
    While StringLen($str) > 0
    $val = Dec(StringLeft($str, 1))
    $str = StringTrimLeft($str, 1)
    For $i = 3 to 0 Step -1
    $pw = 2^$i
    If $val - $pw < 0 Then
    $res = $res & "0"
    Else
    $res = $res & "1"
    $val = $val - $pw
    Endif
    Next
    Wend
    Return ($res)
    EndFunc

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

    Func _FileReadAtOffsetHEX ($file, $offset, $bytes)
    Local $tfile = FileOpen($file, 0)
    Local $tstr = ""
    FileRead($tfile, $offset-1)
    For $i = $offset To $offset + $bytes - 1
    $tstr = $tstr & Hex(Asc(FileRead($tfile, 1)), 2)
    Next
    FileClose($tfile)
    Return ($tstr)
    Endfunc

    [/autoit]


    Leider gibt es scheinbar auch viele .mp3's mit variabler Bitrate.
    Wäre mal interessant wie winamp das macht, allerdings dauert es dort ja auch etwas um mehrere Dateien hinzuzufügen.

  • GUI Progress

    • nuts
    • 1. Oktober 2009 um 12:16

    Naja das ist aber relativ unsinnig, schließlich können die Funktionen unterschiedlich lang dauern.

    Wie man Zeilen im Skript automatisch zählt weiss ich nicht, du kannst aber ja eine lokale Variable mit der Anzahl der Funktionen festlegen ($count = 5).
    Nach jeder Funktion veränderst du dann den Progress mit dem Kehrwert (1/5).

  • GUI Progress

    • nuts
    • 1. Oktober 2009 um 12:05

    Mal ehrlich - würdest du das verstehen? :D

    Also deine Funktion hat X Wiederholungen (for .. next?) und nach jeder Wiederholung soll der Progress verändert werden?

  • GUI Progress

    • nuts
    • 1. Oktober 2009 um 11:54

    Hab kein Wort verstanden. :(

  • Starplayer v2 (MP3-Player)

    • nuts
    • 1. Oktober 2009 um 10:15

    Also Winamp schaffts.
    Wird die Laufzeit überhaupt zwangsläufig mitgespeichert?
    Könnte man ja auch errechnen (Bitrate, Gesamtgröße).

  • Starplayer v2 (MP3-Player)

    • nuts
    • 1. Oktober 2009 um 09:24

    An gar keiner Stelle. :S

  • Starplayer v2 (MP3-Player)

    • nuts
    • 1. Oktober 2009 um 01:30

    Seltsam, bei mir wird gemeckert (ERROR: AdlibDisable(): undefined function.).
    Naja wie auch immer, liegt vielleicht an Scite? ?(

    @Arrayfehler:
    Tritt in der .exe und dem Skript auf (egal wie hinzugefügt).
    Zeile 524 ist der Übeltäter.


    Datei: mp3
    Bitrate: ka
    ID3Tags: wohl keine (bin nicht so der mp3 Profi)
    OS: WinXP

    -> kein Eintrag in Duration -> kein Text vom Subitem
    Stringsplit gibt dann trotzdem ein Array zurück und die Isarray -Abfrage verfehlt den Sinn.

    [autoit]


    $string = ""
    $astring = StringSplit($string, ":")
    If IsArray($astring) then
    MsgBox(1, "", "Array gefunden")
    else
    MsgBox(1, "", "Kein Array :(")
    endif

    [/autoit]

    Würde ich mal behaupten, zu so später Stunde.

  • Starplayer v2 (MP3-Player)

    • nuts
    • 1. Oktober 2009 um 00:54

    Hey,

    Leider kommt der übliche Arrayfehler sobald man eine Musikdatei hinzufügt.

    Außerdem sind beim Source Beta und Stable Funktionen gemischt?
    AdlibRegister, AdlibDisable usw.

    Das Design ist aber cool :D

  • WinRar ähnliches Programm in AutoIt erstellen.

    • nuts
    • 1. Oktober 2009 um 00:42
    Zitat von Oscar

    Also ehrlich gesagt, verstehe ich Dein Script nicht wirklich.


    Ähm ja.
    Ich dachte du versuchst eine Datei binär einzulesen, immer eine bestimmte Abfolge in dein Format wegzuspeichern und die Trennmarke in einem Header festzuhalten?

  • Plötzlich auftretender unerklärlicher Fehler... Hilfe!

    • nuts
    • 30. September 2009 um 20:45

    @error sollte/muss direkt unter die Funktion.

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™