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

Beiträge von Andy

  • Apfelmaennchen in FASM-Assembler Update incl. FLUG!

    • Andy
    • 24. März 2010 um 19:26

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

  • Apfelmaennchen in FASM-Assembler Update incl. FLUG!

    • Andy
    • 24. März 2010 um 19:20

    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^^

  • Apfelmaennchen in FASM-Assembler Update incl. FLUG!

    • Andy
    • 24. März 2010 um 19:10

    die fasmdemo.au3 funktioniert aber?

  • Apfelmaennchen in FASM-Assembler Update incl. FLUG!

    • Andy
    • 24. März 2010 um 18:50

    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
    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 60

    [/autoit]

    Und für die Hardcoretester, funktionieren denn die Beispielfunktionen in der fasmdemo.au3?

  • Apfelmaennchen in FASM-Assembler Update incl. FLUG!

    • Andy
    • 24. März 2010 um 17:40

    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-typen

    Zitat 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, WPARAM

    kann 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?

  • Apfelmaennchen in FASM-Assembler Update incl. FLUG!

    • Andy
    • 24. März 2010 um 16:28

    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!

  • Contextmenü: Radiobutton anderem Menü-Item zuweisen

    • Andy
    • 24. März 2010 um 10:47

    Vielen Dank an die "Nachteulen"! (man beachte die Uhrzeiten der Postings) :thumbup:

  • Contextmenü: Radiobutton anderem Menü-Item zuweisen

    • Andy
    • 24. März 2010 um 01:12

    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>
    #include <GuiMenu.au3>

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

    ;right click on gui to bring up context Menu.
    GUICreate("My GUI Context Menu", 300, 200)
    $button = GUICtrlCreateButton("Set Item4", 50, 50)

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

    $context = GUICtrlCreateContextMenu(-1)
    $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 Markierung

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

    GUISetState()

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    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
    EndIf

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

    WEnd
    GUIDelete()

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

    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.

  • Autoit und C++?

    • Andy
    • 19. März 2010 um 15:59
    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).

    Zitat

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

  • [Beendet] µitLight März

    • Andy
    • 18. März 2010 um 13:12

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

  • UDF ohne "richtig Include" nutzen

    • Andy
    • 16. März 2010 um 23:10
    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....

  • Netgear Stora [gelöst (z.Teil)]

    • Andy
    • 16. März 2010 um 22:58

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

  • GDI+ Spielerrei

    • Andy
    • 16. März 2010 um 22:48

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

  • Netgear Stora [gelöst (z.Teil)]

    • Andy
    • 16. März 2010 um 00:48
    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

    :rofl: 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.....

    Zitat

    Wer sich das wohl ausgedacht hat?

    ...die Putzfrau....

  • µit für Mathematiker und Zocker

    • Andy
    • 15. März 2010 um 02:28
    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?

  • GDI+ Farbübergänge

    • Andy
    • 13. März 2010 um 22:27

    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)
    Opt("PixelCoordMode", 2)

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

    $user32 = DllOpen("user32.dll")
    $gdi32 = DllOpen("gdi32.dll")

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

    Dim $red[2], $green[2], $blue[2], $bar[256]
    $palette = "0x"

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

    ;start- and endcolor in BGR
    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], 8)
    Next

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

    startcolor(0, 0, 255) ;[1] red
    endcolor(0, 255, 255) ;[0] yellow

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

    For $i = 64 To 128
    $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], 8)
    Next
    startcolor(0, 255, 255) ;[1] yellow
    endcolor(255, 255, 255) ;[0] white

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

    For $i = 128 To 192
    $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], 8)
    Next

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

    startcolor(255, 255, 255) ;[1] white
    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], 8)
    Next

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

    $struct = DllStructCreate("dword[256]") ;32Bit 256 mal

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

    $palette = "0x"
    Dim $z[256]
    For $i = 0 To 223
    $z[$i + 32] = $bar[$i]
    $palette &= Hex($bar[$i], 8)
    Next
    For $i = 224 To 255
    $z[$i - 223] = $bar[$i]
    $palette &= Hex($bar[$i], 8)
    Next
    $bar = $z

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

    ;~ ;_arraydisplay($bar)

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

    $hgui = GUICreate("Palette", 800, 500, -1, -1)
    $pic = GUICtrlCreatePic(FileOpenDialog("Datei laden", @ScriptDir, "(*.jpg;*.bmp;*.png)", 16), 0, 0, 400, 400)
    $hdc = _WinAPI_GetDC(WinGetHandle($hgui))

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

    GUISetState()
    ;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 picture

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

    For $x = 0 To 400
    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
    Next

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

    Do
    ToolTip(Hex(PixelGetColor(MouseGetPos(0), MouseGetPos(1), $hgui))) ;anzeige der Pixelcolor unter dem Mauszeiger
    Until GUIGetMsg() = -3

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

    Func pix($dc, $x, $y, $color) ;pixel mit color an koordinaten setzen
    DllCall($gdi32, "long", "SetPixel", "long", $dc, "long", $x, "long", $y, "long", $color)
    EndFunc ;==>pix

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

    Func endcolor($r, $g, $b)
    $red[1] = $r
    $green[1] = $g
    $blue[1] = $b
    EndFunc ;==>endcolor

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

    Func startcolor($r, $g, $b)
    $red[0] = $r
    $green[0] = $g
    $blue[0] = $b
    EndFunc ;==>startcolor

    [/autoit]
  • Apfelmaennchen in FASM-Assembler Update incl. FLUG!

    • Andy
    • 13. März 2010 um 00:05

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

  • Farben

    • Andy
    • 11. März 2010 um 19:10
    Zitat

    edit: man bin ich heut langsam

    ...und hast genau wie ich auch noch den Hinweis auf

    [autoit]

    _choosecolor()

    [/autoit]

    vergessen ^^

  • Farben

    • Andy
    • 11. März 2010 um 19:02

    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 Rot

    also ist (im RGB-Format) 00FF0000 ein Rot und 000000FF ein volles Blau.

    [autoit]

    $hgui=guicreate("")
    GUISetBkColor(0xFF0000,$hgui) ;RRGGBB
    guisetstate()
    for $i=1 to 0xFFFFFF
    GUISetBkColor($i,$hgui) ;RRGGBB
    next

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

    Do
    until guigetmsg()=-3

    [/autoit]
  • GDI+ Rotating Cubes

    • Andy
    • 11. März 2010 um 09:44
    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),

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™