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

Beiträge von nuts

  • Resoursenfresser

    • nuts
    • 16. April 2009 um 17:32
    Zitat von Oscar

    Um die CPU-Last zu reduzieren, einfach ein Sleep(50) in die While...WEnd-Schleife.


    Hm das hab ich jetzt schon häufiger gelesen. Könnte man mal kurz darlegen: Wieso? Bei welchen Schleifen? Spielt der Code in der Schleife eine Rolle?

  • Rechnen mit Kommazeichen.

    • nuts
    • 16. April 2009 um 15:29

    Naja theoretisch könnte doch der ganze Aufbau mit "," bleiben und nur wenn in einer Variablen ein Zahlenwert übergeben wird wirkt eben das Komma wie ein Punkt.
    So stell ich mir das in meinem jugendlichen Leichtsinn vor ;)

  • Rechnen mit Kommazeichen.

    • nuts
    • 16. April 2009 um 15:10

    Nagut - die englische Schreibweise war mir jetzt nicht bekannt.

    Hierzulande werden Zahlen aber (zum Glück) anders dargestellt (10.000,00 -> englische Schreibweise: 10,000.00 ? <- wie sieht das denn aus?)

    Man bräuchte also eine deutsche Autoit version, die Kommas als Dezimaltrennzeichen bei Zahlenwerten vorsieht.
    Wird aber vielleicht unsinnig beim Übersetzen in C++ (Basis von Autoit soweit ich weiss) wird dann das Komma wieder zum Punkt.

    Wie auch immer - ich passe mein Skript an :P

  • Rechnen mit Kommazeichen.

    • nuts
    • 16. April 2009 um 14:28

    Keine Ahnung - ich kann nur Autoit :D

    Excel z.B. hat kein Problem (Autoit mit Umwandlung auch nicht aber naja) damit und auch sonst ist es üblich Dezimalstellen mit einem Komma abzutrennen.

  • Rechnen mit Kommazeichen.

    • nuts
    • 16. April 2009 um 14:12

    Ok danke schonmal für die ganzen Antworten.

    Fazit: Ums Umwandeln von 4,5 -> 4.5 komme ich nicht rum?

  • Rechnen mit Kommazeichen.

    • nuts
    • 16. April 2009 um 11:44

    Genau so behelfe ich mir derzeit. Ist aber doch total umständlich.
    Ich muss ja dann das ganze auch wieder zurückkonvertieren.

  • Rechnen mit Kommazeichen.

    • nuts
    • 16. April 2009 um 11:22

    hey,

    ich habe mal wieder ein blödes Problem :thumbdown:

    und zwar .. hab ich ein Programm mit Listview und will darin verschiedene Werte addieren (oder subtrahieren).
    Allerdings wird beim eingeben mit "," eben nichts gerechnet.

    4,5 + 5 -> geht nicht
    4.5 + 5 -> 9,5

    Aus Verständnisgründen möchte ich aber im Listview die Nachkommastellen eben mit einem Komma abtrennen und nicht mit einem Punkt (wo gibts denn sowas?).
    Gibts dafür eine einfache, schnelle Lösung?
    Man könnte vor dem Rechenvorgang 4,5 in 4.5 umwandeln und dann das Ergebnis wieder durch ein Komma dastellen.
    Ist jetzt aber irgendwie nicht so wie ich mir das vorgestellt hab.

    Gibt dafür kein: GUIDataSeparatorChar oder sowas ähnliches?

    Gruß nuts

  • Problem mit RegRead

    • nuts
    • 15. April 2009 um 15:36
    [autoit]


    $test = $wowpath & "\wow.exe"
    msgbox(1, "", $test)

    [/autoit]


    So? Ich verstehe das Problem nicht so wirklich ?(

  • Savegame Backup Programm

    • nuts
    • 15. April 2009 um 14:49

    Hey,

    ich hab noch paar Vorschläge:

    1. Bei der Pfadauswahl einen Button mit FileSelectFolder Funktion einbauen
    2. Beim Schließen der Neben GUi-Fenster (Pfadauswahl usw.) sollte man vielleicht nicht das Hauptprogramm beenden.
    3. Möglichkeit alle Quellverzeichnisse zu sehen. (einfach: shellexecute auf die .ini - schwieriger: z.B. per Listview)

    getestet hab ichs noch nicht - wird aber, soweit ich das gesehen hab, immer besser! :thumbup:

  • Per Array und For..Next Schleifen einen Vorgang x-mal wiederholen?

    • nuts
    • 14. April 2009 um 21:37

    Genau.

  • Per Array und For..Next Schleifen einen Vorgang x-mal wiederholen?

    • nuts
    • 14. April 2009 um 20:31

    Dann machs doch wie in meinem Post darüber vorgeschlagen.

    Den C:\Sicherung\Savegames Ordner speicherst du in einer Extra Section (der bleibt ja immer gleich) und die Unterordner werden über das auslesen des Keys erstellt (bzw. = Zielverzeichnis für Direcopy)

    Also eine Section für den Pfadnamen (und was dir sonst noch so einfällt) und eine Section für die Quellverzeichnisse, diese wird dann mit Inireadsection durchgearbeitet (Key = "Name" des Unterordners --> prüfen ob er erstellt werden muss; Value = Quellverzeichnis).

  • Per Array und For..Next Schleifen einen Vorgang x-mal wiederholen?

    • nuts
    • 14. April 2009 um 20:12

    Also wenn du alles einfach einlesen willst eignet sich vielleicht ein .txt File besser.
    Dabei würden folgende Funktionen helfen: Fileopen, Filereadline, Stringsplit und eine While - Wend Schleife (sorry gerade keine Zeit mehr für ein Beispiel)

    Soll denn jeder Zielpfad getrennt eingebbar sein? Sinnvoll wäre doch ein Backupfolder mit Unterordnern zum jweiligen Spiel oder?

  • Per Array und For..Next Schleifen einen Vorgang x-mal wiederholen?

    • nuts
    • 14. April 2009 um 18:37

    Soweit warn wir doch schon fast?

    Spoiler anzeigen
    Zitat von nuts
    [autoit]

    #include <array.au3.>
    Global $ini = IniReadSection(@ScriptDir & "\games.ini", "quelle") ;alle Key der Section in ein Array schreiben
    _ArrayDisplay($ini) ;zum besseren Verständnis
    For $i = 1 to $ini[0][0]
    msgbox(1, "", $ini[$i][0]) ;Col 0 -> Key
    msgbox(1, "", $ini[$i][1]) ; Col 1 -> Value
    ;deine Funktion
    next

    [/autoit]

    Die .ini sieht dann so aus:

    Code
    [Quelle]
    Call of Duty 5=C:\Dokumente und Einstellungen\Benne\Lokale Einstellungen\Anwendungsdaten\Activision\
    Black & White 2=C:\Dokumente und Einstellungen\Benne\Eigene Dateien\Black & White 2

    So kannst du mit Dircreate erstmal den Ordner erstellen

    [autoit]

    Dircreate($ziel & "\" & $ini[$i][0])

    [/autoit]

    . Anschließend mit Dircopy die Files kopieren usw.

    Alles anzeigen


    Jetzt fehlen noch die entsprechenden Infos für den Zielpfad. Wie soll das genau aussehen? Für jedes Ziel eine eigener Pfad? Oder für alle Spiele ein Pfad mit Unterordnern?

    edit \ Habs mal vorläufig für die Quelle in dein Script eingebaut

    Spoiler anzeigen
    [autoit]


    #include <array.au3.> ;für _Arraydisplay
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;####################GUI Zone######################
    #Region ### START Koda GUI section ### Form=d:\daten\autoit\koda\forms\backup1.kxf
    $Form1_1 = GUICreate("Savegame Backup Programm", 633, 306, 119, 455)
    $Label1 = GUICtrlCreateLabel("Savegame Backup Programm", 160, 32, 329, 39)
    GUICtrlSetFont(-1, 18, 800, 0, "Comic Sans MS")
    $Sichern = GUICtrlCreateButton("Sichern", 88, 120, 201, 57, 0)
    GUICtrlSetFont(-1, 18, 800, 0, "Comic Sans MS")
    $Zielpfad = GUICtrlCreateButton("Zielpfad", 344, 120, 201, 57, 0)
    GUICtrlSetFont(-1, 18, 800, 0, "Comic Sans MS")
    $Pfadewechseln = GUICtrlCreateButton("Savegame Pfade ändern/hinzufügen!", 88, 192, 201, 25, 0)
    $Fortschritt = GUICtrlCreateProgress(88, 248, 457, 33)
    $Zielwechsel = GUICtrlCreateButton("Zielpfad ändern!", 344, 192, 201, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;###################GUI Zone#######################

    [/autoit] [autoit][/autoit] [autoit]

    ;###################SubGUI#########################
    #Region ### START Koda GUI section ### Form=D:\Daten\AutoIt\Koda\Forms\BackupSub.kxf
    $SubGUI = GUICreate("Zielpfad ändern!", 350, 116, 444, 326)
    $Pfad = GUICtrlCreateInput("Pfad", 16, 32, 313, 21)
    $SubGuiText = GUICtrlCreateLabel("Bitte den genauen (!) Pfad hier reinschreiben! ", 16, 8, 220, 17)
    $SubGuiText2 = GUICtrlCreateLabel("Bsp. C:\Sicherung\Games", 96, 96, 129, 17)
    $SubButton = GUICtrlCreateButton("Ändern!", 48, 64, 249, 25, 0)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###
    ;#####################SubGUI########################

    [/autoit] [autoit][/autoit] [autoit]

    $AlterPfad = IniRead ("Savegames.ini", "Standart", "Ziel", "Error")
    If $AlterPfad = "Error" Then
    MsgBox (1, "Fehler", "Der Standart Pfad kann nicht ausgelesen werden.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;##################Schleife#########################
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Zielpfad
    MsgBox (0, "Ziel", "Der Standart Zielpfad ist: "&$AlterPfad)
    Case $Sichern
    Global $ini = IniReadSection(@ScriptDir & "\games.ini", "quelle") ;alle Keys der Section in ein Array schreiben
    _ArrayDisplay($ini) ;zum besseren Verständnis
    For $i = 1 to $ini[0][0]
    msgbox(1, "", $ini[$i][0]) ;Col 0 -> Key
    msgbox(1, "", $ini[$i][1]) ; Col 1 -> Value
    DirCopy ( $ini[$i][1], $Ziel, 1) ; beim Ziel weiss ich nicht genau wie du es haben willst - deine If Abfragen einfach noch mit in die For Schleife packen
    next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $Pfadewechseln
    ShellExecute ( @ScriptDir & "\Savegames.ini" )
    Case $Zielwechsel
    GUISetState(@SW_SHOW, $SubGUI)
    Case $SubButton
    $IniOffen = FileOpen ("Savegames.ini",0)
    $AktuelleIni = FileRead ($IniOffen)
    $IniGeschlossen = FileClose ($IniOffen)
    $NeuerPfad = GUICtrlRead ($Pfad)
    $Ersetzen = StringReplace ($AktuelleIni, $AlterPfad, $NeuerPfad)
    MsgBox (1, "Erfolg", $Ersetzen)
    FileDelete (@ScriptDir&'\Savegames.ini')
    FileWrite ("Savegames.ini", $Ersetzen)
    GUISetState (@SW_HIDE, $SubGUI)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ;################Schleife###########################

    [/autoit]
  • Savegame Backup Programm

    • nuts
    • 9. April 2009 um 22:00

    Hier das gewünschte Beispiel:

    [autoit]

    #include <array.au3.>
    Global $ini = IniReadSection(@ScriptDir & "\games.ini", "quelle") ;alle Key der Section in ein Array schreiben
    _ArrayDisplay($ini) ;zum besseren Verständnis
    For $i = 1 to $ini[0][0]
    msgbox(1, "", $ini[$i][0]) ;Col 0 -> Key
    msgbox(1, "", $ini[$i][1]) ; Col 1 -> Value
    ;deine Funktion
    next

    [/autoit]

    Die .ini sieht dann so aus:

    Code
    [Quelle]
    Call of Duty 5=C:\Dokumente und Einstellungen\Benne\Lokale Einstellungen\Anwendungsdaten\Activision\
    Black & White 2=C:\Dokumente und Einstellungen\Benne\Eigene Dateien\Black & White 2

    So kannst du mit Dircreate erstmal den Ordner erstellen

    [autoit]

    Dircreate($ziel & "\" & $ini[$i][0])

    [/autoit]

    . Anschließend mit Dircopy die Files kopieren usw.
    Per Dirgetsize kann man auch Quell und Zielordner vergleichen um quasi eine Art Überprüfung des Kopiervorgangs zu haben.

    Wenns noch Fragen gibt einfach melden.

  • Savegame Backup Programm

    • nuts
    • 9. April 2009 um 13:14

    Könnt man noch optimieren indem man alle Quellpfade in eine Section schreibt und dann mit Inireadsection jeden Eintrag nacheinander durchgeht.
    Hat auch den Vorteil, dass man nachträglich einfach Einträge hinzufügen kann ohne im Quellcode rumzupfuschen.

    Ist eigentlich nicht so schwierig, bei Bedarf kann ich auch nachher ein Beispiel posten (hab kein autoit hier am pc).

    edit\ Du willst also einen Ordner im Zielpfad mit dem Namen der Section (bei meinem Vorschlag wäre das dann der Key) erstellen und dort die jeweiligen Daten ablegen?
    Bei deiner Variante hilft IniReadSectionNames - bei meinem Vorschlag reicht Inireadsection, die Info über den Ordnernamen steht auch schon im Array (der Key).

  • Problem mit HotKeySet

    • nuts
    • 4. April 2009 um 18:06

    Ich weiss nicht ob ichs richtig verstehe: Das Skript soll immer wieder die gleiche Nachricht in den Chat schreiben bis der Chat von dir wieder in den Vordergrund geholt wird?

    Zitat von sLaXX


    Hier der Code

    Spoiler anzeigen
    [autoit]

    HotKeySet ("{F4}", "afk")
    while 1
    sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func afk()
    $title = wingettitle ("- Chat")

    [/autoit] [autoit][/autoit] [autoit]

    while 1
    Do
    Winactivate ( " - Chat" ) ;hier wird das Fenster im zweiten Durchgang nicht mehr gefunden
    WInwaitactive (" - Chat")
    Send ("Hallo,ich bin gerade beschäftigt!")
    send ("{enter}")
    sleep (100)
    Send ("Ich werde sobald ich Zeit hab antworten!")
    Send ("{enter}")
    FileWrite ( "chat.txt",$title)
    Sleep (100)
    WinClose ( " - Chat" ) ;hier wird das Fenster geschlossen
    Until WinWaitActive ( " - Chat")
    Wend
    EndFunc

    [/autoit]
    Alles anzeigen
  • Problem mit GUI: GUI Fenster lässt sich nicht in den Status @SW_SHOW versetzen

    • nuts
    • 4. April 2009 um 16:40

    Bei mir gehts - _NewGamePressed() hat nen "Syntaxfehler" (?).

    [autoit]


    Func _NewGamePressed()
    GUISetState( @SW_HIDE,$SingleplayerGui)
    Sleep(100)
    GUISetState( @SW_SHOW, $NewGameGui)
    EndFunc

    [/autoit]

    deine Version

    [autoit]

    Func _NewGamePressed()
    GUISetState($SingleplayerGui, @SW_HIDE)
    Sleep(100)
    GUISetState($NewGameGui, @SW_SHOW)
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _NewGameGUIBackPressed()
    GuiSetState($NewGameGui, @SW_HIDE)
    Sleep(100)
    GUISetState($MainGUI, @SW_SHOW)
    EndFunc

    [/autoit]
  • GUIListView Problem

    • nuts
    • 4. April 2009 um 14:31
    [autoit]


    GUIRegisterMsg($WM_NOTIFY, "_DoubleClickOnListView")
    ; usw.

    [/autoit][autoit][/autoit][autoit]

    Func _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $hListView Then;Wenn der Klick auf das ListView ging..
    If $event = $N_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; deine Funktion wie oben beschrieben mit _GUICtrlListView_GetItemSelected
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

    [/autoit]

    oder meinst du sowas? ist jetzt für einen Doppelklick, lässt sich aber auch für einen normalen Klick umbauen (IF $event = ..... (steht hier drin: <WindowsConstants.au3>)

  • ListView Items speichern

    • nuts
    • 3. April 2009 um 13:35

    https://autoit.de/index.php?page=Thread&amp;threadID=8902

    Hat mir sehr geholfen das Listview besser zu verstehen.

  • bild wird nicht angezeigt

    • nuts
    • 31. März 2009 um 15:59

    Bei mir wirds angezeigt, sicher das der Pfad stimmt?

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™