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

Beiträge von SOLVE-SMART

  • Automatisierung von Lieferplananpassungen: Einsatz von AutoIT zur Effizienzsteigerung

    • SOLVE-SMART
    • 18. April 2024 um 10:30

    Hi Muecke_1982, willkommen hier im Forum 👋 ,

    aus meiner Sicht lässt sich da etwas machen mit AutoIt. Ob dies allein reicht oder ob etwas anderes besser wäre, kann ich noch nicht einschätzen. Hierzu fehlen noch ein paar Informationen.

    Zitat von Muecke_1982

    Deshalb stelle ich hier unter "Hilfe und Unterstützung" meine Frage mit der Bitte zu prüfen, ob mein Vorhaben machbar ist und wenn ja, ob es auch zuverlässig machbar ist und in welchem Unterforum ich damit richtig bin.

    Du bist in dieser Rubrik schon ganz gut aufgehoben (richtig), mit deiner Fragestellung.

    Zitat von Muecke_1982

    Wir erhalten wöchentlich Lieferpläne von verschiedenen Kunden aus SAP-Systemen in PDF-Form. Diese müssen mühsam manuell an unsere im System hinterlegten Lieferpläne angepasst werden.

    • Läuft das SAP System im Browser oder auch lokal auf dem Rechner (Client)?
    • Was ist euer System?
      • Ist es eine Client Anwendung (also läuft direkt unter Windows oder passiert die Anpassung im Browser)?
      • Gibt es ggf. eine Anbindung an das System per API (requests)?
    Zitat von Muecke_1982

    [...] Lieferpläne als PDF in einem Ordner speichern und dann mit einem AutoIT-Programm durchlaufen lassen könnte, um die benötigten Daten bereits richtig formatiert in einer Textdatei zu speichern.

    Es geht um PDFs die ausgelesen werden müssen und richtig formatiert in eine Text-Datei gespeichert werden sollen.

    • Was meinst du mit richtig formatiert?
    • Kannst du bitte Beispiele geben/zeigen?
    Zitat von Muecke_1982

    Dann müsste ich nur noch den Lieferplan in meinem System aufrufen und den entsprechenden Teil aus der Textdatei kopieren und in mein System einfügen (da er bereits richtig formatiert ist).

    Wäre doch cool wenn du den Umweg gar nicht machen müsstest und direkt von einem System, unter Bearbeitung der Daten, direkt in euer System die Daten übertragen könntest, oder? Also daher die ganzen Fragestellungen, damit du dir soviel manuelle Eingriffe wie nur möglich sparen kannst.

    Zitat von Muecke_1982

    Ist das möglich, ohne dass ich zusätzliche Programme auf meinem Computer installieren muss?

    • Hast du AutoIt installiert?
    • Du fängst gerade mit dieser Sprache an, ja?
    • Hast du einen zeitlichen Horizont bis dies fertig sein sollte? Ich frage wegen der Lernkurve.

    📷 Gut wäre (zumindest aus meiner Sicht), wenn du Screenshots teilen könntest. Wenn du die Abläufe und die Tools erwähnen und zeigen könntest. Damit können dann ggf. "passende" Vorschläge für dein Anliegen gemacht werden.

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 18. April 2024 um 09:14

    Oh ah, ja dann schaue dir das mal genau an, ja. Ansonsten darauf achten, dass ihr v1.3.1 des au3WebDriver Projektes nutzt.

    Viel Erfolg und melde dich gern, falls es um Details in der Browser Automation gehen sollte 😀 .

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 18. April 2024 um 08:47

    Guten Morgen Marcel 👋 ,

    Zitat von gmmg

    Vieles wurde da aus Beispielen übernommen.

    Ja sowas hatte ich mir gedacht/gehofft, denn dies macht die Sache einfacher, denke ich. Erstmal neu strukturieren und falls dann auffällt das etwas fehlt, was doch wichtig war (vielleicht), lieber neu anpassen, neue Optionen der Capabilities hinzufügen usw.

    Zitat von gmmg

    Hat jemand den Webdriver für die Google Chrome Version 124.x.x.x. Die ist irgendwie nicht verfügbar für die Browserversion 124.x.x.x.

    Lädst du den Chromedriver immer selbst herunter? Oder benutzt du die dafür zu Verfügung stehende Funktion _WD_UpdateDriver?

    💡 Falls manuell, nein mache dir nicht den Aufwand, nutze die Funktion, denn dort kannst du ggf. auch einfach ein downgrade machen lassen. Ansonsten hast du hier die entsprechende Referenz der Google Chromedriver die für das Testing bereit gestellt werden.

    Manchmal sind nicht alle Versionen vorhanden, dann geht es meist nur um ein paar Std. und die nächste Chrome Version (normaler Browser) steht dann zu Verfügung.
    Bspw. 124.0.6367.60 gibt es nicht als Chromedriver (testing version). Entweder etwas warten, dann wird gleich die 125.x.x.x Version (Browser <=> Driver) genutzt oder du lässt downgraden, was wie gesagt über die Funktion gut geht.

    Ansonsten kannst du auch gern dieses Projekt von mir im Auge behalten: au3webdriver-boilerplate 😀 . In dem ich versuche den Einstieg mit dem WebDriver deutlich einfacher zu gestalten (wrapper Funktionen und so'n Kram). Ist immer aktuell, denn bspw. mit au3WebDriver v1.3.1 kam auch die "neue" Download-URL des Chromedrivers mit ins Projekt.
    Also schaue mal bitte ob du auch v1.3.1 nutzt, zu sehen in wd_code.au3 bei dir. Vielleicht hast du das kurze 🎬 Intro dazu noch nicht gesehen.

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 17. April 2024 um 16:03

    Also das ...

    AutoIt
    {
        "capabilities": {
            "alwaysMatch": {
                "unhandledPromptBehavior": "ignore",
                "goog:chromeOptions": {
                    "w3c": true,
                    "excludeSwitches": [
                        "enable-automation"
                    ],
                    "useAutomationExtension": false,
                    "prefs": {
                        "credentials_enable_service": false
                    },
                    "args": [
                        "start-maximized"
                    ]
                }
            }
        }
    }
    Alles anzeigen

    ... wo nicht das "profile-directory" angegeben ist und gut funktioniert (schnell), versus ...

    AutoIt
    {
        "capabilities": {
            "alwaysMatch": {
                "unhandledPromptBehavior": "ignore",
                "goog:chromeOptions": {
                    "w3c": true,
                    "excludeSwitches": [
                        "enable-automation"
                    ],
                    "useAutomationExtension": false,    // Diese Option gibt es nicht mehr, kann also raus.
                    "prefs": {
                        "credentials_enable_service": false
                    },
                    "args": [
                        "--user-data-dir=C:\\Users\\ & @UserName & \\AppData\\Local\\Google\\Chrome\\User Data\\chromedriver\\meinTool\\",
                        "--profile-directory=Default"   // Ich bin mir nicht 100%'tig sicher, aber dies kann auch weggelassen werden, da Default.
                    ]
                }
            }
        }
    }
    Alles anzeigen

    ... in dem der Standardpfad von C:\Users\<username>\AppData\Local\Google\Chrome\User Data nach C:\Users\<username>\AppData\Local\Google\Chrome\User Data\chromedriver\meinTool\ gesetzt wird und daher erst die GPO Intranet Website aufgerufen wird und dann deine eigentliche Webseite. Hmmmm 🤔 ... .

    Also die Ordner welche im Screenshot abgebildet sind, sind einfach im "User Data" Verzeichnis und nicht in "meinTool". Daher stelle ich mal die Frage ob dies überhaupt noch so nötig ist, gebraucht wird oder ggf. ein Überbleibsel ist? Ich persönlich habe es noch nie gebraucht und Browser Automation begleitet mich nun schon einige Jahre lang.

    ⚠ Bitte beachte auch die Kommentare // im Json Snippet.

    Zitat von gmmg

    Kann man das eventuell besser Lösen oder wird das nicht benötigt ?

    Was genau meinst du damit Marcel? Also anstatt den Capabilities-String (das JSON) auszuschreiben kannst du einfacher die wd_capabilities.au3 nutzen, welche auch im Projekt au3WebDriver liegt.
    Dann kannst du deine Werte in folgender Form angeben:

    AutoIt
    ; Ist nur ein Snippet/Auszug
    
    #include-once
    #include "wd_capabilities.au3"
    
    Func _BuildChromeDriverCapabilities()
        _WD_CapabilitiesAdd('alwaysMatch', 'chrome')
        _WD_CapabilitiesAdd('w3c', True)
        _WD_CapabilitiesAdd('excludeSwitches', 'enable-automation')
        _WD_CapabilitiesAdd('prefs', 'credentials_enable_service', False)
        _WD_CapabilitiesAdd('args', 'start-maximized')
    
        If $bIsHeadlessMode Then
            _WD_CapabilitiesAdd('args', '--headless')
        EndIf
    
        Return _WD_CapabilitiesGet()
    EndFunc
    
    $sCapabilities = _BuildChromeDriverCapabilities()
    $sSession      = _WD_CreateSession($sCapabilities)
    Alles anzeigen

    Somit musst du auch nicht genau wissen wo welcher Wert in der Json-Struktur sein muss, da die Zuordnung durch die UDF gemacht wird.
    Allerdings, wenn du irgendwelche Sonderfälle hast, dann kann es schon mal sein das du doch den Capability-String schreiben musst.

    💡 Versuche es gern mal so und schaue dir im Output den aufgelösten Capability-String (mit der Variante _WD_CapabilitiesAdd) gern mal an und vergleiche ihn mit deinen String vorher.

    Zitat von gmmg

    Es scheint aber dennoch eine Unterschied zu dem Parameteraufruf zu geben.

    "C:\Program Files\Google\Chrome\Application\chrome.exe" http://www.google.de

    Ja das kann sein, doch worin siehst du da ein Problem? Ich denke --user-data-dir und --profile-directory kannst du getrost weglassen. Außer du weißt sicher das du dies benötigst - ich denke nicht.
    Hoffe dies hilft dir ein wenig und verwirrt nicht noch zusätzlich 😅 .

    Viele Grüße
    Sven

  • Webdriver für Chrome

    • SOLVE-SMART
    • 17. April 2024 um 12:22

    Hi gmmg ,

    Zitat von gmmg

    _WD_Navigate($sSession, $url) zur eigentlichen URL dauert dadurch viel länger

    Dies wundert mich etwas, denn der Chromedriver kommt "eigentlich" frisch/leer/ohne GPO spezifische Einstellungen bzw. ziehen die nicht direkt.
    Oder klingst du dich direkt in den vorhanden Chrome Browser (in deine persönliche Session) ein? Also wird ein extra Fenster => Chromedriver.exe geöffnet oder passiert die Ausführung in deinem Chrome Browser?

    Zitat von gmmg

    Beim Google Chrome kann ich ja per Parameter direkt eine URL übergeben. Funktioniert sowas auch bei dem Webdriver?

    Beispiel: "C:\Program Files\Google\Chrome\Application\chrome.exe" http://www.google.de Hier kommt die per GPO hinterlegte Seite nicht.

    Wenn das von mir oben geschriebene zutreffen sollte, das der Chromedriver.exe frisch ist (je nachdem was du an Capabilities übergibst), dann ist dies so nicht nötig sondern du gehst "ganz normal" über _WD_Navigate(), ja.

    • Kannst du deine eingestellten Capabilities teilen?
    • Kannst du den Output teilen, der erzeugt wird (also zumindest bis die Navigation (der Seitenaufruf)) durch ist?

    Viele Grüße
    Sven

  • active directory - Bezug zwischen IP, hostname, User herstellen

    • SOLVE-SMART
    • 15. April 2024 um 15:45

    An sich ein vernüpftiger Vorschlag gmmg, doch ich hatte das Szenario von GML etwas anders verstanden.
    Die Datenbank, um bei deinem Beispiel zu bleiben, darf doch dann nicht lokal auf dem Rechner des Users liegen sondern irgendwo im Netz des Unternehmes (nehme ich an).
    Wahrscheinlich meinst du dies auch, doch das Beispiel aus Zeile 8 $dbname = @ScriptDir & "\DB.accdb" verwirrt ein wenig.

    Also das AutoIt Skript oder das LoginScript muss Zugriff auf die Datenbank (auf eine API (um ein anderes Beispiel vorzuschlagen)) haben, damit dort die Einträge hinterlegt werden können. Ein wenig Gedanken muss man sich dabei jedoch über die Auth. machen, denn die Credentials liegen dann wahrscheinlich auch beim User (nicht im Klartext versteht sich). Oder wenn man über 'ne übliche API-Struktur geht, dann holt man sich mit seinen Windows-Auth-Daten erstmal 'nen Token und nutzt den zur Authentifizierung an der Datenbank (oder an der API) etc.

    Nachtrag:
    Beim nochmal drüber lesen fällt mir auf, dass es im Prinzip genau das ist was water im post #8 bereits geschrieben hat 😅 , was du allerdings verneint hast GML 🤔 ?

    Bin gespannt wie du dich entscheidest bzw. was du vorantreiben möchtest.
    Bei Umsetzungsproblemen komm bitte gern auf uns zurück - dies scheint kein Hexenwerk 🧙‍♀️ zu sein 😅 .

    Viele Grüße
    Sven

  • Holen Sie sich aus den Ressourcen der ausführbaren Dateien Daten in Form einer Zeile ab

    • SOLVE-SMART
    • 12. April 2024 um 21:08

    Due to you wont answer my question about why (I mentioned the forum rules before), I will no longer provide any help and I guess several other people here too. Sorry, bye.

    Zitat von SOLVE-SMART

    ⚖ Again:
    Why do you need this? What do you want by this? I ask because of the forum rules (here and in the engli. forum) => please keep this in mind, thanks.

  • Holen Sie sich aus den Ressourcen der ausführbaren Dateien Daten in Form einer Zeile ab

    • SOLVE-SMART
    • 12. April 2024 um 20:48

    To be honest, I see no way to do this properly.

    • You can simply use BinaryToString() to get a readable text out of your line, but several values of the object structure are not readable due to codepage and encoding issues.
    • Another option is to use FileOpen() with binary mode.
      • But these also just lead to the result above => insufficient.
    Images

    grafik.png

    grafik.png


    Example:

    AutoIt
    Func _WriteFile($sFile, $vData)
        Local Const $iBinaryOverwriteCreationMode = 16 + 2 + 8
    
        Local $hFile = FileOpen($sFile, $iBinaryOverwriteCreationMode)
        FileWrite($hFile, $vData)
        FileClose($hFile)
    EndFunc

    What you try to achieve is reverse engineering of binaries and bring it into a structured form. I doubt it feasable with pure AutoIt (WinAPI'ish) functions and calls.

    ⚖ Again:
    Why do you need this? What do you want by this? I ask because of the forum rules (here and in the engli. forum) => please keep this in mind, thanks.

    Best regards
    Sven

    ---------------------

    💡 Wenn jemand den Bedarf sieht, dass ich dies übersetzen sollte oder die Fragestellung von Andrey_A nochmal (so wie ich sie nun verstanden habe) wiederholen soll, auf deutsch, dann lasst es mich gern wissen 🤝 .

  • Holen Sie sich aus den Ressourcen der ausführbaren Dateien Daten in Form einer Zeile ab

    • SOLVE-SMART
    • 12. April 2024 um 20:04

    Hi Andrey_A ,

    es fällt mir schwer dein Anliegen zu verstehen? Kannst du bitte nochmal versuchem zu beschreiben was du tun willst und warum?
    Falls dir ggf. englisch besser liegen sollte, kannst du auch gern im engli. Forum die Frage posten oder sogar hier und wir übersetzen sie dann ggf. 😇 .

    Ansonsten würde ich gern wissen, für was du das brauchst?
    Um was geht es?

    Viele Grüße
    Sven

  • Fenster mit Variablen und deren Inhalt (mit permanentem Update)

    • SOLVE-SMART
    • 12. April 2024 um 19:58

    Alles klar Fred, viel Erfolg und zöge nicht die Community mit einzubeziehen.
    Die allermeisten hier sind echt nette Dudes und Duderinnen 🤣 .

    Viele Grüße
    Sven

  • Fenster mit Variablen und deren Inhalt (mit permanentem Update)

    • SOLVE-SMART
    • 12. April 2024 um 15:02

    Mal ganz abgesehen davon das es viele weitere Quellen/Referenzen zum nachlesen gibt, bspw. steht hier auch einiges gutes und wissenswertes, wäre es doch vielleicht einfacher wenn du deinen Quellcode teilst (oder geht das "aus Gründen" nicht), oder? Dann können wir gemeinsam drauf schauen und finden ggf. zügiger etwas.

    Für die allermeisten Anwendungsfälle kommt man mit den oben beschriebenen "manuellen Wegen", schon recht gut voran und weit.
    Wenn du einige große Programme hast, ist ein Debugger sicherlich nicht schlecht, doch du schriebst ja:

    Zitat von msmn

    bin relativ neu im AutoIT und verwende auch den SciTE Editor.

    Daher gehe ich davon aus, dass dies nicht der Fall ist.
    Falls du dich eher als Beginner mit AutoIt einschätzen solltest, dann empfehle ich die Basics besser zu verstehen und dann an debuggen zu gehen.

    Also noch einmal:

    • Quellcode teilen
    • oder auf die Fragen in post #2 eingehen
    • und/oder etwas mehr beschreiben und dein Ziel erläutern
      • oftmals gibt es mehrere Wege etwas umzusetzen, was man selbst nicht gleich sieht => da kommt dann der Mehrwert des Forums zu tragen 😇

    Viele Grüße
    Sven

  • Fenster mit Variablen und deren Inhalt (mit permanentem Update)

    • SOLVE-SMART
    • 12. April 2024 um 13:34

    Und hier ein paar Debugger, welche du ausprobieren könntest, wenn es das ist was du suchst:

    • AutoIt Live-Debugger und wie man ihn benutzt
    • https://www.autoitscript.com/forum/files/fi…ger-for-autoit/

    Falls du ganz allgemein jedoch fragst wie du schneller Fehler finden kannst, dann zeige uns doch gern dein Skript/Programm 🤝 .
    Ansonsten ist der nicht ganz so komfortable Weg, ConsoleWrite() oder _ArrayDisplay() zu nutzen oder deine Programmablaufsschritte in eine Log-Datei zu schreiben.

    Zusätzlich hilft auch oft schon ...

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y

    ... an den Anfang des Skripts zu setzen und zu schauen was im Output dann steht ⚠ .

    Viele Grüße
    Sven

  • Fenster mit Variablen und deren Inhalt (mit permanentem Update)

    • SOLVE-SMART
    • 12. April 2024 um 13:28

    Hi msmn (Fred), willkommen im Forum 👋 ,

    mir ist nicht ganz klar was du meinst ehrlich gesagt.

    Also einen Debugger gibt es meines Wissens nicht für AutoIt out-of-the-box, jedoch gibt es einige Debugger UDFs (Libraries) die dich dein Skript zur Laufzeit debuggen lassen. Dort wird allerdings das Skript an der Stelle gestoppt, wo du einen "breakpoint" gesetzt hast, damit du dir dann den Variableninhalt anschauen kannst.

    🤔 Was ich bei deinen Ausführungen aber verstanden habe ist, dass das Skript nicht unterbrochen werden soll, richtig?

    • Kannst du es noch etwas tiefer beschreiben, wonach du suchst?
    • Hast du eine andere Sprache als Referenz vielleicht, an der man sich orientieren kann?
      • Also wo deine Erwartungshaltung dazu herkommt?

    Viele Grüße
    Sven

  • active directory - Bezug zwischen IP, hostname, User herstellen

    • SOLVE-SMART
    • 12. April 2024 um 12:13

    Hi GML 👋 ,

    also ohne es ausprobiert zu haben, fand ich mit als ersten Suchtreffer folgende Powershell Variante:

    LastLogon (Letzter Login) eines Users im AD feststellen per Get-ADUser
    Gerade für Administratoren, die in einem Netzwerk mit einer AD-Struktur (Active Direcotry) arbeiten kann es wünschenswert sein, wenn sie relativ schnell
    www.windows-faq.de
    Code
    Get-ADUser -filter * -Properties "LastLogonDate" | select name, LastLogonDate

    Also falls ich dich richtig verstehe, könnte dir dies schon helfen. Wenn dem so ist, dann lässt sich die Umsetzung mit AutoIt (und PS) recht einfach machen.
    Vielleicht hilft es ja 🤞 . Angenehmen Tag euch allen noch 🌞 .

    Update:
    Interessant ist auch dieser Artikel dazu https://www.active-directory-faq.de/2021/01/lastlo…logontimestamp/ .

    Viele Grüße
    Sven

  • Frage zur Verwendung von Methoden (Objekt-Syntax / Dot-Notation / Pseudocode)

    • SOLVE-SMART
    • 9. April 2024 um 09:23
    Zitat von AspirinJunkie

    Was du dir genau vorstellst ist ein Syntax-Feature.
    Wir hingegen geben nur die technische Implementierung hierfür vor.

    Ja richtig, ist mir beides bewusst.
    Ich frage mich ob es genau für dieses Syntax-Feature eine "tolle" (klar, sehr subjektiv) Alternative gibt.

    Zitat von AspirinJunkie

    as sind im Grunde nur ganz normale Funktionen, welche zusätzlich einen Pointer auf das Objekt erhalten.
    Manche Programmiersprachen verstecken diesen Pointer (C++, Java...), andere (Python) erfordern diesen zumindest in der Methodendeklaration - jedoch nicht mehr im Aufruf.

    Kenne ich genau so aus C# und Go (golang).

    Zitat von AspirinJunkie

    Was hingegen möglich wäre, wäre einen Präprozessor zu schreiben.

    Daran habe ich noch gar nicht gedacht, vielen Dank für diesen Impuls 👍 . Schaue ich mir mal an.

    Zitat von AspirinJunkie

    [...] jedoch noch ein Gegencheck geben [...]

    Guter Hinweis, merci.

    Viele Grüße
    Sven

  • Frage zur Verwendung von Methoden (Objekt-Syntax / Dot-Notation / Pseudocode)

    • SOLVE-SMART
    • 9. April 2024 um 07:15

    Danke euch beiden schon mal 🤝 . Dies ist im Prinzip "nur" wie mit Maps umgegangen werden kann, jedoch nicht ganz die Idee/der Ansatz den ich mir vorgestellt hatte.

    An sich mag ich persönlich diese Schreibweise mit Klammern und String als Key nicht wirklich. Die Dot-Notation ist so viel besser lesbar und man kennt diese ja aus vielen anderen Sprachen auch.

    Vielleicht gibt es noch andere Ansätze, doch ich schaue mir mal AutoItObject.au3 und Co. (engl. Forum) mal an.

    Danke und bis später 👌 .

    Viele Grüße
    Sven

  • Frage zur Verwendung von Methoden (Objekt-Syntax / Dot-Notation / Pseudocode)

    • SOLVE-SMART
    • 8. April 2024 um 22:38

    Hi zusammen 👋 ,

    die folgende Fragestellung entstand nur aus Interesse heraus, nicht wirklich auf Grund eines wirklichen Problems.

    In AutoIt nutzen wir Funktionen und "eigentlich" keine Objekt-Orientierung (OOP). Mir ist bewusst, das es bereits Ansätze zu OOP gibt und ich da auch mal genauer nachschauen könnte und werde, doch mal sehen was ihr so dazu meint. Was ich gern wissen möchte ist, ob man Funktionen als Methoden zu einem Objekt (im Beispielcode ist es eine Map) verwenden kann und falls ja, wie?

    ⚠ Folgend also der Pseudocode:

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    
    ;~ --------------------------------------
    ;~ Disclaimer: Achtung Pseudocode!
    ;~ Es geht nur um eine Fragestellung,
    ;~ der Code wird so nicht funktionnieren.
    ;~ --------------------------------------
    
    Global $mRectangle[]
    
    _Main()
    
    Func _Main()
        $mRectangle.Width  = 8
        $mRectangle.Height = 4
    
        ConsoleWrite($mRectangle.Width & @CRLF)
        ConsoleWrite($mRectangle.Height & @CRLF)
        ConsoleWrite(GetArea() & @CRLF)
        ConsoleWrite(GetPerim() & @CRLF)
    
        ;~ Als Methoden kann man die Funktionen nicht verwenden.
        ;~ Könnte man dies irgendwie als Objekt mit Methoden umsetzen?
        ConsoleWrite($mRectangle.GetArea2() & @CRLF)
        ConsoleWrite($mRectangle.GetPerim2() & @CRLF)
    EndFunc
    
    Func GetArea() ; Flächeninhalt
        Return $mRectangle.Width * $mRectangle.Height
    EndFunc
    
    Func GetPerim() ; Umfang
        Return 2 * $mRectangle.Width + 2 * $mRectangle.Height
    EndFunc
    
    Func GetArea2() ; Flächeninhalt
        Return this.Width * this.Height ; So oder so ähnlich ...
    EndFunc
    
    Func GetPerim2() ; Umfang
        Return 2 * this.Width + 2 * this.Height ; So oder so ähnlich ...
    EndFunc
    Alles anzeigen
    • Die ersten vier ConsoleWrite, Zeile 18 - 21, sind natürlich okay soweit.
    • Danach habe ich versucht zu verdeutlichen was ich meine.
      • Ich bin hier übrigens nicht an Maps oder so gebunden (kann auch ein Objekt sein).
    • Die Funktionen (welche die Methoden des jeweiligen Objekts sein könnten) GetArea2 und GetPerim2 sollen aufzeigen wie ich mir dies vorstelle.
      • Kann auch totaler Quatsch sein, da AutoIt dafür nicht strukturiert wurde, doch mit der Einführung von Maps damals, kam mir der Gedanke ob man da "nun" irgendwas in der Richtung machen kann oder nicht.

    💡 Am Ende reine Spielerei, doch vielleicht mag jemand von euch seine 2 Cents (oder mehr) dazu hinterlassen 🤝 .

    Viele Grüße
    Sven

  • Einfaches Preprocessing zum Komprimieren (nur eine Spielerei)

    • SOLVE-SMART
    • 2. April 2024 um 23:29

    Hi Mars ,

    ich habe ehrlich gesagt keine Verwendung dafür, doch das liegt auch einfach daran das ich mich noch nicht wirklich damit beschäftigt habe und mir nicht ganz klar ist in wie weit ich dies als "Ausgangspunkt" für etwas anderes nutzen kann, dennoch finde ich es spannend, was in so mancher Kopf vorgeht 😅 ... ( nett gemeint 😇 ). Außerdem lerne ich liebend gern dazu, jeden Tag ein wenig.

    encoded Bits: 36816 LUT-size: 16 #0: 29074 (79.0%) #1: 7742 (21.0%)
    decoded Bits: 36816 LUT-size: 16 #0: 20580 (55.9%) #1: 16236 (44.1%)

    Zitat von Mars

    (Edit: Genau das Gleiche habe ich vor Urzeiten schonmal gebastelt (nur viel umständlicher) und den Code nicht mehr gefunden)

    Übrigens witzig mal wieder eines deiner Beispiele, die du schon so manche Male erwähnt hast, zu sehen 👍 .

    Viele Grüße
    Sven

  • Kalkulator mit festen Variablen

    • SOLVE-SMART
    • 2. April 2024 um 22:30
    Zitat von Akr3p

    [...] Wenn das ganze PHP gewesen wäre, wäre ich wie folgt gegangen. [...]

    Hier mal ein einfaches Beispiel ohne Oberfläche (GUI). Vielleicht hilft es ein wenig.

    AutoIt
    ; Die folgenden beiden Zeilen sind nur dazu da, dass dein Code
    ; ein paar Checks besteht, bevor er ausgeführt wird. Dies kann dir
    ; dabei helfen, von Anfang an Fehler zu vermeiden.
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    
    ; Erster Funktionsaufruf (Hauptfunktion). Dies ist nicht verpflichtend,
    ; doch damit kannst du u.a. die Nutzung von zu vielen globale Variablen
    ; vermeiden.
    _Main()
    
    Func _Main()
        _PrintSimpleCalc()
    EndFunc
    
    Func _PrintSimpleCalc()
        ; Die folgenden Variablen sind in einem lokalem
        ; Scope, du könntest also auch "Local" weg lassen.
        ; Dies gilt allerdings als nicht empfohlen und unschön.
        ; Ebenfalls optional ist "Const", was für Konstanten steht.
    
        Local Const $iAmount        = 13
        Local Const $iPrice         = 0.99 ; Es muss der Punkt genutzt werden, nicht das Komma.
        Local Const $iResult        = $iAmount * $iPrice ; Normale Multiplikation.
    
        Local Const $iRoundedResult = Round($iAmount * $iPrice, 1)
        Local Const $iFloorResult   = Floor($iAmount * $iPrice)
        Local Const $iCeilingResult = Ceiling($iAmount * $iPrice)
    
        _Print('Ergebnis:               ' & $iResult)
        _Print('Gerundetes Ergebnis:    ' & $iRoundedResult)
        _Print('Abgerundetes Ergebnis:  ' & $iFloorResult)
        _Print('Aufgerundetes Ergebnis: ' & $iCeilingResult)
    EndFunc
    
    ; Hilfsfunktion um nicht jedes Mal @CRLF (was übrigens ein Makro ist)
    ; machen zu müssen. Später kannst du dir auch gern "StringFormat()" anschauen.
    Func _Print($sText)
        ConsoleWrite($sText & @CRLF)
    EndFunc
    Alles anzeigen

    Viele Grüße
    Sven

  • Kalkulator mit festen Variablen

    • SOLVE-SMART
    • 2. April 2024 um 21:54

    Hi Akr3p ,

    wenn ich dich richtig verstanden habe, stehst du mit AutoIt noch ganz am Anfang, richtig?
    Vielleicht ist es besser ein paar kleinere Skripte zu erstellen, die Teile deines Vorhabens wiederspiegeln, welche du dann zu einem Gesamtskript/Programm zusammen fügst. So lernst du die Basics ggf. zügiger oder einfacher - doch dies ist nur eine Idee 😇 .

    Warum empfehle ich dies?
    Die Arbeit mit GUIs (UI) kann ggf. etwas erschlagend sein, wenn man sich vorher mit HTML und CSS vertraut gemacht hat und weiß wie schnell eine Oberfläche im Web erstellt und designed werden kann.

    AutoIt ist PHP recht ähnlich (hoffentlich werde ich von Einigen hier für diese Aussage nicht gesteinigt 😂), daher kannst du mit Funktionen, wie in vielen anderen Sprachen (wie auch PHP), genauso umgehen. Gib gern weitere Details was du hiermit meinst:

    Zitat von Akr3p

    Ich verstehe nicht, wie ich die einzelne Funktionen bei AutoIt anwenden kann.

    Dann können wir sicherlich noch besser helfen.

    💡 Ansonsten kannst du über die Hilfe (F1 auf der jeweiligen Funktion) eine gute Beschreibung mit Beispiel(en) usw. finden. Damit lässt sich meist schon einiges machen 🤞 .

    Viele Grüße
    Sven

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™