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

Beiträge von Moombas

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 11:26
    Zitat von casi4712

    aber auch einfach gehts nicht

    Bedeutet auch mit meiner Änderung nicht?

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 10:35

    1. Warum hast du Filewrite doppelt?

    2. Ändere das mal wie folgt:

    Code
    Case $hButton
               FileOpen($file); Das brauchst du trotzdem, da du die Datei (richtigerweise) nach dem Einlesen schließt!
               if FileWrite($file, GuiCtrlRead($IEdit)) then
                 MsgBox(0,"Fertig!","Datei wurde gespeichert!")
               Else
                 MsgBox(0,"Fehler!","Datei konnte nicht gespeichert werden!")
               Endif
               FileClose($file)

    Zusätzlicher Tipp: Sollte sich der Inhalt von $file nicht ändern, empfehle ich, diese zudem auch als Const zu definieren.

  • Editfeld updaten

    • Moombas
    • 24. Juni 2022 um 14:57

    Btw.: Das Suchwort "Update" ist hierbei auch vollkommen verkehrt.

    Das was du willst, ist:

    1. Datei öffnen/lesen (Fileopen), hast du ja gefunden

    2. In das Edit den Inhalt schreiben

    3. Den Inhalt auslesen

    4. Das ausgelesene in eine Datei schreiben

  • Editfeld updaten

    • Moombas
    • 24. Juni 2022 um 14:51

    Selber noch nicht gebraucht aber das müsste so gehen (ungetestet):

    Code
    ;Inhalt der Datei in das Edit schreiben
    GUICtrlSetData($iEdit, $file)
    
    ;Von Edit in Datei schreiben
    Filewrite($file, GUICtrlRead($iEdit))

    Siehe dazu die Hilfe:

    Function GUICtrlSetData

    Function GUICtrlRead

    Function FileWrite

  • Variable nach einem String benennen $($string)

    • Moombas
    • 23. Juni 2022 um 13:21

    Etwas dynamischer könntest du das machen, indem du auch die Funktionen zu den einzelnen Buttons in ein entsprechendes Array packst und dann so ausführst (die beiden Zahlen müssten immer zusammen passen und die Funktion muss es natürlich geben):

    AutoIt
    ;Nur als Beispiel
    $rechnerfunc[] = [1, 'Test()']
    ;...
    Case $rechnerbtn[1]
        Execute($rechnerfunc[1])
    
    ;...
    Func Test()
        ConsoleWrite('Works')
    EndFunc
  • Variable nach einem String benennen $($string)

    • Moombas
    • 23. Juni 2022 um 12:16

    Einen Tipp noch: Das Ubound ist unnötig, sofern dein $rechnerarr durch Stringsplit gefüllt wird und nicht explizit $STR_NOCOUNT mit angegeben wurde.

    Du kannst das einfacher so setzen: Global $rechnerbtn[$rechnerarr[0]]

  • Variable nach einem String benennen $($string)

    • Moombas
    • 22. Juni 2022 um 10:27

    Das was du möchtest, kenne ich nur mit einem Buttonarray. Beispiel: https://www.autoitscript.com/forum/topic/12…create-buttons/

  • Variable nach einem String benennen $($string)

    • Moombas
    • 22. Juni 2022 um 10:07

    Zumal du im Code damit dann garnicht arbeiten kannst.

    Du kennst den Variablennamen nicht und kannst ihn dann gar nicht ansprechen.

    Im Code musst du deine Variablennamen durchaus Sinnvoll wählen.

    Assign($Arrayname, $data, $ASSIGN_FORCEGLOBAL) ist das Gleiche wie Global $Arrayname = $data bzw.

    Assign($Arrayname, 'Daten', $ASSIGN_FORCEGLOBAL)  ist das Gleiche wie Global $Arrayname = 'Daten'

    (Ich bevorzuge dir korrekten Konstanten zu nutzen anstatt der Zahl)

    Ich weiß nicht ob man deinen Wunsch mit "Execute()" hin bekommen könnte, halte es aber nach wie vor für nicht Sinnvoll.

  • Outlook Mail mit eingebetteten Bildern im Body Text als versteckte Anhänge

    • Moombas
    • 17. Juni 2022 um 10:41

    Und wenn du dir das erforderliche aus einem Beispiel holst. Sprich: erstelle eine Mail mit Outlook mit eingebettetem Bild, speichere diese Mail dann als html und schaue dir den code an.

    Da ich aktuell nicht weiß wie du in der UDF der Text etc. zusammengesezt wird, weiß ich nicht ob dir das hilft aber einen Versuch wäre es doch Wert.

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 15. Juni 2022 um 08:15

    casi4712 : Das Problem hierbei war schlicht und einfach: Du hast viele If-Bedingungen aber nie den "not" bzw. "else" Fall bearbeitet. Wenn du den Stecker ziehst ist das Ergebnis wohl kein Objekt und du springst somit früher raus, wofür es keine Behandlung gab, in allen anderen Fällen jedoch funktionierte.

    Versuch mal immer auch den "Else" Fall abzuarbeiten. Wenn de rcode steht kannst du immer noch schauen ob du diese besser zusammen fassen kannst (was hier bei Velted und meiner letzten Variante der Fall ist). Dann stolperst du weniger.

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 14. Juni 2022 um 12:47

    casi4712 :Mit der Änderung aus Beitrag #52 könnte es klappen. Gelesen hast du es ja schon, wie sieht es mit einem Test aus?

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 14. Juni 2022 um 11:14

    Velted Ob du das nun mit Return rausspringen und ansonsten das letzte Guictrlsetdata ausführst oder das mit dem else block oben machst (wie es in meiner Änderung steht) ist vollkommen egal und eher Geschmackssache (ich mag lieber klare Else definitionen). Aber eine Sache fällt mir beim Schreiben durchaus auf: Für alle anderen "Else" Fälle gibt es keine Definition in meiner Variante und somit keine Rücksetzung, daher:

    casi4712 : Entweder du nimmst die Variante von Velted oder mach es so:

    AutoIt
    Func _ActiveIP()
    Local $objAdapter
    Local $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $sHost & "\root\cimv2")
        $IP      = 'kein Netz' ;Auf Default zurücksetzen
        $Gateway = ''          ;Auf Default zurücksetzen
        If IsObj($objWMIService) Then
            Local $colAdapter = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", "WQL", 0x30)
            If IsObj($colAdapter) Then
                For $objAdapter In $colAdapter
                    If ($objAdapter.IPAddress(0)) Then
                        If $objAdapter.DefaultIPGateway(0) Then
                            If IsString($objAdapter.IPAddress(0)) And _
                               IsString($objAdapter.DefaultIPGateway(0)) Then
                                $IP = $objAdapter.IPAddress(0)              ;Wird nur gesetzt, wenn etwas gefunden wurde
                                $Gateway = $objAdapter.DefaultIPGateway(0)  ;Wird nur gesetzt, wenn etwas gefunden wurde
    ;~                          Exitloop                     ;Optional! Mit Exitloop: Ausgabe ERSTER Fund, Ohne Exitloop: Ausgabe LETZTER Fund!                            
                            EndIf
                        EndIf
                    EndIf
                Next
            Endif
        EndIf
        GUICtrlSetData($IPLabel, $IP)  ;Wird immer gesetzt: Default, wenn nichts gefunden wurde oder die IP
    EndFunc   ;==>_ActiveIP
    Alles anzeigen
  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 14. Juni 2022 um 10:02

    Tipp: Bau dir zu Testzwecken ein manuelles Auslesen (auf einen Button, der dann deine Funktion aufruft (inkl. einer Ausgabe in einer MsgBox ($objAdapter.IPAddress(0)) oder so und ohne die Adlib registrierung) wenn du ihn drückst).

    Dann schaut du was er dir ausgibt, nachdem du das Kabel gesteckt hast und nochmal nachdem du es gezogen hast.

    Du musst nun step by Step das Problem finden.

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 13. Juni 2022 um 15:46

    Nein, ich meine diese hier (hier fehlt immer noch das Auskommentieren in Zeile 103, siehe unten). Und pack mal das Return hinter die if Abfrage (bzw. das kann eigentlich weg, da du nichts zurück gibst)), das habe ich versehentlich mit rein kopiert.:

    Code
        If ($objAdapter.IPAddress(0)) Then
            If $objAdapter.DefaultIPGateway(0) Then
                If IsString($objAdapter.IPAddress(0)) and _
                   IsString($objAdapter.DefaultIPGateway(0)) Then
                    $IP = $objAdapter.IPAddress(0)
                    GUICtrlSetData($IPLabel, $IP)
                    $Gateway = $objAdapter.DefaultIPGateway(0)
    ;-              GUICtrlSetData($GatewayLabel, $Gateway)
                Else
                    GUICtrlSetData($IPLabel     , "Kein Netz")
    ;-              GUICtrlSetData($GatewayLabel, "")
                Endif
            EndIf
        EndIf
    ;-  Return ;wird eigentlich nicht benötigt, da du keinen Wert zurück gibst.
    Alles anzeigen

    Und ob du wirklich alle !50! Millisekunden die Abfrage laufen lassen willst, solltest du dir echt überlegen.

    Das bedeutet, das diese Abfrage 20mal je Sekunde läuft und ist daher total überdimensioniert. Die Default 250ms sind schon in Ordnung, wobei auch 500ms gehen würden.

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 13. Juni 2022 um 14:53

    Wenn du meine Änderung noch drinne hast, finde ich es nicht unlogisch.

    Denn, nun wird geprüft ob du wirklich einen String zurück bekommst, ansonsten konnte er es nicht auslesen = keine Verbindung.

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 13. Juni 2022 um 14:17
    Zitat von Musashi

    Meines Wissens ist eine, außerhalb einer Funktion, deklarierte Variable immer global, auch wenn sie mit Local deklariert wurde. Die Verwendung von Global ist aber 'transparenter' :) .

    Nur am Rande : Auf Dim zur Variablendeklaration sollte man lt. Hilfe ja eh verzichten.

    Ich weiß aber hier scheint noch viel Unwissenheit zu herrschen beim TE (nicht böse gemeint), daher sollte man alles klar definieren um zu Wissen was/wie läuft.

    Deswegen empfehle ich ja auch die Verwendung von #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 bzw. Opt('MustDeclareVars', 1)

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 13. Juni 2022 um 13:36

    Noch ein Nachtrag, da ich es gerade gesehen habe (unabhängig von meinem vorherigen Post):

    Du deklarierst hier Variablen immer noch falsch:

    Code
    ;Zeile 27/28:
    Local $sHost= "localhost" ;Außerhalb einer Funktion deklariert, also muss hier Global stehen!
    Local $Gateway, $nMsg     ;Außerhalb einer Funktion deklariert, also muss hier Global stehen!
  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 13. Juni 2022 um 13:26

    Sorry, eine Zeile vergessen auszukommentieren aber mein Copebeispiel war nichts für F5!

    Das war komplett unabhängig zu betrachten.

    Aber kommentiere die Zeile mal aus, wie ich es obennachkommentiert habe, dann sollte es funktionieren.

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 13. Juni 2022 um 12:10

    Schon mal geprüft, was du überhaupt als Rückgabewert bekommst in dem nicht funktionierenden Fall (Consolewrite() und per F5 starten)?

    Bei folgendem bitte korrigieren falls ich falsch liege:

    Bau mal folgendes ein (bzw. ersetze Zeile 101-113):

    Code
    For $objAdapter In $colAdapter
        If ($objAdapter.IPAddress(0)) Then
            If $objAdapter.DefaultIPGateway(0) Then
                If IsString($objAdapter.IPAddress(0)) and _
                   IsString($objAdapter.DefaultIPGateway(0)) Then
                    $IP = $objAdapter.IPAddress(0)
                    GUICtrlSetData($IPLabel, $IP)
                    $Gateway = $objAdapter.DefaultIPGateway(0)
    ;-              GUICtrlSetData($GatewayLabel, $Gateway)
                    Return
                Else
                    GUICtrlSetData($IPLabel     , "Kein Netz")
    ;-              GUICtrlSetData($GatewayLabel, "")
                Endif          
            EndIf
        EndIf
    Next
    Alles anzeigen
  • Ich muss lernen NEIN zu sagen.

    • Moombas
    • 13. Juni 2022 um 11:12
    Zitat von Alina

    Ich muss überzeugt werden, wenn man andere Meinung ist oder andere Vorstellungen eines Lösungsweges hat. Ansonsten bin ich stur. Meistens zumindest. Leider, das gebe ich auch zu, bin ich zu oft zu verbissen. Wenn ich für etwas eine Lösung haben möchte, dann muss es die auch geben. Das kann dann auch schon mal Tage oder Wochen dauern, bis ich sage "Dann halt nicht". Das kann Arbeitszeit kosten und das ist dann nicht unbeding first class.

    Das kommt mir irgendwie bekannt vor :rofl:

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™