AutoC++

  • Hi!

    AutoC++ ist ein Fork-Off von AutoIt3, und fungiert als duale Sprache. Das heißt sie kann nativ und objektorientiert verfasst und interpretiert werden.

    Nativ gilt der Syntax von AutoIt3, deshalb ist es förderlich sich zuerst AutoIt anzueignen, und dann auf AutoC++ umzusteigen.

    Nun was macht denn AutoC++ so toll?
    -Output durch Compiler jetzt auch als extrem komprimierte Executable
    - Einfache, übersichtliche Programmierung
    - Fast selbsterklärender Code
    - Objekte aus Klassen kinderleicht erstellen
    - Klassen steuren ihre Funktionen, Variablen der Objekte funktionieren nun crossfunctional
    - Keine Parameter mehr für Klassenfunktionen
    - Saubere Programmausführung durch (De-/)Constructor
    - Innerhalb der Klassenfunktionen und außerhalb der Klassen gelten normale AutoIt-Befehle
    - Alle Includes oder UDF´s von AutoIt können benutzt werden

    Ein kleiner Codeauszug:

    GUI Example
    [autoit]

    ;#####################################################################
    ; AutoC++ Example: GUI Example
    ; Purpose: Show how to display GUI´s and Controls + Loops
    ; Autor: campweb
    ;#####################################################################
    #include <WindowsConstants.au3>

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

    $NewWindow = Gui("Some GUI Example")
    $NewWindow.Style = Default
    $NewWindow.ExStyle = $WS_EX_TOOLWINDOW
    $NewWindow.x = Default
    $NewWindow.y = Default
    $NewWindow.Height = 300
    $NewWindow.Width = 400
    $NewWindow.Show()
    $NewWindow.PlaySound()
    $NewWindow.Idle()

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

    Class Gui
    Private:
    Local $hWnd, $Rabel
    Public:
    Local $Style,$Exstyle,$Title,$x,$y,$Width,$Height,$Label
    Gui()
    PlaySound()
    Show()
    Idle()
    ~Gui()
    EndClass

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

    Func Gui::Idle()
    While guigetmsg() <> -3
    guictrlsetdata(Self.Rabel, "Random: "&random(1, 10000, 1))
    sleep(10)
    WEnd
    EndFunc

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

    Func Gui::PlaySound()
    SoundPlay(@WindowsDir&"\Media\tada.wav", 1)
    EndFunc

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

    Func Gui::Show()
    Self.hWnd = guicreate(Self.Title,Self.Width,Self.Height,Self.x,Self.y,Self.Style,Safe.ExStyle)
    guictrlcreatelabel("Hello, with a foo in a boo!", 5, 5)
    Self.Rabel = guictrlcreatelabel("Random: ", 5, 25, 200)
    guisetstate(@sw_show,Self.hWnd)
    EndFunc

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

    Func Gui::Gui($szTitle)
    Self.Title = $szTitle
    EndFunc

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

    Func Gui::~Gui()
    GuiDelete(Self.hWnd)
    EndFunc

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

    Das ganze Gelumpe hat auch noch ne Seite: https://sites.google.com/site/autocpp/

    MfG, campweb

    3 Mal editiert, zuletzt von campweb (20. September 2011 um 14:22)

  • Ein großes Kompliment von mir, sehr sehr gute Idee.
    Ich bin wirklich überzeugt (und das passiert selten), und werde es in Zukunft garantiert oft nutzen.

    Mach weiter so.
    MfG, James C.

    Edit:
    In welcher Sprache hast du das eigentlich programmiert?

  • Vielen Dank, so viel Lob hätte ich nicht erwartet :)

    Edit: Es wurde komplett in AutoIt geschrieben

    MfG, campweb

    Einmal editiert, zuletzt von campweb (18. September 2011 um 17:41)

  • So nun auch im richtigen Forum.

    James Wenn du dich mal damit beschäftigst, dann lass mir mal ein paar skripte zukommen, denn der Beispielordner ist noch rar bestückt.

    MfG, campweb

  • Da sind ein paar Fehler auf deiner Seite

    Zitat

    Bei AutoC++ sollte man sich imemr im Klaren darüber sein, dass man immer noch mit AutoIt skriptet. Dennoch hat AutoC++ einen völlig anderen Aufbau, wie ghet das?

    Ganz einfach:

    1. Das Skript mird mit IDE++ erstellt
    2. Es wird auf Ausführen geklickt
    3. Pre++ wandelt das AutoC++ Skript in ein extrem effizient kleines AutoIt Skript um
    4. Der AutoIt3 Interpreter interpretiert dies dann

    Das ganze funktioniert mit nativen AutoIt Code in IDE++ genauso, trotzdem wird auch AutoIt Code von Pre+ gedebuggt.


    Hinweise auf die Ersteller von verwendeten Modulen sollten unbedingt dabei sein. Änder das am Besten möglichst schnell.

  • Nabend!

    Also wenn du mir noch sagen kannst wofür man AutoC++ einsetzten sollte, dann währe ich ne Spur schlauer :D Mir fällt so spontan kein Anwendungfall ein ?(
    Viellecht um einfacher C++ Funktionen in Au3 zu interpretieren?

    Aber sonst find ich das es echt ne gute Idee ist!
    Und wie sieht das mit der Geschwindigkeit aus, also gleich (langsam) wie AU3 oder wat?

    Grüsse!

  • Ich weiß es nicht, es ist für mich einfach einfacher (:D) wenn ich objektorientiert programmieren kann, ich weiß nicht wie dass so mit der Geschwindigkeit aussieht, müsste ich mal testen ;)

    MfG

  • Also nüchtern betrachtet wird alles in AutoIt Code übersetzt, wenn ich das richtig verstanden habe.

    Sollte das der Fall sein, wird damit erzeugter Code wahrscheinlich langsamer sein als das Handgeschriebene Äquivalent.
    Was die Ausführgeschwindigkeit angeht ist AutoIt nämlich höchst seltsam. Manchmal schlägt ein 100 Zeiler einen 5 Zeiler und anderstrum.

    Wenn man Objektorientiert Programmieren will bietet sich die entsprechende UDF an, oder direkt C++ und dann als MemoryDll einbauen.

    @"Euch Beide"
    Mattthias ich kann verstehen, warum du Dich aufregst, aber es hilft nicht deinen Unmut zu äußern. Der Klügere gibt nach und hört zuerst mit dem Stunk auf. Und wenn Campweb noch 100 Threads mit deiner Ansicht nach geklautem Zeug, oder nutzlosem Kram aufmacht macht Dein gestichel es nicht besser.

    Campweb es ist schön jemanden zu haben der engagiert ist. Deine Vorstellung zeugt aber eindeutig von überflüssiger Energie. Mach irgendwas anderes als Coden. Das ist nicht das Leben und wird dich in Zukunft staunen lassen, wie wenig du in der vergangenen Zeit wirklich geschafft hast.

    lg
    Mars(i)

  • Alle Module von AutoC++ wurden bewiesen ausschlislich von PrideRage, campwen und Shaggi erstellt.
    Die echten Namen der Beteiligten sind nicht bekannt, ich heiße nicht Ratul ..., vielleicht ist dies der Name von Shaggi oder PrideRage. Dies ist mir nicht bekannt.

    Hier

    Das bedeutet also, es gibt schon einen IDE++. Der selbe Name bedeutet aber nicht, dass das auch das selbe Programm ist.

  • Achso, nein den Namen habe ich mir asugedacht, einfach Zwei "+" hinter jeden Skriptnamen geklatscht.

    Na dann klärt sich doch alles auf, was eine Löschung Mattthias' Beiträge noch notwendiger macht.

    MfG, campweb

    • Offizieller Beitrag

    Na dann benenne die IDE++ einfach um und Ruhe ist. Ich werde alle Störbeiträge die noch folgen sollten deaktivieren.
    Das Gezanke geht mir auf den Zeiger und ist alles andere als produkiv.

    @Mattthias, wenn dir was nicht paßt, dann kläre das per PN oder schreib peethebee an.
    Diese ewige, ich spam mal eben, nur weil Cambweb was gepostet hat, ist nicht akzeptabel.
    Wenn du ihn nicht riechen kannst, dann kläre das ausserhalb von diesem Forum oder halt die Füße still.
    Deine "Streitlust" geht so ziehmlioch allen auf den Sender und wenn du sie nicht zügeln kannst, such dir ein anderes Forum.

  • Edit: Es wurde komplett in AutoIt geschrieben

    Mitlerweile habe ich das auch gemerkt, und denn Aufbau dieses Projekts verstanden. Mich würden außerdem einige Details zu dem Code interessieren, z.B. Länge, Aufwand, ...

    Ich finde die Idee nachwievor gut, muss allerdings sagen, das das nicht-objektorientierte Programmieren meiner Meinung nach einfacher ist, wenn auch nicht so übersichtlich, weshalb ich AutoC++ eher für x-Tausend-Zeilen-Projekte benutzen würde.

    Beispiele könnte ich einige machen, würde mich aber über genauere Angaben freuen (Beispiele zu was? Oder jedes Beispiel aus der Hilfe umschreiben?)

    MfG, James C.

  • Also ich hab mir das nun eine weile überlegt und mir fällt einfach nicht ein was an AutoC++ nun besser sein soll als an normal Autoit. Sehe bei AutoC++ nur eine unschöner Syntax aber einen wirklichen Vorteil nicht oder soll das einfach eine andere Art von AutoItObject sein?. Wäre nett wenn das mal für die etwas langsameren verdeutlichen würdes campweb hehe.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hallo campweb,
    ich wollte mich mal mit AutoC++ beschäftigen, deswegen wollte ich mir ein Beispiel anschauen.
    Als ich IDE öffnete und das Hallo Welt Beispiel öffnete, fing er automatisch zu compilen. (Also konnte ich den Code garnicht bearbeiten)
    Habe dann Compilen lassen, bei der MSGBox auf Ok geklickt, aber dann fing er wieder an zu compilen.
    Weißt du woran das liegen könnte?

    MfG,
    Styler334

  • HI!

    Dieser Fehler trat leider bei mir noch nie auf 8|
    Das könnte man beheben, indem wenn der AutoC++ Source relaesed wird, du die Compilefunktion auskommentierst :wacko:

    MfG, campweb

  • Hallo campweb,
    erstmal Danke für die Antwort.
    So schlimm es ist nicht, habe den dreh langsam raus.
    Kann es sein das die GUICtrlCreate.... Befehle wie beim normalen AutoIt sind?
    Habe es versucht und es klappte.

    PS: Wäre es möglich das man die Fenstergröße von IDE++ ändern kann? Ich mag den Vollbildmodus nicht wirklich.


    MfG,
    Styler334

  • Erstmal möchte ich ein Lob aussprechen. Tolles Ding!
    Find ich super hat mal wer sowas gemacht. Gut möglich, dass ich es weiterhin nutze.

    Aber zum Hauptgrund meines Posts:

    Falls jemand mit der IDE++ nicht so wirklich zurechtkommt habe ich mal ein kleines Script geschrieben um AutoC++ auch in SciTE nutzen zu können.
    Mann muss einfach das Script während dem Gebrauch von SciTE am laufen haben und dann kann man mit F5 das Script starten.
    WICHTIG: Das Script muss im IDE-Ordner von AutoC++ sein.

    Andere Anwendungen sollten F5 dann immer noch empfangen (keine Garantie).

    Gruss Shadowigor