nein, habe sowohl eine amd 4850 @2,8 ghz als auch einen Intel PIII mit 1,2 ghz
Bei Bekannten mit Intel-Laptops funktioniert es jedenfalls....
Beiträge von Andy
-
-
hmmmm, seltsam, der eigentliche Code wurde nicht geändert, der war in 5 min auf den Fasm angepasst, erweitert wurde nur AutoIt-Code
Jedenfalls läuft der Assembler einwandfrei durch, sowohl Oscars als auch Funkeys Bytecode sind genau wie meiner...schade schade, da werde ich wohl jemanden nerven müssen, der mit mir zusammen den Fehler sucht^^
Freiwillige Vor^^ -
die fasmdemo.au3 funktioniert aber?
-
thx fürs testen, ggf könntet ihr auch mal ausprobieren, ob es hilft, die Zeile 480
[autoit]$ret=MemoryFuncCall("int:cdecl", FAsmGetFuncPtr($AsmObj), "ptr", dllstructgetptr($asmstack)) ;Assembler aufrufen und Code starten
[/autoit]zu aktivieren und dafür die Zeile 489 auszukommentieren...
und wenn man schon dabei ist^^, die folgenden Zeilen 282-287 auch gleich auskommentieren, sie regeln den Funktionsaufruf der AutoItfunktion aus dem Assembler heraus....
[autoit]FasmAdd($AsmObj, " fsave [ebp+40h] ");alle Coprozessorregister und den Copro-stack sichern
[/autoit]
FasmAdd($AsmObj, " pushad ");alle Prozessorregister sichern
FasmAdd($AsmObj, " mov eax,dword[EBP+34h] ");Adresse der AutoItfunktion in eax laden, evtl Parameter vorher auf den stack pushen
FasmAdd($AsmOBj, " call eax ");AutoIt-Funktion aufrufen, erlaubt einen Interrupt, ansonsten wäre das Fenster während der gesamten Berechnung blockiert
FasmAdd($AsmObj, " popad ");Prozessorregister alle wiederherstellen
FasmAdd($AsmObj, " frstor [ebp+40h] ");coproregister und coprostack wiederherstellen 60Und für die Hardcoretester, funktionieren denn die Beispielfunktionen in der fasmdemo.au3?
-
Upps, sorry, mein Fehler! Da zzt. nur die 32-Bitversion unterstützt wird, bitte als 32Bit testen!
Das hängt mit der Verwendung der explizit erforderlichen 64Bit Register, der 64-Bit-Übergabeparameter usw zusammen.
aber mit Blick auf die "neuen" DLL- bzw Struct-typenZitat von Hilfe zu DllStructCreate()INT_PTR, LONG_PTR, LRESULT, LPARAM 32 or 64bit signed integer (Je nach dem, ob die x86 oder die x64 Version von AutoIt benutzt wird)
UINT_PTR, ULONG_PTR, DWORD_PTR, WPARAMkann man da ggf. etwas machen.
Btw, muß man den Pfad zu den 32-Bit-Dll´s (falls verwendet) in einem 32Bit-Script(auf 64Bit-System) angeben, oder nimmt Autoit bzw das BS "automatisch" den richtigen?
-
UPDATE 24/03/2010
Nun ist dank Ward aus dem engl. Forum ein völlig moderner Assembler in AutoIt und auch in das Apfelmännchenscript eingezogen!
Nun ist auch ein "Flug" bis hin zur prozessorabhängigen Genauigkeit von 2e-17 (80Bit) möglich, dabei kann das Fenster in der Größe verändert werden sowie eine andere Farbpalette.Viel Spass!
-
Vielen Dank an die "Nachteulen"! (man beachte die Uhrzeiten der Postings)

