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

  • Verarbeitung von Daten aus einer .ini Datei

    • alpines
    • 21. Mai 2018 um 13:38
    Zitat von nuts

    Ich würde jetzt gern die .ini am Start des Skript in einem Rutsch einlesen und dann je nach Usereingabe gleich die erforderlichen Daten (key/value Paare der gewählten Sektion) als 2D Array vorliegen haben.

    Nur wie geht das?

    IniReadSectionNames + IniReadSection und du kriegst die gesamte Datei ausgelesen ohne zu wissen, welche Sections und Keys existieren.

    Zitat von nuts

    Man könnte für jede Sektion ein eigenes 2D Array erstellen, aber dann hat man im Skript eine dynamische Anzahl an 2D Arrays

    Rein damit in ein 3D-Array. Du verwendest den ersten Index für die Sektionsauswahl und die anderen beiden Indizes sind für die Keys gedacht.

    Du kannst auch ein Dictionary zum Speichern der Daten verwenden, ob du dann pro Sektion ein Dictionary oder ein globales Dictionary verwendest ist dir überlassen.

    Zum Speichern aus dem Dictionary kannst du über die Keys iterieren und dann in die Ini-Datei schreiben.

  • Variablen aus ini einlesen und vorhandene überschreiben

    • alpines
    • 21. Mai 2018 um 00:07
    Zitat von Slevin

    Vielen Dank alpines, genau das, wonach ich gesucht hatte. Für den Fall, dass noch jemand auf deine Lösung zurückgreifen möchte, könntest du die Codezeile mit dem assign-Befehl um einen Klammerabschluss erweitern?

    Das ist mir im Nachhinein auch aufgefallen und hatte es schon geändert bevor du deine Antworte gepostet hattest :)

    Zitat von Slevin

    1. Warum setzen manche Programmierer einen Unterstrich _ an den Anfang ihrer Funktionen?

    Kanashius hat das schon gut erklärt. Es ist in AutoIt eine Konvention, dass selbsterstelle Funktionen (UDFs) generell mit einem Underscore anfangen.

    Für interne UDF, also Helperfunktionen die von dem User nicht verwendet sollen, verwendet man üblicherweise zwei Underscores.

  • Variablen aus ini einlesen und vorhandene überschreiben

    • alpines
    • 20. Mai 2018 um 18:36

    Ja die gibt es, beispielsweise könntest du mit Execute oder Assign die Zuweisungen übernehmen und dann alles in einer Schleife abklappern.

    Du kannst aber auch beispielsweise IniReadSection verwenden und das eingelesene Array dann mehr oder weniger als Datenstruktur verwenden (nicht zu empfehlen).

    Ersteres hier mal mehr oder weniger Pseudo:

    AutoIt
    Global $timer1, $timer2, $timer3, $timer4, $timer5
    
    ; [n][0] - Varname, [n][1] - Ungleich-Bedingung
    Global $aLoad[][2] = [["timer1", "x"], ["timer2", "x"], ["timer3", "x"], ["timer4", "x"], ["timer5", "x"]]
    
    Func _LoadSettings()
        For $i = 0 To UBound($aLoad) - 1
            If IniRead("ini", "Timers", $aLoad[$i][0], $aLoad[$i][1]) <> $aLoad[$i][1] Then
                Assign($aLoad[$i][0], Int(IniRead("ini", "Timers", $aLoad[$i][0], "0")))
            EndIf
        Next    
    EndFunc
    Alles anzeigen
  • Steuerung zurück zu GUI

    • alpines
    • 19. Mai 2018 um 21:00
    Zitat von xSunLighTx3

    Es gibt schon bestimmte Logiken, die man als Programmier anwenden und einhalten muss,

    ansonsten funktioniert das System nicht.

    Das hatte ich bei meinem Beispielskript schon angedeutet.

    Der Programmflow ist inkonsistent und deshalb ist das einfach schlechtes Programmdesign.

    MessageBoxen sind dazu da um Infos und Fehler anzuzeigen und sie anschließend wegzuklicken.

    Der Nutzer soll nach dem Wegklicken die Eingabemaske verändern und es erneut versuchen aber nicht während die MessageBox noch sichtbar ist.

    Verändert man nämlich während der aktiven MessageBox die GUI, dann bleibt die MessageBox immer noch sichtbar und der Zustand des Programms ist mehr oder weniger undefiniert.

  • Hallo an alle

    • alpines
    • 19. Mai 2018 um 09:46

    Herzlich Willkommen im Forum! :part:

    Zitat von mep

    Eventuell werd ich auch mal ein Paar Skripte vorstellen, wenn ich Zeit habe und es sich lohnt.

    Sowas lohnt sich immer!

  • Mini-PCs

    • alpines
    • 18. Mai 2018 um 11:24

    Das wird aber nicht klappen, da du dann die ARM-Variante von Windows 10 auf dem Raspi läuft (die sind ja glaube ich nur mit ARMs bestückt) und AutoIt x86/x64 compiled.

  • Mini-PCs

    • alpines
    • 18. Mai 2018 um 10:47

    Ich selbst hab einen Intel NUC und muss sagen die Dinger sind richtig geil, das Gerät war winzig, deutlich kleiner als Mini-ITX.

    Wenn es kein neuer werden soll kannst du dich auch auf ebay Kleinanzeigen umsehen, ich hab meinen damals vollausgestattet (ohne W-Lan) für 230€ bekommen.

    Ich kann jetzt aber schon sagen, dass egal was du kaufst mehr oder weniger Overkill für dein Vorhaben sein wird.

    Also überleg ob du den noch andersweitig nutzen willst und entscheide dann welche Ausstattung du nimmst.

  • Steuerung zurück zu GUI

    • alpines
    • 17. Mai 2018 um 15:42

    Dann wechsle in den OnEventModus und schon klappt alles:

    Ist aber trotzdem kein guter Stil und würde ich so nicht empfehlen (der Programmflow ist nicht eindeutig).

    AutoIt
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    Opt("GUIOnEventMode", 1)
    
    $Form1 = GUICreate("Form1", 226, 152, 192, 124)
    GUISetOnEvent(-3, ExitMe)
    
    $Input1 = GUICtrlCreateInput("Input1", 32, 48, 121, 21)
    $Button1 = GUICtrlCreateButton("Button1", 32, 104, 75, 25)
    GUICtrlSetOnEvent(-1, Verify)
    
    GUISetState(@SW_SHOW)
    
    While Sleep(1000)
    WEnd
    
    Func Verify()
        GUICtrlSetState($Button1, $GUI_DISABLE)
    
        Do
            $sBox = GUICtrlRead($Input1)
        Until $sBox = "Banane" or MsgBox(5, "...", "Bitte tippen sie in das Feld Banane ein und klicken auf Wiederholen oder brechen sie ab.") = 2
    
        GUICtrlSetState($Button1, $GUI_ENABLE)
    EndFunc
    
    Func ExitMe()
        Exit
    EndFunc
    Alles anzeigen
  • " in der Command Lline benutzbar ?

    • alpines
    • 16. Mai 2018 um 14:21
    Zitat von xSunLighTx3

    Das ist super! :)

    Als ich damals zum ersten Mal von StringFormat gehört und gelesen habe, dachte ich mir nur: wie unnötig... (dachte ich damals bei OOP auch... xD)

    Aber bei großen Strings und viel Code ist diese Funktion wirklich sinnvoll und angebracht. Es ist aber wirklich ganz leicht, man muss die Funktion nur ein wenig in der Praxis nutzen und dann wird das schon. :S


    Man kann zwar ein Buch lesen, welches 1000 Seiten über das Fahrradfahren erklärt, aber wirklich Fahrrad zu fahren lernt man nur, wenn man sich eins schnappt und auf die Schnauze fällt. :D

    ExpandVarStrings solltet ihr euch auch mal anschauen.

    Wenn ihr diese Opt aktiviert könnt ihr inline im String Variablen übergeben indem ihr sie mit einem vorangehenden und nachträglichen $-Zeichen markiert.

    So muss man nicht erst in den StringFormat-Parametern nach dem richtigen %s suchen sondern hat alles direkt im String.

    Beispiel:

    AutoIt
    Opt("ExpandVarStrings", 1)
    
    Local $sEins = "Test"
    Local $sZwei = "ExpandVarStrings"
    
    MsgBox(0, "", "Das ist ein $sEins$ mit $sZwei$.")
  • Wer schreibt mir kleines Skript für Geld?

    • alpines
    • 15. Mai 2018 um 13:25
    Zitat von recondite

    hab dir ne PN geschrieben

    Guck nochmal in Postkasten hier, hab eine PN gestartet statt der E-Mail zu antworten.

  • Steuerung zurück zu GUI

    • alpines
    • 15. Mai 2018 um 13:23
    Zitat von entsel

    MsgBox(1,"","Anstelle dieser MsgBox sollte die Steuerung wieder an Form 1 zurück gegeben werden")

    Lass die MsgBox weg und fertig, du kannst dann wieder die Radios auswählen und auf den Button klicken.

  • Wer schreibt mir kleines Skript für Geld?

    • alpines
    • 15. Mai 2018 um 13:07

    Ich kann dir das gerne basteln, wenn du Interesse hast können wir ja weiteres über PN besprechen. Meld dich bei Interesse.

    Schaut nicht nach viel Arbeit aus also auch gerne gratis (oder für eine kleine Spende ans Forum).

  • Wer schreibt mir kleines Skript für Geld?

    • alpines
    • 15. Mai 2018 um 12:59

    Ich hab deine Nutzerdaten für die Website zensiert damit keiner mit deinem Account Unfug anstellt.

  • " in der Command Lline benutzbar ?

    • alpines
    • 15. Mai 2018 um 12:02

    $CMD1 = "C:\Winscp\winscp.com /Command ""open sftp://XXX:XXX@XXX/"" ""put C:\" & $DateiName & "test.txt /test/"""

    In deinem Fall.

    Lass dir den String einfach mal in einer MsgBox ausgeben, dann siehst du ob du es richtig gemacht hast oder nicht.

  • Moin moin!

    • alpines
    • 15. Mai 2018 um 11:40

    Herzlich Willkommen im Forum :part:

  • " in der Command Lline benutzbar ?

    • alpines
    • 15. Mai 2018 um 11:40

    Wenn du deine Strings mit Gänsefüßchen definieren willst und im String trotzdem Gänsefüßchen (als Zeichen und nicht als Stringterminierung) verwendet möchtest kannst du einfach zwei hintereinander setzen, der Interpreter wird das erkennen und daraus ein Zeichen machen und nicht als Stringterminierung erkennen.

  • " in der Command Lline benutzbar ?

    • alpines
    • 15. Mai 2018 um 11:30
    Zitat von Springstil

    Durch das Apostroph am Anfang und am ende werden die Anführungszeichen doch nicht mehr als String benutzt somit würde der Befehl doch mit "put C:\" enden und auch so eingetragen werden ?

    Ja hast natürlich recht, da habe ich nicht drauf geachtet.


    Ich persönlich versuche es zu vermeiden meine Strings mit einem Apostroph zu definieren, ich verwende lieber Gänsefüßchen auch wenn im String Gänsefüßchen vorkommen.

    Platziert man zwei hintereinander, so terminiert der String nicht und man kann ohne probleme weitertippen.

    Beispiel: "Das ist ein String ""mit"" Gänsefüßchen."

  • " in der Command Lline benutzbar ?

    • alpines
    • 15. Mai 2018 um 11:18
    Zitat von Springstil

    So funktioniert es wie es soll. ABER jeden Tag ändert sich ja das Datum... Wie bekomme ich also die Variable $DateiName bei Put C:\ **** rein ?

    Genau so wie du es in der Zeile mit RunWait gemacht hast. Wenn dein String "put C:\test.txt" lautet und du nach dem Slash die Variable einfügen möchtest dann terminierst du den String, hängst die Variable an und schreibst den Rest dahinter "put C:\" & $DateiName & "test.txt".

    Achte aber unbedingt darauf, dass am Ende auch alles richtig eingefügt ist.

    Zur Kontrolle kannst du den String mal in einer MsgBox oder inder Konsole anzeigen um zu schauen ob du auch alles richtig gemacht hast.

  • Firefox sauber schließen

    • alpines
    • 14. Mai 2018 um 13:10

    Der Parameter "filename" ist der Pfad zur Datei. Gibst du keinen absoluten Pfad an, sondern nur den Dateinamen, dann wird die Datei im aktuellen @WorkingDir gespeichert.

    options und background werden für etwas ganz anderes verwendet.

  • Firefox sauber schließen

    • alpines
    • 14. Mai 2018 um 12:45

    Dann öffne die Datei doch auch? ShellExecute dient dazu, Dateien auszuführen.

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™