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

Beiträge von alpines

  • Kodiform wert erhalten

    • alpines
    • 24. September 2018 um 09:53
    Zitat von kaynewild

    Ich befasse mich auch mit den Grundlagen, allerdings habe ich versucht mir meine Antwort selber zu geben, indem ich in den Grundlagen danach suche. Doch leider habe ich dazu nix passendes gefunden.

    Das ist so ziemlich eins der ersten Sachen im Kapitel GUI-Programmierung in jedem Tutorial lernt. Zu sagen, das man nichts passendes gefunden hat kann ich da nicht glauben.

    Zitat von kaynewild

    ich würde mir einen einfachen Frage / Antwort Thread wünschen, indem eben Newbies easy fragen stellen können, ohne die Standartantwort zu erhalten "Lern programmieren"

    Wir sind keine Frage-Antwort-Maschine. Wenn wir solch einen Thread hätten, bzw. "zulassen" würden, dann käme hier jedes Scriptkiddie an und würde von uns wollen, dass wir bei ihren Klickbots,

    oder sonst welchem Kram weiterhelfen.

    Es ist nicht so, dass wir nicht gerne helfen, sondern wir erwarten vom User auch, dass er eine gewisse Vorarbeit leistet und nicht C&P-Code erwartet.

    Ich fang doch nicht an an einem Auto rumzuschrauben ohne vorher begriffen zu haben, wie es eigentlich funktioniert (nicht bis auf jede kleinste Schraube, sondern so, dass ich ein gutes Verständnis davon habe).

    Den Code den du gepostet hast ist als solches noch nicht einmal lauffähig, es kommt so rüber, als ob du ihn hier hinrotzt und nach ein paar Stunden guckst ob da schon eine Antwort aus dem Boden gesprossen ist.

  • Win 10 SSD 128 GB auf SSD 500 GB umziehen und kläglich gescheitert [gelöst]

    • alpines
    • 23. September 2018 um 23:51
    Zitat von Bitnugger

    Es gibt keine unformatierten Partitionen, nur unformatierte Bereiche und diese müssen nicht ins Image aufgenommen werden, denn relevant sind nur die Start- und Endpositionen der formatierten Partitionen, wodurch die - falls vorhanden - unformatierten Bereiche automatisch entstehen.

    Genau, nachdem man das Image überspielt hat kann man einfach die gewünschte Partition wieder vergrößern.

  • Kodiform wert erhalten

    • alpines
    • 23. September 2018 um 21:49
    Zitat von kaynewild

    Wenn ich die Eingabe von dem Kodi form Feld $Input1 in einer selbst definierten Func verarbeiten möchte, muss ich was genau tun?

    Zitat von chesstiger

    Siehe Hilfe zu GUICtrlRead.

    Nein... schau dir lieber die Grundlagen zu AutoIt an! Was ist denn das für eine Frage?

    Wenn es schon daran scheitert einen Wert aus einer Inputbox zu lesen, dann werden gleich noch tausend weitere Fragen kommen, wie man Werte setzt, Sachen berechnet etc...

  • Win 10 SSD 128 GB auf SSD 500 GB umziehen und kläglich gescheitert [gelöst]

    • alpines
    • 23. September 2018 um 14:52

    Festplattenimage mit Ubuntu Live CD kopiert und auf die neue gebrannt? Danach die alte abstöpseln und es müsste sich ohne Probleme booten lassen.

    Nachdem es gebootet ist musst du über diskmgmt.msc nur noch die Platte erweitern.


    Ich würde dennoch ein Reinstall vorziehen, da die Platte sich über die Jahre zumüllt.

    Zitat von bazii

    MBR neu erstellt mit BootIce. Kein Erfolg.

    Wird sowieso nichts bringen da ab Win8 mit GPT gearbeitet wird.

  • Was hat es mit $IDCLOSE in der MsgBoxConstants.au3 auf sich?

    • alpines
    • 23. September 2018 um 12:16
    Zitat von Oscar

    Vielleicht ist/war das mal vorgesehen, dass dann $IDCLOSE gesendet wird!?

    Ich hab in die Script-Breaking-Changes geguckt aber konnte dort keinen Eintrag dazu finden.

    Im Bugtracker ist dazu auch nichts.

  • Was hat es mit $IDCLOSE in der MsgBoxConstants.au3 auf sich?

    • alpines
    • 23. September 2018 um 12:15
    Zitat von Bitnugger

    Ich verstehe die Frage nicht... bzw. es steht doch in den Includes, was es damit auf sich hat.

    IDCLOSE wird aber von keiner MsgBox zurückgegeben, egal welchen Flag du nimmst. Das X von Windows gibt dir 2 oder 1 zurück, je nach Flag.

  • Zeilen tauschen und hinzufügen

    • alpines
    • 23. September 2018 um 01:19
    Zitat von Bitnugger

    AU3Check - bzw. Au3Check.exe, bei der installierten Version normal zu finden in: C:\Program Files (x86)\AutoIt3\

    Wie du schon sagtest ist das kein Debugger. Au3Check prüft glaube ich nur ob die Programme syntaktisch soweit in Ordnung sind.

    Die Fehlermeldungen (Out of Bounds, etc) kommen vom Interpreter.

    Einen Debugger wie bei VS wo man bestimmte Variablen pinnen kann, CPU-Last, RAM-Verbrauch überwachen und sonst welchen Schabernack machen kann gibts von offizieller Seite aus nicht, und wird vermutlich auch nie kommen.

    Es gibt inoffizielle Sachen wie AutoIt Debugger und das was ISI verbaut hat, mehr fällt mir nicht ein. Aber autoBert hat da ja ein paar verlinkt.

    Zitat von AutoMit

    In welchem Programm funktioniert das?

    In SciTE mit SciTE4AutoIt.exe, geh mal in den Reiter "Tools" da findest du unten die beschriebenen Hotkeys.

    Zitat von AutoMit

    Welcher Code ist aus Eurer fachlichen Meinung die beste Umsetzung zur Fragestellung = "guten Code" laut alpines Zitat?

    Das If UBound in der Schleife kannst du bspw. komplett weglassen, da es semantisch keinen wirklich Mehrwert hat. Wenn man im For-Header -2 angibt, funktioniert das auch.

    Es gibt nicht >die< beste Lösung denn es hängt einfach vom Geschmack ab. Performancetechnisch werden sich die Implementationen so gut wie nichts nehmen.

  • DrawFrame / Deckende Linien zeichnen

    • alpines
    • 22. September 2018 um 17:25
    Zitat von Nitram

    Wie heißt der erste sichtbare Pixel auf dem Monitor im Koordinatensystem (x/y)(absolut)?
    0/0 oder 1/1?

    Koordinatensysteme sind 0-indexiert.

  • Zeilen tauschen und hinzufügen

    • alpines
    • 22. September 2018 um 14:40
    Zitat von Andy

    Genau darum geht es doch!

    GESTALTUNG und STIL eines Codes haben essenziell mit der Wartbarkeit zu tun! Man schreibt doch nicht einen NICHT (gut) debugbaren Code, nur weil er "schön" aussieht?!

    Oder heißt das etwa, man schreibt erst einen gut debugbaren Code, und macht ihn dann, wenn er fehlerfrei läuft, "schön"?

    Hast es auf den Punkt gebracht. :thumbup:

    Die UBound-Abfrage ist sowieso redundant gewesen, im For-Header hätte man direkt auf -2 setzen können (hatte ich ja geschrieben), das wäre auch optisch mMn. schönerer Code geworden.

    Zitat von Andy

    Ich jedenfalls würde folgende Variante vorziehen. Jede Variable ist per ALT-D oder STRG+SHIFT+D abzufragen.

    Hier unterscheiden sich die Geschmäcker weil es keinen wirklichen IDE-Debugger wie bei Visual Studio oder ähnliches gibt. (Zumindest nicht in der Standardinstallation).

    Ich nutze viele ConsoleWrites und lass mir immer an den Stellen die Werte ausgeben die ich überprüfen will und sichere nicht beim Coden extra alles explizit in eine Variable, nur die Sachen die ich überprüfen möchte.

    Ich versuche einfach konsequent sauber zu coden und stilsicher zu bleiben ohne dabei Einschränkungen in Hinsichten von Wartung, Lesbarkeit hinzunehmen.

    Das klappt auch ganz gut, da ich sehr schnell Fehler finde indem ich kurz auf den Code schaue, da brauch ich nicht viele Debugsprints.

    Bei dem DllStruct Beispiel ist es natürlich klar, hier sollte man die Variablen als Mittel zum Zweck sehen und nicht als Datencontainer verwenden, sondern viel mehr als "Alias".

    ___

    Es ist überraschen wie viel spaßiger Programmieren sein kann, wenn man einfach mal konsequent sich bemüht guten Code zu schreiben.

    Da macht das Lesen Spaß, Debuggen Spaß, einfach alles. Neue Probleme kann man rasend schnell lösen und nach Wochen lässt sich nach ein paar Blicken auf den Code wieder alles erkennen.

    Das soll jetzt aber nicht heißen, dass man nicht auch "schlechten" Code schreiben kann, wenn man kurz was testen will kann man auch gerne Stilsicherheit etc. völlig links liegen lassen,

    solange man hinterher aufräumt und wieder gut weitermacht.

    ___

    Der Thread ist zwar jetzt komplett entgleist aber solche Diskussionsperlen entstehen spontan :)

  • Zeilen tauschen und hinzufügen

    • alpines
    • 22. September 2018 um 12:46
    Zitat von autoiter

    Ich habe dir zugestimmt, dass es schon sehr große Arrays sein müssen, bevor das auffällt.

    Die Arraygröße spielt keine Rolle, UBound wird nur einmal berechnet, ich kriege für riesige und kleine Arrays den selben Zeitaufwand.

    Die Zeit den Wert abzurufen ist zwar doppelt so groß, verglichen mit dem Abspeichern in eine Variable, aber wie bereits erwähnt ist das vernachlässigbar gering.

    Wir bewegens uns (bei meinen Resultaten jetzt) bei 600.000 UBounds (drei Dimensionen) pro Sekunde, das sind ~0.5µs pro UBound, das ist nichts (in AutoIt-Maßstäben!!).

    Bei solchen Zeiteinheiten sollte es, meiner Meinung nach, viel eher um die Gestaltung und den Stil des Codes gehen als noch das letzte bisschen Performance rauszuholen,

    da diese in 99.999% der Skripte schlicht nicht benötigt wird, und wenn doch dann AutoIt nicht das Mittel der Wahl ist sondern man lieber ASM oder DllCalls nutzen sollte.

    Ich habe schon in Skripten innerhalb von Schleifen UBound verwendet, obwohl ich die Größe, für das ReDim davor, bereits errechnet habe und UBound den selben Wert liefern wird.

    Warum? Es sieht konsequenter aus und man muss nicht erst hochscrollen um zu wissen was da steht. Für mich ist der obere Code wesentlich besser als der untere, aber das muss jeder für sich entscheiden.

    Jeder hat schließlich seinen eigenen Stil.

    Code
    $iSecondDim = 1337
    ReDim $aMyArray[UBound($aMyArray)][$iSecondDim][UBound($aMyArray, 3)]
    
    For $i = 0 To UBound($aMyArray) - 1
        For $j = 0 To UBound($aMyArray, 2) - 1
            For $k = 0 To UBound($aMyArray, 3) - 1
                ;...
            Next
        Next
    Next
    Code
    $iSecondDim = 1337
    ReDim $aMyArray[UBound($aMyArray)][$iSecondDim][UBound($aMyArray, 3)]
    
    For $i = 0 To UBound($aMyArray) - 1
        For $j = 0 To $iSecondDim - 1
            For $k = 0 To UBound($aMyArray, 3) - 1
                ;...
            Next
        Next
    Next
  • Zeilen tauschen und hinzufügen

    • alpines
    • 22. September 2018 um 11:51
    Zitat von Andy

    Mal abgesehen davon, dass in jedem Schleifendurchlauf auf Ubound() geprüft werden muss, wird genau dieses Ubound() auch noch mehrfach innerhalb der Schleife verwendet. Das gehört VOR der Schleife einmal berechnet und dann in eine Variable.

    Wie Bitnugger bereits geschrieben hat sollte sich da nicht viel nehmen. Es wird einfach im Interpreter das Array gesucht und der Wert geholt, ich denke nicht, dass da eine Variable wirklich schneller ist.

    UBound berechnet die Größe ja nicht, es ruft nur die bereits Abgespeicherte ab.

  • Zeilen tauschen und hinzufügen

    • alpines
    • 21. September 2018 um 18:12
    Zitat von autoiter

    Jedoch sollte Ubound nicht in einer Schleife aufgerufen werden. Das kostet unnötig Zeit (abhängig von der Anzahl der Zeilen)

    Das stimmt zwar aber das ist (wenn man sich jetzt komplexere Anwendungsfälle ansieht, vernachlässigbar wenig.

    Ich hab eben ein kleines Skript gebastelt und ein 2000x1000x5 Array erstellt und es mit zufälligen Zahlen gefüttert. (260 MB RAM Verbrauch etwa).

    Und innerhalb einer Sekunde habe ich 612.341 also ~ 610.000 UBound Abfragen für die 1., 2. UND 3. Dimension erhalten.

    Führe ich den selben Test kleineren Zahlen aus (2, 1, 5) kriege ich identische Werte, macht also praktisch überhaupt keinen Unterschied.

    Ich würde lieber die Variante nehmen, die semantisch schöner aussieht, funktional hat man nichts davon aber wenn sich der Code besser lesen lässt, warum nicht.

    In diesem Beispiel steht es allerdings außer Frage. UBound() - 2 wäre hier so oder so der way-to-go.

  • Zeilen tauschen und hinzufügen

    • alpines
    • 21. September 2018 um 14:23
    Zitat von AutoMit

    Wenn ich den Text in einem Array habe und das Array zeilenweise durchgehe, und ich treffe auf eine Fundstelle ("# 2" gefunden), wie kann in der zweiten IF-Abfrage (suche nach "# 1") bereits in der nächste Zeile ( "# 1" ) suchen, obwohl ich noch im array in der vorigen Zeile ( " # 2" ) bin?

    Ehm... einfach den nächsten Arrayindex ansprechen? Wenn du grad in [n] bist und #2 findest, dann schaust du einfach ob in [n + 1] #1 steht.

  • kann _ReplaceStringInFile komplexe Suchen durchführen ala StringRegExp(Replace) ?

    • alpines
    • 20. September 2018 um 22:04
    Zitat von vcopsmtl

    Was / Welchen Teil hab ich überlesen?

    Es wird nirgends von RegEx gesprochen, das sollte ein starkes Indiz dazu sein, dass reguläre Ausdrücke nicht möglich sind.

    Wenn du 100% sicher gehen willst, kannst du einfach in die UDF gucken und die Funktion selber unter die Lupe nehmen.

  • Mit IE.au3 auf bereits geöffnete Instanz zugreifen

    • alpines
    • 20. September 2018 um 21:58

    _IEAttach sollte aber funktionieren, mehr können wir dir nicht dazu sagen, wenn du uns keinen Code lieferst.

  • Schreiben/Lesen eines Array-Wertes aus einer Datei

    • alpines
    • 20. September 2018 um 11:22
    Zitat von Lashandan

    Local $k = IniReadSection($sFilePath, "Klicks")
    ;Hochzählen des Wertes
    $k = $k +1

    Zu subtil? IniReadSection doch sicherlich keinen IniWert zurück oder, vielleicht eine Sektion? Ein Array?

  • Schreiben/Lesen eines Array-Wertes aus einer Datei

    • alpines
    • 20. September 2018 um 10:30

    Wieso verwendest du IniReadSection/IniWriteSection wenn du nur einen einzigen Wert liest bzw. schreibst?

  • kann _ReplaceStringInFile komplexe Suchen durchführen ala StringRegExp(Replace) ?

    • alpines
    • 19. September 2018 um 13:01
    Zitat von autoBert

    wieso? Ist doch eine Standard-UDF

    Da hat sich aber jemand ein Bein ausgerissen um die UDF-Namenskonvention einzuhalten.

  • Happy Birtday Gunfood

    • alpines
    • 19. September 2018 um 13:01

    Alles Gute :part:

  • kann _ReplaceStringInFile komplexe Suchen durchführen ala StringRegExp(Replace) ?

    • alpines
    • 19. September 2018 um 11:26

    Du verwendest eine UDF die du nicht verlinkst oder hochlädst, da können wir dir wohl kaum dazu helfen.

    Dein StringRegExpReplace müsste funktionieren wenn du einfach die gesamte Datei dort reinschmeißt. Verstehe aber nicht was daran umständlicher sein soll.

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™