Sollte doch funktionieren, wenn du $i einfach auf den gewünschten Wert setzt?
Beiträge von PainTain
-
-
-
-
Man könnte aber auch einfach das hier machen:
[autoit]#include <Date.au3>
[/autoit][autoit][/autoit][autoit]MsgBox(0, "", _DateDayOfWeek(_DateToDayOfWeek(@YEAR, @MON, @MDAY)))
[/autoit]
(Hab schon lange nichtmehr etwas in AutoIt geschrieben, sollte aber funktionieren. ) -
Welche AutoIt-Version verwendest du?
Die aktuelle Version 3.3.10.2 hat bei FileReadToArray einen dritten Parameter welcher die Rückgabe der Anzahl der Zeilen am Index 0 unterdrückt (wird mit der nächsten AutoIt-Version aber schon wieder geändert).Also eigentlich ist die aktuelle Version die 3.3.12.0
-
Du kannst mit FileGetAttrib überprüfen, ob es ein Ordner ist.
Abgesehen davon, poste doch mal diese Funktion, dann kann man dir sicher besser helfen... -
Mal ein wenig OT, aber es heisst doch(Text to) Speech, oder?
-
Zu welcher Seite gehört die API überhaupt?
Oft gibt es dazu eine Dokumentation, wie genau man die nun ansteuert. -
Nettes Spiel
Easter-Egg hab ich ja bereits gefunden, wie du weißt
-
Hilfe lesen waers halt ...
Das zu sortierende Array wird per ByRef uebergeben. Die Funktion selbst gibt 0 oder 1 zurück.
[autoit]
Es muesste also heissen:_ArrayDisplay($aUniqXFDLUser, "Sortiert")
[/autoit] -
Nun sind es nur noch wenige Stunden bis zum Start. Rührt nochmal ordentlich die Werbetrommel in eurem Bekannten und Freundeskreis. Wir sind auf reddit, pouet, minxtech und auf diversen Uni-Facebookseiten vertreten. Damit auch Preise zustande kommen brauchen wir noch Teilnehmer. Auch wenn es nur eine 30 Sekunden Demo ist, oder gar etwas interaktives, alles ist erlaubt!
Wie gesagt, ich werde (hoffentlich) mitmachen, eine Idee für eine Demo hab ich bereits. Muss sie nurnoch umsetzen. -
Nachdem ich so ein Tool für eines meiner Projekte brauche, und ich in AutoIt lange nichts mehr geschrieben habe, dachte ich mir, ich staub mal SciTE ab
Das Ganze ist auf die ersten 128 ASCII-Zeichen beschränkt, auf Wunsch kann ich es ja noch erweitern. Die Sonderzeichen (Die ersten 32 Zeichen + DEL können nicht bearbeitet werden und werden als Punkt-Zeichen abgespeichert.)
Das Tool exportiert die Zeichen in C-Header-File, in ein 2-dimensionales Array (128 Zeichen zu je 8 Values). Jede der 8 Zeilen wird als einzelne hexadezimale Zahl (unsigned char, 8 Bit) abgespeichert, die einzelnen Bits repräsentieren eben dann das Zeichen.Code
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <Array.au3>
#include <String.au3>OnAutoItExitRegister('_DoDishes')
[/autoit] [autoit][/autoit] [autoit]Global $hGUI, $idMenu, $idMenu_ExportC
[/autoit] [autoit][/autoit] [autoit]
Global $hGraphics, $hBrush
Global $aFields[95][64]
Global $aidLabels_Values[8]$hGUI = GUICreate('8x8 ROM-Pixel-Font Generator', 300, 320, Default, Default, BitOR($GUI_SS_DEFAULT_GUI, $WS_VISIBLE))
[/autoit] [autoit][/autoit] [autoit]
$idMenu = GUICtrlCreateMenu('File')
$idMenu_ExportC = GUICtrlCreateMenuItem('Export To C-Header', $idMenu)
$idMenu_Close = GUICtrlCreateMenuItem('Close', $idMenu)
$idCombo_Characters = GUICtrlCreateCombo('Space', 20, 20, 260)
GUICtrlSetData($idCombo_Characters, _GenCharList())
$idDummyLabel = GUICtrlCreateLabel('', 20, 75, 200, 200)_StartGDI()
[/autoit] [autoit][/autoit] [autoit]
_DrawCharField()
For $i = 0 To 7
$aidLabels_Values[$i] = GUICtrlCreateLabel('0x00', 250, 82+($i*25))
Next
_InitFields()
_UpdateLabels()Global $aAccelKeys[2][2] = [['^s', $idMenu_ExportC], ['{ESC}', $idMenu_Close]]
[/autoit] [autoit][/autoit] [autoit]
GUISetAccelerators($aAccelKeys)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $idMenu_ExportC
_Export_To_C_Header()
Case $idDummyLabel
_FieldClickHandler()
Case $idCombo_Characters
_RedrawField()
Case $idMenu_Close
Exit
EndSwitch
WEndFunc _Export_To_C_Header()
[/autoit] [autoit][/autoit] [autoit]
Local $p = '{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00 },', $r
Local $t[33] = ['NUL', 'SOH', 'STX', 'ETX', 'EOT', 'ENQ', 'ACK', 'BEL', 'BS ', 'TAB', 'LF ', 'VT ', _
'FF ', 'CR ', 'SO ', 'SI ', 'DLE', 'DC1', 'DC2', 'DC3', 'DC4', 'NAK', 'SYN', 'ETB', _
'CAN', 'EM ', 'SUB', 'ESC', 'FS ', 'GS ', 'RS ', 'US ', 'DEL']
Local $s = '/* Exported from 8x8 ROM-Pixel-Font Generator */' & @CRLF & @CRLF
$s &= 'const unsigned char ROM_PixelFont[128][8] = {' & @CRLFFor $i = 0 To 31
[/autoit] [autoit][/autoit] [autoit]
$s &= StringFormat(' %s /* %s */%s', $p, $t[$i], @CRLF)
NextFor $i = 32 To 126
[/autoit] [autoit][/autoit] [autoit]
$r = '{ '
For $j = 1 To 7
$r &= _ToHex(_GetRow(Chr($i), $j)) & ', '
Next
$r &= _ToHex(_GetRow(Chr($i), 8)) & ' },'
$s &= StringFormat(' %s /* %s */%s', $r, Chr($i), @CRLF)
Next
$s &= StringFormat(' %s /* %s */%s};%s', $p, $t[32], @CRLF, @CRLF)FileWrite("exported.h", $s)
[/autoit] [autoit][/autoit] [autoit]
EndFuncFunc _FieldClickHandler()
[/autoit] [autoit][/autoit] [autoit]
Local $pos = _GetClientMousePos(), $lin, $index = _GetCurrentField()
$pos[0] -= 20
$pos[1] -= 75$lin = _GetLinearField($pos)
[/autoit] [autoit][/autoit] [autoit]If ($aFields[$index][$lin[2]]) Then
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillRect($hGraphics, $lin[0]*25+21, $lin[1]*25+76, 24, 24, $hBrush)
$aFields[$index][$lin[2]] = 0
Else
_GDIPlus_GraphicsFillRect($hGraphics, $lin[0]*25+20, $lin[1]*25+75, 25, 25, 0)
$aFields[$index][$lin[2]] = 1
EndIf
_UpdateLabels()
EndFuncFunc _RedrawField()
[/autoit] [autoit][/autoit] [autoit]
_DrawCharField()
_UpdateLabels()
Local $i = _GetCurrentField(), $x = 21, $y = 76, $tmp[8]For $k = 0 To 63 Step 8
[/autoit] [autoit][/autoit] [autoit]
For $j = 0 To 7
If ($aFields[$i][$k+$j]) Then _GDIPlus_GraphicsFillRect($hGraphics, $x, $y, 24, 24, 0)
$x += 25
Next
$x = 21
$y += 25
Next
EndFuncFunc _UpdateLabels()
[/autoit] [autoit][/autoit] [autoit]
Local $i = _GetCurrentField(), $a[8]
For $j = 0 To 63 Step 8
For $k = 0 To 7
$a[$k] = $aFields[$i][$j+$k]
Next
GUICtrlSetData($aidLabels_Values[$j/8], _ToHex($a))
Next
EndFuncFunc _GetRow($c, $n)
[/autoit] [autoit][/autoit] [autoit]
Local $ret[8], $i = 0
$n = ($n-1) * 8
$c = Asc($c)-32
For $j = $n To $n+7
$ret[$i] = $aFields[$c][$j]
$i += 1
Next
_ArrayReverse($ret)
Return $ret
EndFuncFunc _GetLinearField($pos)
[/autoit] [autoit][/autoit] [autoit]
Local $ret = [-1, -1, 0]
If (($pos[0] > 25) Or ($pos[1] > 25)) Then
While ($pos[0] > 0)
$pos[0] -= 25
$ret[0] += 1
WEnd
While ($pos[1] > 0)
$pos[1] -= 25
$ret[1] += 1
WEnd
$ret[2] = ($ret[0] + ($ret[1] * 8))
Else
$ret[0] = 0
$ret[1] = 0
$ret[2] = 0
EndIfReturn $ret
[/autoit] [autoit][/autoit] [autoit]
EndFuncFunc _InitFields()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To 94
For $j = 0 To 63
$aFields[$i][$j] = 0
Next
Next
EndFuncFunc _DrawCharField()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillRect($hGraphics, 20, 75, 200, 200, $hBrush)
_GDIPlus_GraphicsDrawRect($hGraphics, 20, 75, 200, 200, 0)For $i = 45 To 220 Step 25
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawLine($hGraphics, $i, 75, $i, 275, 0)
_GDIPlus_GraphicsDrawLine($hGraphics, 20, $i+30, 220, $i+30, 0)
Next
EndFuncFunc _StartGDI()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup()$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit] [autoit][/autoit] [autoit]
$hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
EndFuncFunc _DoDishes()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphics)_GDIPlus_Shutdown()
[/autoit] [autoit][/autoit] [autoit]
EndFuncFunc _GetCurrentField()
[/autoit] [autoit][/autoit] [autoit]
If (GUICtrlRead($idCombo_Characters) = 'Space') Then
Return 0
Else
Return (Asc(GUICtrlRead($idCombo_Characters)) - 32)
EndIf
EndFuncFunc _GenCharList()
[/autoit] [autoit][/autoit] [autoit]
Local $s = ''
For $i = 33 To 126
$s &= Chr($i) & '|'
Next
Return $s
EndFuncFunc _GetClientMousePos()
[/autoit] [autoit][/autoit] [autoit]
Local $pos = MouseGetPos()
Local $point = DllStructCreate('int X;int Y')
DllStructSetData($point, 'X', $pos[0])
DllStructSetData($point, 'Y', $pos[1])
_WinAPI_ScreenToClient($hGUI, $point)
$pos[0] = DllStructGetData($point, 'X')
$pos[1] = DllStructGetData($point, 'Y')
Return $pos
EndFuncFunc _ToHex($a)
[/autoit]
Local $ret = 0
_ArrayReverse($a)
For $i = 0 To 7
$ret = BitOR($ret, BitShift($a[$i], -$i))
Next
$ret = StringFormat('0x%x', $ret)
If (StringLen($ret) < 4) Then
$ret = _StringInsert($ret, '0', 2)
EndIf
Return $ret
EndFunc
Ist kein Meisterwerk, da ich es heute Nachmittag nur mal schnell geschrieben habe.
Vielleicht kann es wer brauchen, vielleicht auch nicht.(Das ganze hab ich mit 3.3.10.1 getestet, hatte die Version grade installiert.)
Auf Wunsch kann ich auch noch ein paar andere Sachen einbauen, wie z.B. Laden von C-Header-Files. (Derzeit gibt es ja keinen vordefinierten Zeichensatz.)
-
Soll ich in Zukunt immer Switch anstatt Select verwenden. Oder wo genau liegt der Unterschied ??
Kommt draufan. In den meisten Fällen ist Switch von Vorteil.Der Unterschied ist der, bei Select musst du immer den kompletten Ausdruck schreiben, z.B. Case $msg = -3. Bei Switch musst du dann nur Case -3 schreiben. Switch vergleicht immer mit der Value die bei Case steht, Select wertet den Ausdruck bei Case aus.
[autoit]
Hier noch ein kurzes Beispiel zum besseren Verständis:$i = 42
[/autoit][autoit][/autoit][autoit]
; $i = 12Switch $i
[/autoit][autoit][/autoit][autoit]
Case 42
MsgBox(0, '', '$i = 42')
Case 12
MsgBox(0, '', '$i = 12')
EndSwitchSelect
[/autoit]
Case $i = 42
MsgBox(0, '', '$i = 42')
Case $i = 12
MsgBox(0, '', '$i = 12')
EndSelectSwitch verwendet man also eher wenn man eine Variable mit verschiedenen Werten vergleichen will/muss und Select bei mehreren/verschiedenen Variablen.
-
Dann setz doch bitte noch den Thread-Präfix auf gelöst (1. Post bearbeiten).
-
-
-
Mach einfach mal ein Sleep() mit 100 o.ä. rein.
Dann werden wir sehen. -
Einfach die einzelnen Nachrichten in ein Array und dann mithilfe von den Control*-Funktionen dort "hinversenden", wohin du es auch immer willst.
(Auf was fuer 'ne Art von Nachrichten musst du den automatisch antworten? Bei E-Mails z.B. gaebe es noch alternative Loesungswege.)
-
Es heißt AutoIt
Und da du ja das Problem gelöst hast, setz bitte noch den Thread-Präfix auf "gelöst".
-
Spiele-Bots werden hier nicht unterstützt, siehe hier.
Und wieso das nicht funktioniert ... denk mal nach