_Au3Optim (Inline-Funktionen und Code-Optimierung)

  • Als was speichert SciTE die Source Codes eigentlich? Wie kann ich sehen, was dür ein Format die Datei hat?


    Zu den Fractals: den "nornalen" Source Code habe ich jetzt angehängt! Es wird in jedem Aufruf die Fraktal Version gesetzt.
    Eine "Pause" Taste bzw. das Speichern der Bilder kann ich hinzufügen. Ich muss mir nur noch überlegen, wie ich das am Besten machen kann (Bedienung).

    Mit F9 kann jetzt jederzeit die Zeichnung gespeichert werden!

    Format: @ScriptDir & "\L-SF-Screenshot_" & @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC & ".jpg"

    Gruß,
    UEZ

  • UEZ:
    Der Fehler in Fractals wurde durch falsches Auflösen der mathematischen Formeln verursacht.
    Das ist nun in der aktuellen Version behoben - dafür wird momentan nicht alles berechnet.

    Schön, daß man nun speichern kann :) ! Das Programm wäre doch wirklich einen einzelnen Thread wert, oder habe ich den übersehen?

    Wie SciTe die Sources speichert weis ich nicht. Ich verwende das Programm nicht und starte es auch ungern, da es leider das Benutzer-Verzeichnis ständig mit irgendwelchen Dateien zumüllt, die da einfach nicht hingehören.

    ----

    Update:

    * Neues:
    - die meisten String-Funktionen werden nun ersetzt, falls sie mit konstanten Werten arbeiten
    - $a = $a & $b => $a &= $b
    - die Optimierungen von __ReplaceInlineFunc nach _Au3Optim verlagert

    * Korrekturen:
    - Fehler beim Ersetzen der gobalen Konstanten behoben, falls diese wiederum in Konstanten weiterverarbeitet wurden.
    - Fehler beim Ersetzen mathematischer Ausdrücke behoben
    - Problem beim Ersetzen mit Hilfe von Execute und gleichnamigen Variablen in _Au3Optim behoben

    * In Arbeit:
    - Mathematische Ausdrücke weiter optimieren
    - Mathematische Ausdrücke in Strings ignorieren

  • Zitat

    - Statements die über mehrere Zeilen gehen werden zu einer Zeile vereint.

    Sehr fein! Könnte man in Scite einbauen, um u.a. div. Debugging-Zeilen an die richtige Position zu bringen.
    Bin jetzt mit dem Obfuscator nicht soooo fit, könntest du einen optimalen, "allgemeingültigen" Header zum Einsetzen in die *.AU3 erstellen? Oder ggf innerhalb der Funktion schon einen Obfuscator-Durchlauf machen?

  • Sehr fein! Könnte man in Scite einbauen, um u.a. div. Debugging-Zeilen an die richtige Position zu bringen.


    Mit SciTe hab ich zwar nix zu tun, aber den Einzeiler dafür kann man sicher irgendwo einbauen:

    [autoit]

    $sAu3 = StringRegExpReplace($sAu3, '\b\s*_\s*\n\s*', ' ')

    [/autoit]


    Bin jetzt mit dem Obfuscator nicht soooo fit, könntest du einen optimalen, "allgemeingültigen" Header zum Einsetzen in die *.AU3 erstellen? Oder ggf innerhalb der Funktion schon einen Obfuscator-Durchlauf machen?


    Oder einfach per AutoIt3Wrapper:
    #AutoIt3Wrapper_Run_After= ...
    aber dazu muß das Ganze noch etwas "stabiler" werden und natürlich Parameter aus der Kommandozeile annehmen.

    Den Obfuscator Durchlauf baue ich ungern ein, der dauert meist relativ lange.

  • Hallo Stilgar,

    hier noch ein Fehler:

    aus

    • $a5a = _1h_(Int((_1g_(@AutoItPID) + _1g_($a7p)) / 1024)) wird $a5a = _1h_(Int _1g_(@AutoItPID) + _1g_($a7p) / 1024)) (die Klammern sind nicht mehr richtig).
    • $acu = StringMid($a3u[1], StringInStr($a3u[1], ":Win32_") + 7,(StringInStr($a3u[1], ".") -(StringInStr($a3u[1], ":Win32_") + 7))) wird $acu = StringMid($a3u[1], StringInStr($a3u[1], ":Win32_") + 7 StringInStr($a3u[1], ".") -(StringInStr($a3u[1], ":Win32_") + 7)) (hier fehlt das Komma nach der 7 und eine Klammer am Ende).

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Ich habe mal AUTOITEROIDS benutzt und ich bekomme folgende Fehler:

    • die Zeile Global Const $ab8 = 15, $ab9 = 10, $aba = 60, $abb = 6 wird komplett gelöscht, ohne dass die Werte eingetragen werden!
    • aus If Mod(Random(1, 15, 1), 7 - $a8y) = 0 Then wird If , 7 - $a8y) = 0 Then bzw. aus $acz = Mod(Random(1, 3, 1), 3) wird $acz = , 3)


    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Was ist $__DEBUG__ für eine Variable in _Au3Optim.au3?

    Jetzt wird aus $a4l = GUICreate("", $a7u, $a7v, -1, -1, BitOR($a6e, $a6g, $a6i, $a6j, $a6f)) -=> $a4l = GUICreate("", 720, 480, -1, -1, )!

    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    Einmal editiert, zuletzt von UEZ (21. Dezember 2009 um 14:48)

  • Update:
    Das #define Statement kann nun auch echte Makros verarbeiten.

    z.B.:
    aus:

    [autoit]

    #define msg(txt) MsgBox(0,"Test",txt)
    #define msg2(txt,title) MsgBox(0,title,txt)
    #define $bla "blubber"

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

    msg("Hallo")
    msg('Hallo 2')
    msg2("Hallo", "Titel")
    $text = $bla

    [/autoit]

    wird:

    [autoit]

    MsgBox(0,"Test","Hallo")
    MsgBox(0,"Test",'Hallo 2')
    MsgBox(0,"Titel","Hallo")
    $text = "blubber"

    [/autoit]

    [EDIT]
    Zum Zeitpunkt des Schreibens des Beitrags ist mir ein Kopierfehler passiert. Nun funktionieren die #define-Makros.

    Einmal editiert, zuletzt von Stilgar (22. Dezember 2009 um 20:17)

  • Bekomme jetzt ein Fehler beim Ausführen in folgerder Zeile (etwa um die 350):

    [autoit]


    ; replace arguments from function-call inside the function
    $iAC = UBound($aArgsC) - 1
    If $aArgsC[0] Then
    For $j = 0 To $iAC
    $sArg = StringReplace(StringStripWS($sArg, 3), StringStripWS($aArgs[$j], 3), StringStripWS($aArgsC[$j], 3), 0, 2) ;<=-------- hier
    Next
    EndIf

    [/autoit]
    Code
    C:\Coding\AU3\Tools\_Au3Optim.au3 (351) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $sArg = StringReplace(StringStripWS($sArg, 3), StringStripWS($aArgs[$j], 3), StringStripWS($aArgsC[$j], 3), 0, 2)
    $sArg = StringReplace(StringStripWS($sArg, 3), StringStripWS(^ ERROR

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hier die Version, die ich benutze.

    Unter GFX\3D Axis\Source\3DAxis_Test_Obfuscated.au3 ist der Code, das mit _Au3Optim.au3 geladen wird (auch im Anhang)!

    3D Axis

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    Einmal editiert, zuletzt von UEZ (1. November 2011 um 00:44)

  • Letztes Update für dieses Jahr:

    + das Zerlegen der Funktions/Makro-Argumente nochmal komplett umgebaut, da sollten nun keine Fehler mehr auftreten.
    + Inline-Funktionen die optionale Parameter haben, werden jetzt (noch) übersprungen.

    UEZ:
    3D Axis - geht noch nicht:
    - bei Inline-Funktionen machen verschachtelte Funktionsaufrufe noch Probleme
    - Globale Constanten überschreiben gleichnamige Locale Variablen