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

Beiträge von Oscar

  • problem

    • Oscar
    • 3. Oktober 2009 um 11:55

    Ja genau, die MsgBox war hier nur als Beispiel.

  • _Pack_String() & _DePackString()

    • Oscar
    • 3. Oktober 2009 um 09:10

    Für das erstellen eines Wörterbuchs mit Häufigkeit der Wörter ist das Scripting.Dictionary-Objekt ideal:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Inet.au3>

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

    $sText = _INetGetSource("http://www.autoit.de/index.php?page=Thread&threadID=14844")
    MsgBox(0,"Start","Jetzt geht's los!")
    $tDiff = TimerInit()
    $aText = _CreateWordDictionary($sText)
    ConsoleWrite("Dauer: " & TimerDiff($tDiff) & @CR)
    _ArraySort($aText, 1, 0, 0, 1)
    _ArrayDisplay($aText)

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

    Func _CreateWordDictionary($sText)
    Local $oDictionary, $aWords, $iCount
    If $sText = '' Then Return SetError(1, 0, 0)
    $sText = StringRegExpReplace($sText, '[\v\t]', '') ; alle vertikalen Whitespaces sowie alle TABs entfernen
    $oDictionary = ObjCreate('Scripting.Dictionary') ; Scripting.Dictionary-Objekt erstellen
    If Not IsObj($oDictionary) Then Return SetError(2, 0, 0)
    $aWords = StringSplit($sText, ' ', 2) ; Text an Leerzeichen splitten
    For $i = 0 To UBound($aWords) - 1 ; alle Wörter durchgehen
    If $aWords[$i] <> '' Then
    If Not $oDictionary.Exists($aWords[$i]) Then ; wenn das Wort noch nicht im Dictionary vorhanden, dann...
    $oDictionary.Add($aWords[$i], 1) ; das Wort hinzufügen und den Wert der Häufigkeit auf 1 setzen
    Else
    $oDictionary.Item($aWords[$i]) = $oDictionary.Item($aWords[$i]) + 1 ; das Wort war vorhanden, also den Zähler erhöhen
    EndIf
    EndIf
    Next
    $iCount = $oDictionary.Count ; Anzahl der Wörter im Wörterbuch holen
    Local $aOut[$iCount][2] ; 2D Array erstellen
    $x = 0
    For $strKey in $oDictionary.Keys ; Schleife für die Wörter (Key)
    $aOut[$x][0] = $strKey ; die Wörter dem Array zuweisen
    $x += 1
    Next
    $x = 0
    For $strItem in $oDictionary.Items ; Schleife für die Häufigkeit (Item)
    $aOut[$x][1] = $strItem ; die Häufigkeit dem Array zuweisen
    $x += 1
    Next
    Return $aOut ; das Array zurückgeben
    EndFunc

    [/autoit]
  • Starplayer v2 (MP3-Player)

    • Oscar
    • 3. Oktober 2009 um 01:22

    So, das mit der Laufzeit ist jetzt (hoffentlich) behoben.
    Außerdem gibt es jetzt die Möglichkeit den Starplayer als Standard-MP3-Player registrieren zu lassen.

    Neue Version in Post #1.

    Jetzt bin ich mit meinem Player eigentlich zufrieden. Es sei denn, euch fällt noch was ein... ;)

  • txt daten auslesen

    • Oscar
    • 2. Oktober 2009 um 20:20

    Hmmm...eine Textdatei hat Spalten? ;)

    Poste doch mal eine Beispieldatei, dann kann man Dir leichter helfen.

  • problem

    • Oscar
    • 2. Oktober 2009 um 20:18

    Ok, hier die kommentierte Version:

    [autoit]


    #include <Date.au3>
    $start = _DateAdd('h', 2, _NowCalc()) ; zwei Stunden zum jetzigen Datum/Uhrzeit addieren
    Do
    Sleep(500) ; dieser Sleep ist nur dazu da, um den Prozessor zu entlasten
    Until $start = _NowCalc() ; die Schleife wird verlassen, wenn das aktuelle Datum/Uhrzeit mit dem Startwert übereinstimmt
    MsgBox(0,'', 'Start') ; hier kannst Du die Befehle einfügen, die nach 2 Stunden ausgeführt werden sollen

    [/autoit]
  • problem

    • Oscar
    • 2. Oktober 2009 um 19:55

    Doch das geht:

    [autoit]


    #include <Date.au3>
    $start = _DateAdd('h', 2, _NowCalc())
    Do
    Sleep(500)
    Until $start = _NowCalc()
    MsgBox(0,'', 'Start')

    [/autoit]
  • .au3 to .exe script

    • Oscar
    • 2. Oktober 2009 um 19:46

    Benutze dafür "AutoIt3Wrapper_Gui.exe". Dort kannst Du noch viel mehr einstellen.
    Das Programm findest Du im Verzeichnis: "AutoIt3\SciTE\AutoIt3Wrapper\".

  • Animierter Kreis bei Mausklick

    • Oscar
    • 2. Oktober 2009 um 19:43

    Hast Du die aktuelle (3.3.0.0) AutoIt-Version?

  • Starplayer v2 (MP3-Player)

    • Oscar
    • 2. Oktober 2009 um 19:14

    Die von Dir gefundene Funktion gibt aber nicht die Laufzeit zurück. ;)

    Aber da gibt es eine "neuere" (30.12.2004) Version von mit der Laufzeit. Das muss ich mal testen...

  • Mehr infos zu Fileinstall

    • Oscar
    • 2. Oktober 2009 um 18:36

    Wenn Du an Deiner Behauptung festhälst, dann wollen wir Beweise sehen. ^^

  • ZAX UnPacker

    • Oscar
    • 2. Oktober 2009 um 17:57

    Da hat keiner was gegen. Dafür veröffentlichen wir sie doch hier.
    Wir haben auch so gelernt, indem wir uns die Scripte von anderen angesehen und dann damit rumexperimentiert haben.

    Es kann aber auch nicht schaden, wenn Du Dein eigenes Programm fertig machst. Man lernt sehr viel dabei. Auch wenn es bereits andere Programme in der Art gibt.
    Das habe ich auch schon oft gemacht. Manchmal war das Ergebnis dann sogar besser (IMHO). :)

  • ZAX UnPacker

    • Oscar
    • 2. Oktober 2009 um 17:47

    Jo, das ist das coolere Programm. Jetzt sogar mit Komprimierung. :thumbup:
    Hast Du gut gemacht, aber das mit den relativen Pfaden ist noch fehlerhaft, weil, wenn ich einen ganzen Ordner komprimiere dann will ich beim Wiederherstellen auch den Ordner wiederhaben, nicht nur die Dateien.
    Oder das muss auswählbar sein. :whistling:

  • ZAP UnPacker

    • Oscar
    • 2. Oktober 2009 um 16:34
    Zitat von GE IXI TIM

    und mit meinen neuen Funktionen kann ich sie auch noch komprimieren :thumbup: ^^


    Aber keine Binärdaten. :rolleyes:

    Mit dem "cooler" wollte ich auch auf etwas anderes anspielen, aber mehr verrate ich noch nicht. :P

  • _Pack_String() & _DePackString()

    • Oscar
    • 2. Oktober 2009 um 16:32

    Für Textdateien, ok, aber bei Binärdaten wird das nicht funktionieren.
    Dort gibt es keine "Leerzeichen" und "Wörter".

  • ZAP UnPacker

    • Oscar
    • 2. Oktober 2009 um 16:19

    Ja, Dein Thread hat mich auf die Idee gebracht. Es hat mich halt interessiert, wie man das umsetzen kann.
    Aber ich weiß etwas, was noch viel cooler ist... 8)

  • 2000 ini einträge Prüfen

    • Oscar
    • 2. Oktober 2009 um 13:48

    Das Array $ergebnis wird nirgends deklariert.

  • letzte zeile einer txt-datei auslesen

    • Oscar
    • 2. Oktober 2009 um 13:31

    FileReadLine ist Dein Freund.
    Zitat aus der Hilfe:

    Zitat

    The line number to read. The first line of a text file is line 1 (not zero), last line is -1.

    Edit: Achso, benutzt Du ja schon. Wo ist dann das Problem?

    Edit2: Ach, gesehen...zum lesen musst Du die Datei mit dem Parameter "0" öffnen, nicht mit "2", die ist zum schreiben. Oder Du musst die neue Beta-Version benutzen. :)

  • Nochmal WM_Command - Enter Taste beim Input-Control

    • Oscar
    • 2. Oktober 2009 um 13:25

    Hmm...vielleicht so:

    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}')
    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 jetzt noch einen Button hinzugefügt, um Dir zu zeigen, wie man den Focus auch dann noch wieder auf das erste Input bekommt.

  • Array Bereich

    • Oscar
    • 2. Oktober 2009 um 10:57

    Meinst Du so:

    [autoit]


    #include <Array.au3>
    $ip1 = "192.168.1."
    $ip2 = "192.169.1."

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

    Global $aPC1[6], $aPC2[6]
    For $i = 10 To 15
    $aPC1[$i-10] = $ip1 & $i
    $aPC2[$i-10] = $ip2 & $i
    Next
    _ArrayDisplay($aPC1)
    _ArrayDisplay($aPC2)

    [/autoit]
  • ZAP UnPacker

    • Oscar
    • 1. Oktober 2009 um 23:18

    Hier kommt das ultimative Packprogramm. ;)
    Es spart so gut wie nix ein. Ok, wenn viele kleine Dateien gepackt werden, dann spart es ein paar Bytes ein, weil es dann u.U. weniger Cluster auf der Festplatte belegt.
    Erstellt werden ZAP-Archive. Als Dateiendung habe ich mir ".zap" ausgedacht (naheliegend, oder? :) ). Das Programm erkennt ein solches Archiv aber auch, wenn es eine andere Dateiendung besitzt.

    Eigentlich wollte ich nur mal testen, wie man sowas umsetzen kann. :)

    Hier die Features:
    - Dateien und Verzeichnisse (werden rekursiv hinzugefügt) können per Drag and Drop auf eines der Listviews gezogen werden.
    - Wenn man ein ZAP-Archiv auf das Listview zieht, wird das automatisch erkannt und dem richtigen Listview zugeordnet.
    - Die Dateien können aus dem Archiv wiederhergestellt werden (frisch wie das Original). (Ach!) :D

    Die Pack- und Entpackfunktion habe ich mal kommentiert. Vielleicht kann das ja jemand gebrauchen.

    Wenn ihr das Programm mit Komprimierungsfunktion haben wollt: ZAX UnPacker :thumbup:

    Dateien

    ZAP-UnPacker.au3 12,32 kB – 486 Downloads

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™