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

  • 2D Array erstellen

    • Oscar
    • 14. Januar 2016 um 16:51

    Ich denke, dass er als Ergebnis ein 2D-Array haben möchte:

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    Opt("MustDeclareVars", 1)
    
    
    
    
    Global Const $CSVFILE = @ScriptDir & "\example.csv"
    Global Const $DELIM = ";"
    Global $i, $arrContent, $arrLine, $res = 0
    
    
    $res = _FileReadToArray($CSVFILE, $arrContent)
    If $res = 1 Then
    	Global $Array2D[UBound($arrContent) - 1][1]
    	For $i = 1 To UBound($arrContent) - 1
    		$arrLine = StringSplit($arrContent[$i], $DELIM)
    		If IsArray($arrLine) And $arrLine[0] <> 0 Then
    			If UBound($arrLine) > UBound($Array2D, 2) Then
    				ReDim $Array2D[UBound($arrContent) - 1][UBound($arrLine) - 1]
    			EndIf
    			For $j = 1 To UBound($arrLine) - 1
    				$Array2D[$i - 1][$j - 1] = $arrLine[$j]
    			Next
    		Else
    			MsgBox(48, "", "Error splitting line!")
    		EndIf
    	Next
    	_ArrayDisplay($Array2D)
    Else
    	MsgBox(48, "", "Error opening file!")
    EndIf
    Alles anzeigen
  • Eigenschaften von allen Buttons ändern

    • Oscar
    • 11. Januar 2016 um 17:27

    Array benutzen!
    Alle IDs im Array speichern und dann mit einer Schleife den Status entsprechend setzen.

  • Action bei Zeit

    • Oscar
    • 7. Januar 2016 um 17:43

    Das doppelte Gleichzeichen ist auch ein Stringvergleich, wie man im übrigen der Hilfe entnehmen kann:

    Zitat

    Tests if two strings are equal. Case sensitive.

  • Bewegungsmelder

    • Oscar
    • 31. Dezember 2015 um 15:54

    Die "normalen" Bewegungsmelder detektieren Infrarotstrahlung und da stellt eine gewöhnliche (unbeschichtete) Glasscheibe kein Hindernis dar.
    Es gibt aber auch Bewegungsmelder, die mit Mikrowellen arbeiten und somit sogar durch Wände hindurch Bewegungen erfassen können.

  • GDI+ Simple Firework mit Sound Effekten

    • Oscar
    • 30. Dezember 2015 um 19:09

    Wenn Du vor dem Aufruf der GUI noch eine GUI (ganz schwarz) in den Hintergrund setzt, dann sieht das noch besser aus, weil man nicht irgendeinen Desktopkram halbtransparent sieht.
    Also so:

    AutoIt
    Func GDIPlus_SimpleFirework()
    	$bExit = False
    	$hMainGUI = GUICreate('', $iW, $iH, 0, 0, $WS_POPUP)
    	GUISetState(@SW_SHOW, $hMainGUI)
    	$hGUI = GUICreate($sTitle & 0, $iW, $iH, 0, 0, $WS_POPUP, Default, $hMainGUI)
    	GUISetState(@SW_SHOW, $hGUI)
    	WinSetTrans($hGUI, "", 0xED)
    	GUISetCursor(16, 1)
    [...]
  • GDI+ Simple Firework mit Sound Effekten

    • Oscar
    • 30. Dezember 2015 um 15:25

    Mit Sleep(0) sind es:
    1920 x 1200 = 36 FPS
    1024 x 768 = 50 FPS

  • GDI+ Simple Firework mit Sound Effekten

    • Oscar
    • 30. Dezember 2015 um 14:47

    Ich musste gerade feststellen, dass die Framerate ja auch auflösungsabhängig ist.
    Also mein Wert (27 FPS) bezieht sich auf eine Desktop-Auflösung von 1920 x 1200 Pixel.
    Bei z.B. 1024 x 768 Pixel schafft mein Rechner 34 FPS.

  • GDI+ Simple Firework mit Sound Effekten

    • Oscar
    • 30. Dezember 2015 um 05:23

    Der Durchschnitt liegt bei mir jetzt bei 27 FPS (mehrere Minuten laufen lassen).
    Das ist jetzt auch noch schöner geworden (langsames ausblenden). Gut gemacht! :klatschen:

  • GDI+ Simple Firework mit Sound Effekten

    • Oscar
    • 29. Dezember 2015 um 18:37

    Ja, läuft flüssig und ruckelfrei.
    Schönes Feuerwerk! Zumindest für einen Monitor. Freitag dann in Natura. :sil1:

  • GDI+ Simple Firework mit Sound Effekten

    • Oscar
    • 29. Dezember 2015 um 18:18

    Sieht gut aus! :klatschen:

    Bei mir läuft es mit 25 - 33 FPS (Intel Core i5-4690 @ 3.50 GHz).

  • Assembler

    • Oscar
    • 29. Dezember 2015 um 17:56

    Die Funktion "int2bin" in "asmdbg64_neu.au3" kann man noch etwas optimieren (ternärer Operator):

    AutoIt
    Func int2bin($int)
    	Local $bin = '', $aByte
    	For $i = 31 To 0 Step -1
    		$bin &= BitAND($int, 2 ^ $i) ? '1' : '0'
    	Next
    	$aByte = StringRegExp($bin, '(\d{8})', 3)
    	$bin = ''
    	For $Byte In $aByte
    		$bin &= $Byte & ' '
    	Next
    	Return $bin
    EndFunc   ;==>int2bin
    Alles anzeigen
  • Alinas_SQLite_BuchVw

    • Oscar
    • 25. Dezember 2015 um 15:40

    Wenn ihr Fremd-UDFs verwendet, dann solltet ihr diese auch zum Download anbieten.
    Ohne die "sqlite392_dll.au3" funktioniert das Script nicht.

  • X-Mas

    • Oscar
    • 25. Dezember 2015 um 08:17

    Ich wünsche euch allen auch ein frohes Weihnachtsfest!

    Bei uns gibt's keine "weiße Weihnacht", aber was soll's?! :)

  • Strg+C - Erst beliebigen Text kopieren, dann funktion ?

    • Oscar
    • 23. Dezember 2015 um 20:03

    Also hier jetzt die Minimalversion:

    AutoIt
    #include <Clipboard.au3>
    #include <SendMessage.au3>
    #include <WindowsConstants.au3>
    
    
    $hGui = GUICreate('ClipboardViewer')
    $hNext = _ClipBoard_SetViewer($hGui)
    GUIRegisterMsg($WM_CHANGECBCHAIN, 'WM_CHANGECBCHAIN')
    GUIRegisterMsg($WM_DRAWCLIPBOARD, 'WM_DRAWCLIPBOARD')
    HotKeySet('{ESC}', '_End')
    
    
    While Sleep(1000)
    WEnd
    
    
    Func _End()
    	_ClipBoard_ChangeChain($hGui, $hNext)
    	Exit
    EndFunc
    
    
    Func WM_CHANGECBCHAIN($hWnd, $iMsg, $iwParam, $ilParam)
    	If $iwParam = $hNext Then
    		$hNext = $ilParam
    	ElseIf $hNext <> 0 Then
    		_SendMessage($hNext, $WM_CHANGECBCHAIN, $iwParam, $ilParam, 0, 'hwnd', 'hwnd')
    	EndIf
    EndFunc   ;==>WM_CHANGECBCHAIN
    
    
    Func WM_DRAWCLIPBOARD($hWnd, $iMsg, $iwParam, $ilParam)
    	Local $sClipBoard = _ClipBoard_GetData()
    	_Copy()
    	If $hNext <> 0 Then _SendMessage($hNext, $WM_DRAWCLIPBOARD, $iwParam, $ilParam)
    EndFunc   ;==>WM_DRAWCLIPBOARD
    
    
    Func _Copy()
        Sleep(500)
        Send("!{tab}")
        Sleep(500)
        Send("^v")
        Sleep(500)
        Send("{tab}")
        Sleep(500)
        Send("!{tab}")
    EndFunc
    Alles anzeigen
  • Strg+C - Erst beliebigen Text kopieren, dann funktion ?

    • Oscar
    • 23. Dezember 2015 um 19:50

    Das kann ich nicht nachvollziehen!
    Ersetze den GUICtrlSetData-Befehl durch den Aufruf Deiner Funktion "_Copy" (und kopiere die Funktion in das Script ;) ), dann hast Du genau das, was Du willst.

  • Strg+C - Erst beliebigen Text kopieren, dann funktion ?

    • Oscar
    • 23. Dezember 2015 um 19:37

    Du musst doch einfach nur in Zeile 33 statt dem GUICtrlSetData Deine Befehle ausführen. Die Variable $sClipboard enthält die Zwischenablage.
    Wenn Du die GUI nicht benötigst, musst Du sie ja nicht anzeigen lassen.

  • Strg+C - Erst beliebigen Text kopieren, dann funktion ?

    • Oscar
    • 23. Dezember 2015 um 19:27

    Ich würde ganz anders vorgehen.
    Du brauchst den Hotkey überhaupt nicht. Du packst Dein Script einfach in die "Zwischenablage-Kette".
    Damit bekommst Du automatisch den Inhalt der Zwischenablage. AutoIt bringt auch schon eine entsprechende UDF ("Clipboard.au3") mit.
    Hier mal ein Beispiel-Script:

    AutoIt
    #include <GuiConstantsEx.au3>
    #include <ClipBoard.au3>
    #include <WindowsConstants.au3>
    #include <SendMessage.au3>
    
    
    $hGui = GUICreate('ClipboardViewer', 300, 400, @DesktopWidth - 316, 40, BitOR($WS_CAPTION, $WS_POPUPWINDOW, $WS_SIZEBOX))
    $idClipMemo = GUICtrlCreateEdit('', 0, 0, 300, 400, $WS_VSCROLL)
    GUICtrlSetFont(-1, 10, 400, 0, 'Courier New')
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    GUISetState()
    WinSetOnTop($hGui, '', 1)
    $hNext = _ClipBoard_SetViewer($hGui)
    GUIRegisterMsg($WM_CHANGECBCHAIN, 'WM_CHANGECBCHAIN')
    GUIRegisterMsg($WM_DRAWCLIPBOARD, 'WM_DRAWCLIPBOARD')
    While True
    	Switch GUIGetMsg()
    		Case $GUI_EVENT_CLOSE
    			_ClipBoard_ChangeChain($hGui, $hNext)
    			Exit
    	EndSwitch
    WEnd
    
    
    Func WM_CHANGECBCHAIN($hWnd, $iMsg, $iwParam, $ilParam)
    	If $iwParam = $hNext Then
    		$hNext = $ilParam
    	ElseIf $hNext <> 0 Then
    		_SendMessage($hNext, $WM_CHANGECBCHAIN, $iwParam, $ilParam, 0, 'hwnd', 'hwnd')
    	EndIf
    EndFunc   ;==>WM_CHANGECBCHAIN
    
    
    Func WM_DRAWCLIPBOARD($hWnd, $iMsg, $iwParam, $ilParam)
    	Local $sClipBoard = _ClipBoard_GetData()
    	GUICtrlSetData($idClipMemo, $sClipBoard & @CRLF, 1)
    	If $hNext <> 0 Then _SendMessage($hNext, $WM_DRAWCLIPBOARD, $iwParam, $ilParam)
    EndFunc   ;==>WM_DRAWCLIPBOARD
    Alles anzeigen
  • .txt Tabelle(?) - StringRegExp?

    • Oscar
    • 22. Dezember 2015 um 18:42

    Statt eines Screenshots solltest Du lieber eine Beispieldatei posten.
    Problematisch wird aber das trennen der einzelnen Blöcke/Nummern, weil im Block 2 auch Leerzeichen vorkommen.
    Du musst also herausfinden, wie Du Block 2 und Block 3 eindeutig identifizieren kannst.
    Gibt es in Block 3 ebenfalls Leerzeichen? Ist im Block 3 immer ein Slash vorhanden? Irdendetwas eindeutiges halt.

  • Progressbar beim kopieren einer großen Datei

    • Oscar
    • 20. Dezember 2015 um 18:49

    Freut mich, dass Dir meine Funktion gefällt und Du sie einsetzt!
    Wenn Du beim kopieren der Dateien mehr Geschwindigkeit willst, dann kannst Du die Werte in Zeile 206 und in Zeile 212 erhöhen.
    Die Anzeige des Fortschrittsbalken und die Label werden dann nicht so oft aktualisiert.

  • Assembler

    • Oscar
    • 19. Dezember 2015 um 17:09

    Ah, so funktioniert es einwandfrei! :klatschen:

    Bei mir läuft das Script mit diesen Werten:

    _AssembleIt2() Anzahl Pixel = 13861 Zeit [ms] = 2.507
    DllCallAddress() Anzahl Pixel = 13861 Zeit [ms] = 1.283

    und das bei einer Auflösung von 1920 x 1200.
    Die Werte sind doch recht beeindruckend. Ich werde mich wohl doch mal (wieder, zuletzt auf dem C64) mit Assembler beschäftigen müssen. :)

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™