Das ist ne lange Geschichte.
Die ganzen Buben und Mädels hier haben sich wie Bestien auf ihn gestürzt.
Und je mehr das der Fall war, desto weniger wusste er was er scheiben soll.
Daher sind einige Textstellen höchst widersprüchlich.
Was die Realität ist weiß nur BugFix, denn der hat die Seite vermutlich inspizieren dürfen um herauszufinden was vor sich geht.
Beiträge von Mars
-
-
Zitat
<input value="Create Accounts" class="blueB" type="button" onclick="createit();">
Was ist der Sinn des Skripts ?
Welche Webseite gestattet es automatisch Accounts zu erstellen ? -
Keine weiteren Fragen euer Ehren.
[gelöst] -
Moin,
Kurz und bündig: Ich möchte RGB Farben in DIN99 Farben umrechnen.
Das Problem ist dabei der Schritt über die LAB Farben.
Die Berechnungen liefern bei mir falsche Ergebnisse.
(Also habe ich irgendwo etwas misinterpretiert, oder mich vertippt)
Falls jemand schonmal Funktionen für diese Umrechnungen umgesetzt hat wäre ich ihm sehr verbunden wenn er sie zur Verfügung stellen würde.http://www.subcolors.de/content/public/colorsystems/uni.html
http://de.wikipedia.org/wiki/Lab-FarbraumSpoiler anzeigen
[autoit]#include <Math.au3>
[/autoit] [autoit][/autoit] [autoit]Global $a[3]
[/autoit] [autoit][/autoit] [autoit]$a[0] = 0
[/autoit] [autoit][/autoit] [autoit]
$a[1] = 0
$a[2] = 1;~ _Norm($a)
[/autoit] [autoit][/autoit] [autoit]_Print($a, 'RGB')
[/autoit] [autoit][/autoit] [autoit]Global $b = _RGBtoXYZ($a[0], $a[1], $a[2])
[/autoit] [autoit][/autoit] [autoit]_Print($b, 'XYZ')
[/autoit] [autoit][/autoit] [autoit]Global $c = _RGBtoHSV($a[0], $a[1], $a[2])
[/autoit] [autoit][/autoit] [autoit]_Print($c, 'HSV', '°%%')
[/autoit] [autoit][/autoit] [autoit]Global $d = _XYZtoLAB($b[0], $b[1], $b[2])
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite('Für Blau (R=0, G=0, B=1) muss L=?, A=0, B=-90 herauskommen' & @CRLF)
[/autoit] [autoit][/autoit] [autoit]_Print($d, 'LAB')
[/autoit] [autoit][/autoit] [autoit]Func _XYZtoLAB($X, $Y, $Z)
[/autoit] [autoit][/autoit] [autoit]
Local $Sum = Abs($X) + Abs($Y) + Abs($Z), $Xn = $X/$Sum, $Yn = $Y/$Sum, $Zn = $Z/$Sum
Local $L = 116 *(($Y/$Yn)^(1/3))-16
Local $A = 500 * (($X/$Xn)^(1/3) - ($Y/$Yn)^(1/3))
Local $B = 200 * (($Y/$Yn)^(1/3)-($Z/$Zn)^(1/3))
Local $aRet[3] = [$L, $A, $B]
Return $aRet
EndFuncFunc _RGBtoHSV($R, $G, $B)
[/autoit] [autoit][/autoit] [autoit]
Local $Min = _Min(_Min($R, $G), $B), $Max = _Max(_Max($R, $G), $B)
Local $H = 0
Switch $Max
Case $Min
Case $R
$H = 60 * (($G-$B)/($Max-$Min))
Case $G
$H = 60 * (2+($B-$R)/($Max-$Min))
Case $B
$H = 60 * (4+($R-$G)/($Max-$Min))
EndSwitch
If $H < 0 Then $H += 360
Local $S = 0
If Not $Max = 0 Then $S = ($Max-$Min)/$Max
Local $V = $Max
Local $aRet[3] = [$H, $S * 100, $V * 100]
Return $aRet
EndFuncFunc _RGBtoXYZ($R, $G, $B)
[/autoit] [autoit][/autoit] [autoit]
Local $X = 0.4124564 * $R + 0.3575761 * $G + 0.1804375 * $B
Local $Y = 0.2126729 * $R + 0.7151522 * $G + 0.0721750 * $B
Local $Z = 0.0193339 * $R + 0.1191920 * $G + 0.9503041 * $B
Local $aRet[3] = [$X, $Y, $Z]
Return $aRet
EndFuncFunc _Norm(ByRef $a)
[/autoit] [autoit][/autoit] [autoit]
Local $b = 255
$a[0] /= $b
$a[1] /= $b
$a[2] /= $b
EndFuncFunc _Print($a, $s, $s2 = '')
[/autoit]
ConsoleWrite('+> ' & $s & ':' & @CRLF)
For $i = 0 To 2 Step 1
ConsoleWrite(StringMid($s, $i+1, 1) & ': ' & $a[$i] & ' ' & StringMid($s2, $i+1, 1) & @CRLF)
Next
ConsoleWrite(@CRLF)
EndFunc
.
.
lg
Mars -
Im AutoIt Verzeichnis ist ein Skript "SampleControls.au3".
Da kann man sich die ganzen möglichen Controls mal ansehen.
C:\Program Files (x86)\AutoIt3\Examples\GUIDer Inhalt des Examples Ordners ist allgemein sehr zu empfehlen.
-
Wenn du AutoIt installiert hast kannst du per Rechtsklick auf die .au3 Datei "Compile Script" (oder eine äquivalente Meldung auf Deutsch) auswählen.
Dann wird automatisch eine .exe im selben Verzeichnis erzeugt die dein Programm beinhaltet. -
Ein Tablet/Laptop/Handy in der Uni verleitet immer dazu weniger auszupassen als einem lieb ist.
Was willst du denn studieren ? -
Werden bei GetKeyboardstate nicht Alle Tasten überprüft statt nur einer (wie bei AsyncKeyState) ?
Wenn ja wäre das ein hoher Mehraufwand. (außer die Dll regelt das intern effektiver als 256 Async calls) -
Das WM_CHAR Problem hatte ich auch schon.
Also Quasi eine Message ausspucken sobald eine Taste gedrückt wird.
Was eventuell geht ist ein Accel mit Event. Das müsste doch aufs gleiche rauskommen ?Skript
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Opt('GUIOnEventMode', 1)Global $t = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
Global $hGUI = GUICreate('Test', 500, 500)
GUISetState(@SW_SHOW, $hGUI)Global $a[2][2]
[/autoit] [autoit][/autoit] [autoit]
$a[0][0] = '{ENTER}'
$a[0][1] = GUICtrlCreateDummy()
$a[1][0] = 'u'
$a[1][1] = GUICtrlCreateDummy()GUISetAccelerators($a, $hGUI)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetOnEvent($a[0][1], 'Event')
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent($a[1][1], 'Event')
GUISetOnEvent(-3, 'Event', $hGUI)While Sleep(100)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc Event()
[/autoit]
Switch @GUI_CtrlId
Case -3
Exit
Case Else
ConsoleWrite('['&Round(TimerDiff($t)/1000,1)&'] ' & 'Gedrückt: ' & @GUI_CtrlId & @CRLF)
EndSwitch
EndFuncEdit: Das unterscheidet zwischen Groß- und kleinschreibung. Einfach mal ein U aus dem u machen und ausprobieren.
.
.
lg -
Idea Pad 13 - 1.500€
Sieht verdammt cool aus und hat auch ordentliche Spezifikationen. -
Zitat
Jetzt kommt der Haken (für meine bescheidenen Kenntnisse): Durch die Installation eines USB-Managers ändert sich - während des laufenden Scripts - der Laufwerksbuchstabe des USB-Sticks (in meinem Fall von "L" auf "N")
Es handelt sich um eine Installation. Es ist unwahrscheinlich, dass alle Rechner denen dieser Stick verabreicht wird so reagieren wie sein eigener.
-
Ich versuch mal was.
Hab ja einen USB Stick. (leider nur einen, sonst könnte ich den einen dran und den anderen ab machen um die Situation zu simulieren)Edit:
Das müsste so klappen.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>Local $aDrivesVorher = DriveGetDrive('ALL')
[/autoit] [autoit][/autoit] [autoit]; Installation
[/autoit] [autoit][/autoit] [autoit]
; Entfällt hier, daher wird einfach das
; erste Laufwerk im Array umbenannt
$aDrivesVorher[1] = 'x:' ; Aus dem ersten wird ein x
; Das entspricht der Umbenennung eines Laufwerks
; Bei der InstallationLocal $aDrivesNachher = DriveGetDrive('ALL')
[/autoit] [autoit][/autoit] [autoit]_ArrayDisplay($aDrivesVorher)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($aDrivesNachher)_ArrayUnique2($aDrivesVorher, $aDrivesNachher)
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite('! ' & $aDrivesVorher[0] & ' -> ' & $aDrivesNachher[0] & @CRLF)
[/autoit] [autoit][/autoit] [autoit]_ArrayDisplay($aDrivesVorher)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($aDrivesNachher)Func _ArrayUnique2(ByRef $a1, ByRef $a2)
[/autoit] [autoit][/autoit] [autoit]
Local $b1 = $a1 ; Kopieren
For $i = UBound($a1) - 1 To 0 Step -1
If _StringInArray($a1, $a2[$i]) Then _ArrayDelete($a1, $i)
Next
For $i = UBound($a2) - 1 To 0 Step -1
If _StringInArray($a2, $b1[$i]) Then _ArrayDelete($a2, $i)
Next
EndFuncFunc _StringInArray($a, $s)
[/autoit]
For $i = 0 To UBound($a) - 1 Step 1
If $a[$i] = $s Then Return True
Next
Return False
EndFuncDanach sollte in beiden Arrays nur 1 Element vorhanden sein, und zwar der geänderte Buchstabe.
Sollte ein Laufwerk verbunden oder abgeklemmt werden wärend der Installation bleiben mindestens 2 Einträge übrig. (1. die Nummer die sich geändert hat und 2. der Buchstabe des geänderten Laufwerks) -
Du kannst versuchen per DriveGetDrive alle verbundenen Laufwerke zu ermitteln.
Unmittelbar vor dem Setup wird die Liste erstellt und unmittelbar danach erneut.Dann müsste die Liste bis auf 1 Laufwerk identisch sein.
Wenn man alle doppelten Einträge löscht bleibt im ersten Array das Alte und im 2ten das Neue Laufwerk zurück.Wenn ich das Problem richtig verstanden habe müsste es damit gehen.
Nachteil ist, dass man wärend der Installation keine Sticks dran oder abhängen darf. sonst sind die Arrays falsch. -
Und ich dachte das würde statisch gelinkt vor dem Ausführen und deshalb wäre keine dynamische ansprache der Structelemente möglich.
Aber Minx ist derjenige der die Lücke im System findet^^
Eval ist nicht so schön wie eine Funktion. Lieber die Func benutzen. -
AutoIt wird immer schneller.
Das habe ich schonmal mit 3 Versionen (welche das genau waren weiß ich nicht mehr) auf mindestens 4 Rechnern überprüft.
Jeweils kurze Benchmarks in willkürlicher Reihenfolge tausende Male ablaufen lassen.Dabei kam raus, dass Stable Versionen etwas langsamer sind als die Betas
Neuere Versionen sind etwas schneller als ältere.Meine Vermutung ist, dass die Compiler immer besser werden. AutoIt hängt indirekt also auch mit dem Compiler der verwendet wird zusammen.
-
-
-
Meine schlimmste Befürchtung ist, dass der ganze schöne Kram aus der 3.3.9.5 wieder gestrichen wird und die nächste Stable eher der 8.1 entspricht.
Ich weiß, dass es unklug war, aber ich habe einige Skripte in 9.5 Syntax geschrieben. Und zwar einfach, weil es praktisch ist.Aber schön, dass hier die 9.5 zur Verfügung steht.
-
aha...NOCH kompakter?
[autoit='Beispielzeilen']Return ($kk[$kc]=$1 Or 0*Assign($2,$1=0)) And Assign($2,$kc+1) And $kc>9 And ka($3)+Assign("kc",0)
For $4=199 To 0 Step -Assign("w",1,2)*Assign($2,Random(0,6,1),2)*Assign("x",5,2)+0*d(1,3,1)*d(1);...
[/autoit]
ExitLoop GUICtrlSetBkColor($s[$4/10+2][Mod($4,10)],0) And $4=0 And GUICtrlSetData($_[1],Execute($t))
Next;...............................................................................................50% sind da noch drin
[autoit]("l'',320,0,128,512,1)"),$q=6,$s[10][4],$5,$o=L _
[/autoit]
("m-1,2105376)")+GUICtrlSetColor(-1, 8421504) + _
GUICtrlSetFont(-1, 13,500,0,'Arial',5)+L("6'p"& _
"',L('l@LF,144,480,32,32)'))")+L("m-1,4227136)" _
)+L($k)+I(Not StringIsDigit($b),"6'b',L('j99,"& _
"999,1)'))")+SRandom($b)+GUISetState(),$t="6'"& _
"o',$i+1)",$u="9|0|-1|I(Not $s[$i][0],$t)",$7[7 _
]=["6'n',0)","6'o',$o-1)","l'',$l+8,472,16,16)" _
,"6'o',Int($q^0.7/5))","6'o',$o-($o-5)*($o>5))" _Man muss sich nur eine Kleine Interpreterfunktion basteln in die man den von hand kleingemachten Code stopft (hier die Funktion "L"). Dann kann man mit 5 Zeilen eine For Funktion basteln, sodass man keine Zeilen mehr für das For in -> Next verschwenden muss. (While Schleifen einfach als For 9999999 usw)
Aber ich muss schon sagen, dass dieser Code mir sehr gefallen hat. (lief bei mir nicht direkt, was schade ist)
Das Skript von BugFix fand ich auch sehr gelungen, das Problem liegt hier im Umfang. Andere haben ein ganzes Spiel programmiert...
Das Skript von Minx startet bei mir immer den VLC Player und will nicht unterstützte Sounds abspielen, sonst ganz ok. Kompressionstechnisch aber lachhaft, 90% Whitespace^^ -
Es gibt einige Standards an die man sich beim Programmieren halten kann (aber nicht muss).
Dadurch werden Skripte besser lesbar.Eine Liste findest du hier: UDF-Standards
Allerdings gibts immer Abweichungen.
Ich nutze z.B. auch $b für boolean anstatt $fDann existieren noch Sachen wie $btn mit denen man Variablen kennzeichnet die ein Button"handle" beinhalten (zum Handle oder nicht Handle gabs auch schon umfangreiche Disskussionen^^) oder $ptr um zu zeigen, dass es sich beim gespeicherten Integer um einen Pointer handelt, usw usw.