-
Hi,
folgendes Problem:
Ein Contextmenü wird erstellt und der aktuelle Menüeintrag bekommt mittels GUICtrlSetState(Menüeintrag, $GUI_CHECKED) ein Radiobutton.
Nun kann man per Maus die anderen Menüeinträge auswählen und der Radiobutton wechselt auf den angeklickten Eintrag, so soll es auch sein.Jetzt möchte ich aber diesen Radiobutton innerhalb des Menüs nicht nur per Mausklick in das Menu ändern, sondern auch innerhalb des Scriptes.
D.h., sobald eine bestimmte Funktion aufgerufen wird, soll die Position des Radiobuttons geändert werden.
Mit GUICtrlSetState(Menüeintrag, $GUI_CHECKED) funktioniert das aber nicht, dann sind beide Menüeinträge angehakt.Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiMenu.au3>;right click on gui to bring up context Menu.
[/autoit] [autoit][/autoit] [autoit]
GUICreate("My GUI Context Menu", 300, 200)
$button = GUICtrlCreateButton("Set Item4", 50, 50)$context = GUICtrlCreateContextMenu(-1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$item6 = GUICtrlCreateMenu("Items", $context)
$item6_1 = GUICtrlCreateMenuItem("Item1", $item6, 0, 1)
$item6_2 = GUICtrlCreateMenuItem("Item2", $item6, 1, 1)
$item6_3 = GUICtrlCreateMenuItem("Item3", $item6, 2, 1)
$item6_4 = GUICtrlCreateMenuItem("Item4", $item6, 3, 1)
GUICtrlSetState($item6_1, $gui_checked) ;Item1 bekommt MarkierungGUISetState()
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
[/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg()If $msg = $GUI_EVENT_CLOSE Then ExitLoop
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If $msg = $button Then
GUICtrlSetState($item6_4, $gui_checked);Item3 bekommt Markierung, aber die schon bestehende Markierung bleibt
_GUICtrlMenu_CheckRadioItem ($item6, 0, 3, 3) ;funktioniert leider nicht, aber die Funktion sollte wie bei diesem Befehl sein
GUICtrlSetState($item6_4, $MFT_RADIOCHECK ) ;Item wird in fetter Schrift dargestellt
;GUICtrlSetState($item6_4, $MFS_CHECKED ) ;funktioniert nicht
EndIfWEnd
[/autoit] [autoit][/autoit] [autoit][/autoit]
GUIDelete()Gibt es eine Möglichkeit den Radiobutton zu setzen(so daß der andere verschwindet), OHNE die damit verknüpfte Funktion aufzurufen.
Die Orgie, sämtliche Positionen zu disablen, und den einen dann zu setzen würde ich gerne vermeiden, da ich viele verschachtelte Menüeinträge habe.
Diese gesuchte Funktion gibt es bei den _GuiCtrlMenuCheckRadioItem(), funktioniert so leider nicht bei "normalen" Contextmenüs. -
Zitat
Keine objektorientiere Programmierung.
Falsch, da "objektorientierte Programmierung" ein von einer Sprache völlig unabhängiger Programmierstil ist. Die "neuen" Sprachen unterstützten den Programmierer nur besser bei der OOP .
Btw. ist es mit AutoIt sehr wohl möglich, mit "Klassen" zu arbeiten
Ein wesentlicher Unterschied ist die Portabilität. AutoIt ist nur auf Windowssystemen lauffähig, während C-Code von so gut wie jedem BS unterstützt wird (für das es einen C-Compiler gibt).
Zitatmit dem Compiler von AutoIt erstellen.
Das ist auch ein Unterschied, AutoIt "compiliert" den Code nicht, sondern speichert ihn zusammen mit einem Interpreter in der EXE-Datei ab, daher ist in einigen Bereichen AutoIt auch nicht so schnell wie "richtig" compilierte Programme.
-
Hi,
habe 2 Varianten am Start, eine listet die 100000 Primzahlen in "native AutoIt" zzt in 5 Sekunden @2.5Ghz mit "handelsüblichen" (String)-Befehlenund die andere, öhhm, mit Hilfe von 82 Bytes in einer AutoIt-Struct in unter 20 Millisekunden, unoptimiert...mal sehen, was sich da noch rausholen lässt.... -
Zitat
klar aber wie gesagt die haupt idee ist das du änderungen über ftp machen kannst udn über ftp kannst du nix starten aber ne datei abändern
Verstehe ich ehrlich gesagt nicht.....
1. Du hast ein Programm 24/7 am laufen, dann kannst du DLL´s, Includes und wasweisichnichtalles ändern, "sauber" bekommst du dort kaum geänderte Funktionen rein.2. Das Programm (oder Teile davon, z.B. Includes) wird per FTP upgedatet, startet daraufhin neu (ggf Benutzerhinweis) und nach einigen Sekunden ist alles auf dem neuesten Stand.
/EDIT/ zu 1.
mit einer dll sollte das klappen, dll uploaden, das Programm bemerkt die neue dll, entlädt die alte dll, kopiert die neue uber die alte und lädt die dll wieder.... -
mal ohne Witz, wenn man das Gerät zwangsweise über eine Herstellerwebsite einrichten muß, haben die dann nicht vollen Zugriff auf das Teil und auch auf das Netzwerk?
Die Daten die REIN kommen, gehen ja auch auf demselben Weg wieder raus. Oder habe ich da jetzt einen Denkfehler?
Da man für die Anmeldung ein Loch in die Firewall bohren muss, könnte das Dingen sogar fröhlich unbemerkt "nach Hause telefonioeren"....Sachen gibts..... -
Hi, wieso langsam?
Ein sleep(50) in der Schleife zeigt erstmal, was gemacht wird, ansonsten dauert die Animation bei mir nur ca 1 sec. Das ist dann ca 1 Schleifendurchgang pro Millisekunde, eigentlich ganz ok!
Ansonsten sind die GDI+ Funktionen für den "Hausgebrauch" schnell genug. Brauchst du mehr Speed, dann kommst du um eigene Funktionen nicht herum. Ich bearbeite z.B. lieber die Grafik(Bitmap) direkt im Speicher und blitte sie dann in den Grafikspeicher bzw das Window. Aber auch das blitten ist nicht gerade üppig schnell, das hat leider auch mit den Grafiktreibern zu tun, welche absolut nicht mehr auf 2D optimiert sind (werden). -
Zitat
- einmalig: Die Stora bei Netgear registrieren, User anlegen, PW vergeben
- bei Aufruf der Konfigurationssoftware: Anwahl https://autoit.de/www.mystora.com, Username und PW eingeben (ja, wirklich - immer über Internet!)
- nach erfolgreicher Authentifizierung Redirektion mit Sitzungs-ID auf die Stora
- und nun erst hat man Zugriff auf die Konfig-Oberfläche
denk dran, der 1.April ist erst in 2 Wochen!
Mal Ernst beiseite, so etwas hab ich ja noch nie gehört! Was das für einen sittlichen Nährwert haben soll bleibt mir verschlossen....Wenn das Ding einen "DAU-Modus" hat, dann reicht doch ein DHCP-Server völlig aus oder etwa nicht?
Kabel rein, 20 sec warten, Daten draufschieben, fettich....
OK, wenn gänzlich jungfräulich, dann per Browser noch einrichten. Aber es soll Geräte geben, die infolge einer ordentlichen Benutzeroberfläche garkein Handbuch brauchen.....ZitatWer sich das wohl ausgedacht hat?
...die Putzfrau....
-
Zitat
Das ist Zufall und den kann man nicht beeinflussen oder berechnen, oder?
Das eine hat mit dem anderen nichts zu tun! Du kannst eine Münze 30x werfen und immer fällt sie auf "Kopf", trotzdem ist die Wahrscheinlichkeit, daß sie auf Zahl hätte fallen müssen, jedes Mal 50% gewesen^^
Schnuffel
hehe, gesetzt den (Zu)Fall, das Gewinnerscript würde "nur" einen 4er erreichen, die Hölle würde losbrechen^^
Das Problem hatten wir schon vor 20 Jahren in der Schule, es gibt Zahlen, die signifikant oft gezogen wurden, und Zahlen, welche unterdurchschnittlich oft gezogen wurden. Die Frage des Tages ist nun: Ist die Wahrscheinlichkeit höher eine der "oft" gezogenen Zahlen zu ziehen, oder eine der "weniger oft" gezogenen? -
so etwas ähnliches....
Bild auswählen und die Farben werden mit denen einer selbst erstellten Palette (Farbverlauf) ersetzt
Spoiler anzeigen
[autoit]#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("MouseCoordMode", 2)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Opt("PixelCoordMode", 2)$user32 = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$gdi32 = DllOpen("gdi32.dll")Dim $red[2], $green[2], $blue[2], $bar[256]
[/autoit] [autoit][/autoit] [autoit]
$palette = "0x";start- and endcolor in BGR
[/autoit] [autoit][/autoit] [autoit]
startcolor(0, 0, 0) ;[1] BGR black
endcolor(0, 0, 255) ;[0] red
For $i = 0 To 64 ;Gradient from black to red, 64 steps
$xx = $i / 64
$r = Int($red[0] - ($red[0] - $red[1]) * $xx) * 256 * 256
$g = Int($green[0] - ($green[0] - $green[1]) * $xx) * 256
$b = Int($blue[0] - ($blue[0] - $blue[1]) * $xx)
$bar[$i] = ($r + $g + $b)
$palette &= Hex($bar[$i],
Nextstartcolor(0, 0, 255) ;[1] red
[/autoit] [autoit][/autoit] [autoit]
endcolor(0, 255, 255) ;[0] yellowFor $i = 64 To 128
[/autoit] [autoit][/autoit] [autoit]
$xx = ($i - 64) / 64
$r = Int($red[0] - ($red[0] - $red[1]) * $xx) * 256 * 256
$g = Int($green[0] - ($green[0] - $green[1]) * $xx) * 256
$b = Int($blue[0] - ($blue[0] - $blue[1]) * $xx)
$bar[$i] = ($r + $g + $b)
$palette &= Hex($bar[$i],
Next
startcolor(0, 255, 255) ;[1] yellow
endcolor(255, 255, 255) ;[0] whiteFor $i = 128 To 192
[/autoit] [autoit][/autoit] [autoit]
$xx = ($i - 128) / 64
$r = Int($red[0] - ($red[0] - $red[1]) * $xx) * 256 * 256
$g = Int($green[0] - ($green[0] - $green[1]) * $xx) * 256
$b = Int($blue[0] - ($blue[0] - $blue[1]) * $xx)
$bar[$i] = ($r + $g + $b)
$palette &= Hex($bar[$i],
Nextstartcolor(255, 255, 255) ;[1] white
[/autoit] [autoit][/autoit] [autoit]
endcolor(0, 0, 0) ;[0] black
For $i = 192 To 255
$xx = ($i - 192) / 64
$r = Int($red[0] - ($red[0] - $red[1]) * $xx) * 256 * 256
$g = Int($green[0] - ($green[0] - $green[1]) * $xx) * 256
$b = Int($blue[0] - ($blue[0] - $blue[1]) * $xx)
$bar[$i] = ($r + $g + $b)
$palette &= Hex($bar[$i],
Next$struct = DllStructCreate("dword[256]") ;32Bit 256 mal
[/autoit] [autoit][/autoit] [autoit]$palette = "0x"
[/autoit] [autoit][/autoit] [autoit]
Dim $z[256]
For $i = 0 To 223
$z[$i + 32] = $bar[$i]
$palette &= Hex($bar[$i],
Next
For $i = 224 To 255
$z[$i - 223] = $bar[$i]
$palette &= Hex($bar[$i],
Next
$bar = $z;~ ;_arraydisplay($bar)
[/autoit] [autoit][/autoit] [autoit]$hgui = GUICreate("Palette", 800, 500, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
$pic = GUICtrlCreatePic(FileOpenDialog("Datei laden", @ScriptDir, "(*.jpg;*.bmp;*.png)", 16), 0, 0, 400, 400)
$hdc = _WinAPI_GetDC(WinGetHandle($hgui))GUISetState()
[/autoit] [autoit][/autoit] [autoit]
;display palette
for $y=0 to 50
for $x=0 to 255
pix($hdc,$x,$y+420,$bar[$x]);col in BGR
Next
next
;~ ;_arraydisplay($bar)
;display transformed pictureFor $x = 0 To 400
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $y = 0 To 400
$col = PixelGetColor($x, $y)
$rest = Mod($col, 255) ;replace the color of the pixel in de source with a color of the palette
pix($hdc, $x + 400, $y, $bar[$rest]);col in BGR
Next
NextDo
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ToolTip(Hex(PixelGetColor(MouseGetPos(0), MouseGetPos(1), $hgui))) ;anzeige der Pixelcolor unter dem Mauszeiger
Until GUIGetMsg() = -3Func pix($dc, $x, $y, $color) ;pixel mit color an koordinaten setzen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
DllCall($gdi32, "long", "SetPixel", "long", $dc, "long", $x, "long", $y, "long", $color)
EndFunc ;==>pixFunc endcolor($r, $g, $b)
[/autoit] [autoit][/autoit] [autoit]
$red[1] = $r
$green[1] = $g
$blue[1] = $b
EndFunc ;==>endcolorFunc startcolor($r, $g, $b)
[/autoit]
$red[0] = $r
$green[0] = $g
$blue[0] = $b
EndFunc ;==>startcolor -
Thx für den Link, bin zzt an einer SSE2/3-Version, die berechnet 4 Pixel auf einmal, das optimieren der cachelines muss aber noch rein....
Jedenfalls ist es ziemlich flott, allerdings nicht mehr mit dem "Inline"-Assembler zu machen. Aber als Assembler-DLL sollte auch der 64-Bitmode funktionieren.
Allerdings ist das alles nichts gegen eine Demo, welche per CUDA (als superschön lesbarer C-Code) auf einer Nvidia-Grafikkarte läuft. Durch heftigstes Parallelisieren (macht der Compiler selbsständig) und völlig fehlender Hauptspeicherzugriffe (alle Daten liegen auf der Graka) ist der Code dort 40-50x schneller als ein hochoptimierter Code auf einer CPU. Das ist der Hammer!Aber den Inline-Assemblercode bekomm ich auch noch doppelt so schnell wie zzt^^, dann fehlen nur noch ca.10000% bis zu CUDA...
-
Zitat
edit: man bin ich heut langsam
...und hast genau wie ich auch noch den Hinweis auf
[autoit]_choosecolor()
[/autoit]vergessen

-
Hallo,
ja, das System ist relativ einfach. Kommt nur darauf an, auf was man sich einigt^^
Im 32-Bit-Farbsystem werden die einzelnen Farben als (hex) AARRGGBB oder AABBGGRR dargestellt
Dabei sind die 2 Byte AA der Alphakanal (für die Transparenz), BB 2 Byte für Blau, GG 2 Byte für Grün und RR 2 Byte für Rotalso ist (im RGB-Format) 00FF0000 ein Rot und 000000FF ein volles Blau.
[autoit]$hgui=guicreate("")
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
GUISetBkColor(0xFF0000,$hgui) ;RRGGBB
guisetstate()
for $i=1 to 0xFFFFFF
GUISetBkColor($i,$hgui) ;RRGGBB
nextDo
[/autoit]
until guigetmsg()=-3 -
Zitat
Einige Seiten überlagern sich allerdings ohne den natürlichen Weg des Lichts zu berücksichtigen.
das meinete UEZ mit der Z-Achse. Beim "transparenten" Würfel ist es egal, ob von hinten nach vorne oder von vorne nach hinten aufgebaut wird. Da sieht man nur die Kanten. Beim "texturierten" Würfel ist das Problem, die hinteren Flächen zuerst aufzubauen, damit sie anschließend von den vorderen, sichtbaren Flächen überdeckt werden. Bei 3D-Programmen kann man daher sehr viel Rechenzeit sparen, wenn man die hinteren (unsichtbaren) Flächen erst garnicht darstellt (Z-Buffer),