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

  • AutoIt-Object -- wie könnte AutoIt in OOP-Syntax aussehen

    • alpines
    • 3. Januar 2018 um 13:36
    Zitat von fakeraol

    Ich hab mich schon mal etwas mit OOP beschäftigt, aber da ich meine Aufgabenstellungen bisher auch anders lösen konnte, hatte ich bisher nicht die Motivation, mich so dahinter zu klemmen, daß ich da Fuß fasse.

    Zumindest fürs Scripten ist OOP (meiner Meinung nach) absolut ungeeignet.

    AutoIt wurde eigentlich dafür designt Makros auszuführen, Fenster zu automatisieren und einfach Befehlsabläufe zu automatisieren und keine große Software zu entwickeln.

    Natürlich verbiegt hier jeder im Forum (mich eingeschlossen) AutoIt und es wird schöne Software programmiert, seien es Spiele, Musikplayer oder sonst was.

    Für solche Anwendungen ist aber OOP besser geeignet, denn bei Spielen kann man z.B. für jeden Spieler ein Objekt anlegen und ihm Attribute anhängen und Objekte

    klonen, vererben und wirklich schönen Code schreiben. In AutoIt ist das (mit den Standardtypen) nicht so einfach, aber dafür wurde es ja auch nicht entwickelt.

  • Problem mit GUICtrlListView_AddItem und Array

    • alpines
    • 3. Januar 2018 um 01:28

    Du solltest es dir einfach angewöhnen während des Codens deine Variablen aussagekräftige Namen zu vergeben.

    Irgendwann machst du das dann unterbewusst und du musst nicht nach jeder Codingsession deinen Code aufräumen damit dir beim nächsten Mal nicht schlecht wird.

    Dazu solltest du dir das Thema ungarische Notation mal angucken.

    Übrigens, wenn du jemanden hier ansprechen willst (und möchtest, dass es in den Benachrichtigungen auftaucht), dann solltest du nicht seinen Namen als URL zum Profil einsetzen sondern einfach seinen Namen mit einem @ davor schreiben, WBB bietet dir dann eine Auswahl (je nachdem wie viele Buchstaben du schon eingetippt hast) an Mitgliedernamen an.

    In dieser Antwort z.B. war kein Zitat von dir und es sollte in den Benachrichtigungen auch nicht auftauchen. aber Dexter1993 jetzt schon.

    Außerdem: Themen werden hier nicht geschlossen, aber du kannst den grünen Haken für erledigt/gelöst setzen indem du den 1. Beitrag editierst.

  • Fenster ohne Rahmen mit der Maus in der Größe ändern

    • alpines
    • 3. Januar 2018 um 01:20
    Zitat von AutoMit

    Gibt es noch einen Trick, um den (bei mir blauen) Rand des Fensters ebenfalls auf schwarz zu setzen?

    Das ist das Theme von Windows, und ich glaube ohne weiteres wirst du da nicht rankommen.

    Du könntest wie bereits erwähnt an dein Kanten und Ecken Labels platzieren und mit Events die Position der Maus abfragen.

    Da müsste es aber bestimmt einen besseren Weg geben, aber ich kenne leider keinen.

  • Problem mit GUICtrlListView_AddItem und Array

    • alpines
    • 3. Januar 2018 um 01:19

    Dann ersetz doch einfach die Doppelpunkte durch Semikolon und split einmal danach, fertig. StringReplace wäre dazu ideal.

    Alternativ kannst du auch nach dem Doppelpunkt splitte und dann jeden Index nochmal splitten wie bereits erwähnt.

  • Problem mit GUICtrlListView_AddItem und Array

    • alpines
    • 3. Januar 2018 um 01:15

    Oh man, ich glaubs einfach nicht... :D

    Guck dir mal den 2. Parameter in der _GUICtrlListView_AddSubItem-Funktion an. Du schreibst immer in den 0. Index der LV.

    Du musst natürlich dort hochzählen, da du ansonsten immer an die selbe Stelle schreibst.

    Da deine For-Schleife allerdings immer 2 hochzählt, solltest du dort nicht $i verwenden sondern $i / 2 und dann sollte das ganze auch funktionieren.

    Tipp am Rande: Wenn du noch in ein paar Monaten in dein Script blicken und verstehen möchtest was du dort verbrochen hast, solltest du einiges an deinem Stil verändern.

    Bei deinen Variablennamen kräuseln sich mir die Fingernägel. $TrimStatFr, $all, $AllFrStr, $SglFrStr, $FriendList.

    Nichts davon sagt aus was und wie es in der Variable gespeichert wird.

    Ich verstehe auch nicht, warum du nach ":" splittest um mit _ArrayToString dann einen String zu erhalten welches Semikolon enthält um das ganze nochmal danach zu splitten.

    Wo liegt denn der Unterschied wenn du es einfach nach dem Doppelpunkt splittest und fertig? Du könntest auch einfach Alle ":" im String durch ";" ersetzen einmal nach ";" splitten.

  • Problem mit GUICtrlListView_AddItem und Array

    • alpines
    • 3. Januar 2018 um 01:00

    _ArrayToString gibt dir nicht die Anzahl der Elemente wieder sondern das Array zusammengeschustert mit dem Delimeter.

    Du kriegst einen String und nicht die Anzahl der Elemente.

    Statt das alles so zu machen, warum iterierst du nicht einfach das $all-Array und splittest jeden einzelnen Index nach ";"?

    Dann hast du im gesplitteten [0] name und [1] status (wenn du Parameter 3 verwendest).

  • Fenster ohne Rahmen mit der Maus in der Größe ändern

    • alpines
    • 3. Januar 2018 um 00:58

    Leider kann man $WS_EX_CONTROLPARENT nicht verwenden, wenn man die Styles nur für den Rand verwendet, aber da gibts einen sehr einfachen Workaround.

    Einfach ein Label erzeugen und $GUI_WS_EX_PARENTDRAG drauf anwenden, so kann man die GUI wie vorher hin- und herschieben und am Rand resizen.

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 438, 192, 146, BitOR($WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_POPUP))
    $hDragLabel = GUICtrlCreateLabel("", 0, 0, 615, 438, -1, $GUI_WS_EX_PARENTDRAG)
    
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
    
        EndSwitch
    WEnd
    Alles anzeigen
  • Problem mit GUICtrlListView_AddItem und Array

    • alpines
    • 3. Januar 2018 um 00:42

    Du verwendest Option 3 aber fängst erst bei Index 1 an obwohl du bei 0 anfangen müsstest.

  • Fenster ohne Rahmen mit der Maus in der Größe ändern

    • alpines
    • 3. Januar 2018 um 00:41

    Du kannst die Styles so einstellen, dass der Rahmen (ohne Titelleiste) noch angezeigt wird und diesen kannst du dann deformieren.

    Ansonsten kannst du ja ein Control unten rechts in der Ecke erstellen und dann mit Events und Positionsabfragen das Fenster dementsprechend resizen.

  • AutoIT - Script-to-OOP-Script-Converter

    • alpines
    • 3. Januar 2018 um 00:15
    Zitat von fakeraol

    '\s*' bedeutet doch "ein Whitespace, gefolgt von weiteren BELIEBIGEN Zeichen" ?

    Falsch, wenn du ein beliebiges Zeichen matchen willst, dann verwendest du dafür den .-Operator.

    Das Sternsymbol steht dafür, dass Whitespaces vorkommen können, es aber nicht muss.

    Es ist ein Quantifizierer.

    \s+bedeutet: Matche greedy min. ein Whitespace

    \s*bedeutet: Matche greedy min. null Whitespaces

    Eine detaillierte Erklärung findest du in der Hilfe: https://www.autoitscript.com/autoit3/docs/f…tringRegExp.htm

  • Problem mit GUICtrlListView_AddItem und Array

    • alpines
    • 3. Januar 2018 um 00:11

    Deine For-Schleife ist allerdings jetzt falsch, ich habe extra geschrieben, dass du UBound nutzen musst wenn du die Option 3 verwendest.

    In $SglFrStr[0] steht jetzt nicht mehr die Anzahl der Elemente sondern direkt das 1. Element. Entferne also die 3 vom StringSplit oder wandle die Schleife zu

    For $i = 0 To UBound($SglFrStr) - 2 Step 2 um.

  • Problem mit GUICtrlListView_AddItem und Array

    • alpines
    • 2. Januar 2018 um 23:34

    Du solltest auf jeden Fall deine Variablennomenklatur mal anpassen, ich habe absolut keine Ahnung was $AllFrStr oder $SglFrStr heißen soll.

    Auf den ersten Blick erkenne ich aber, dass du die For-Schleife bei 2 starten lässt obwohl Index 0 nur die Größe beinhaltet und Index 1 schon deine Daten.

    Du kannst das übrigens auch entfernen lassen (also, dass die Größe in Index 0 steht, indem du als 3. Parameter beim StringSplit eine 3 verwendest, die Arraygröße kriegst du dann mit UBound).

    Du kannst die Schrittweite in einer For-Schleife mitangeben (das lässt praktisch jeder Programmierer weg, weil AutoIt standardmäßig um 1 inkrementiert) aber hier in diesem Fall kann man das gut gebrauchen.

    Jetzt musst du also von Index 1 bis $SglFrStr[0] - 1 laufen. Da du aber name, status; name, status hast kannst du auf die Indizes so zugreifen.

    $SglFrStr[$i] = name

    $SglFrStr[$i + 1] = status

    Jetzt must du aber aufpassen, dass du nicht zu weit läufst also läufst du bis zum letzten name-Element welches im Array auftaucht, das wäre $SglFrStr[0] - 2.

    Als Schrittweite in der For-Schleife noch 2 verwenden und das ganze sollte laufen.

    AutoIt
    $SglFrStr ;Array welches so aufgebaut ist [0] = Anzahl an Elementen, [1] = name1, [2] = status1, [3] = name2, ...
    
    For $i = 1 To $SglFrStr[0] - 2 Step 2
        _GUICtrlListView_AddItem($FriendList, $SglFrStr[$i], 0)
        _GUICtrlListView_AddSubItem($FriendList, 0, $SglFrStr[$i + 1], 1)
    Next
  • Wie filtere ich mit StringRegExp und/oder StringRegExpReplace den linken Teil eines Strings, der vor Chr(0) steht?

    • alpines
    • 2. Januar 2018 um 12:07

    So wie du das im Moment machst, matcht du alles (durch den Punkt) greedy und danach matcht du alles ohne dem Chr(0).

    Du willst aber schon vorher alles ohne Chr(0) matchen, also nimm den Punktoperator weg und verlager das + hinter dem ausgelassenen Chr(0), dann klappt das auch.

    AutoIt
    #include <Array.au3>
    Local $sText = 'Wie filtere ich mit StringRegExp und/oder StringRegExpReplace den linken Teil eines Strings, der vor Chr(0) steht?' & Chr(0) & 'Das will ich auch nicht!!!' & @CRLF
    ConsoleWrite('+ Position des Chr(0) = ' & StringInStr($sText, Chr(0)) & @CRLF)
    $aText = StringRegExp($sText, '([^\x00]+)', 1) & @CRLF
    _ArrayDisplay($aText, '$aText')
    If UBound($aText) Then
        ConsoleWrite('! Position des Chr(0) = ' & StringInStr($aText[0], Chr(0)) & @CRLF)
        ConsoleWrite('> Mano... wie bekomme ich das Chr(0) und den mistigen Rest dahinter weg?!' & @CRLF)
    EndIf
  • Jahreswechsel 2017 -> 2018

    • alpines
    • 1. Januar 2018 um 02:52

    :part:

    Frohes Neues auch von mir :D

  • Bilder kopieren & umbennen für eine Stream anzeige

    • alpines
    • 31. Dezember 2017 um 10:42

    Das sollte nicht allzu schwierig werden.

    Den Inhalt eines Verzeichnisses kannst du dir mit _FileListToArray ausgeben lassen.

    Sollte der Zeichenstempel immer konstant lang sein, kannst du mit StringTrimRight den String von Rechts aus abschneiden.

    Und um zu prüfen wie alt das Bild im Stream-Ordner ist (dort hast du ja den Zeitstempel bereits gelöscht), kannst du mit FileGetTime prüfen wie alt die Datei ist.

    Überleg dir einfach wie du die Funktionen mit Schleifen verbinden musst und übersetz deinen Code Stück für Stück in AutoIt, dann sollte es auch nach

    einer längeren Zeit ohne AutoIt machbar sein.

  • Probleme beim Rechnen mit HEX und DEC

    • alpines
    • 30. Dezember 2017 um 21:08

    AutoIt sieht keinen Unterschied zwischen Hexadezimal- und Dezimalzahlen. Du kannst einfach 0xBC + 121 rechnen.

    Dein Problem müsste eher an der TCPRecv-Funktion und dem StringMid dahinter liegen (oder der eingegebenen InputDifferenz).

    Da du uns nur sehr wenig von deinem Code präsentierst können wir nur raten.

    $InputDifferenz taucht in deinem Snippet nicht auf, ist $InputDifferenz die Variable die das Control beinhaltet oder der Inhalt des Controls der mit GUICtrlRead eingelesen wird?

  • Scrollbalken

    • alpines
    • 28. Dezember 2017 um 00:09

    Registrier doch ein Klickevent oder pach ein großes unsichtbares Label hinter allen Controls, welches bei Click ControlFocus ausführt.

  • Scrollbalken

    • alpines
    • 26. Dezember 2017 um 19:21
    Zitat von Tweaky

    Jemand eine Ahnung wie ich mit der Maus scrollen kann?

    Wenn die ScrollBars-UDF das nativ nicht unterstützt dann registriere doch die entsprechenden WM_* Nachrichten (müsste WM_MOUSEWHEEL sein)

    und frage in deiner registrierten Funktionen die übergebenen Wörter ab und scrolle mit den eingebauten Funktionen oder sende das entsprechende Event an die ScrollBars-UDF (sofern diese die WM_VSCROLL-Events oder ähnliches unterstützt).

  • GetUniqueColors

    • alpines
    • 19. Dezember 2017 um 22:57
    Zitat von Mars

    Wenn AMD da angreift und integrierte Chips rausbringt die wie eine 1050 laufen muss Intel liefern, sonst sind sie geliefert.

    Zwar etwas OT aber:

    Intel wird dann auch liefern. AMD hat nach langer Zeit endlich mit Ryzen wieder ordentlich Druck gemacht und Intel hat mit der 8000er Generation endlich den Arsch hochbekommen.
    Schau dir mal die PassMark Scores zwischen der 6000er (7226) 7000er (8091) und 8000er (11687) Serie an.

    Die 8000er war die erste wirkliche Antwort auf Ryzen, davor wurde einfach nur rebrandet oder geringfügig an der Architektur geschraubt und bisschen die IPC erhöht, weil eben AMD nichts zu bieten hatte.

    Man kann also ziemlich sicher sagen, dass Intel bald ebenfalls was liefern wird.

    AMD hat mit Ryzen schön den Markt angezogen und hoffentlich werden sie am Ball bleiben und ein schönes Follow-Up (unter anderem die iGPUs) bieten.

  • Autoit Forum Browser

    • alpines
    • 18. Dezember 2017 um 10:37
    Zitat von gmmg

    Man kann das Firefox Fenster aber als Child GUI einbetten. Folgend ein Beispiel, welches auch im englischen Forum zu finden ist.

    Das ist mir schon klar, allerdings hast du keine Möglichkeit das Firefox Objekt zu bedienen (bis auf ControlClicks und MouseClicks).

    Der embedded IE erlaubt dir fast alles mit dem Webbrowser über die COM-Schnittstelle.

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™