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

Beiträge von autoBert

  • $ES_Number für Dezimalwerte

    • autoBert
    • 5. November 2011 um 02:25

    vielleicht gibt dir ja https://autoit.de/index.php?page=Thread&threadID=11870 Inspiration wie du soetwas in einer eigenen Gui lösen kannst,

    mfg autoBert

  • Relaiskarte mit AutoIT steuern, aber wie?

    • autoBert
    • 4. November 2011 um 23:27

    Du scheinst der einzigste zu sein zumindest spukt die SuFu nichts dafür aus. Wie wäre es also mit etwas Dokumentation zu der Karte, auch das VB-Programm wäre hilfreich,

    mfg autoBert

  • ComboList Dropdownlist und Scrollleiste

    • autoBert
    • 4. November 2011 um 23:00

    Erzeuge dein ComboBox so:

    [autoit]

    $idcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25,BitOr($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_DISABLENOSCROLL, $WS_VSCROLL,$WS_TABSTOP))

    [/autoit]

    dann hast du eine Leiste. Diese ist solange inaktiv wie die Box ausreicht ohne scrollen zu müssen. Verantwortlich ist $CBS_DISABLENOSCROLL,

    mfg autoBert

    mfg autoBert

  • Variable mit shellexeute verbinden

    • autoBert
    • 4. November 2011 um 19:29
    Zitat von peethebee

    Wozu denn über FTP? HTTP ist dafür viel besser geeignet, weil du keine Login-Daten rausgeben musst, mit denen jemand Unsinn auf deinen Webspace laden (und den nächsten Updatesuchenden verseuchen) kann.

    Oder habe ich etwas übersehen? ;)

    Johannes

    Ich kenn mich mit HTTP-Funktionen (noch) nicht aus, aber auch dort müssen ja irenddwie die Anmeldedaten übergeben werden. Klick auch mal auf den 1.Link in meinem vorherigen Beitrag. Wenn ich das ftp durch http ersetze bekomme ich 404 Seite nicht gefunden.

    mfg autoBert

  • Prozessliste in Combobox laden mit Icons

    • autoBert
    • 4. November 2011 um 17:52

    Hallo volle,

    wühl dich mal durch die Skripte von UEZ, er hat soetwas gemacht,

    mfg autoBert

  • Variable mit shellexeute verbinden

    • autoBert
    • 4. November 2011 um 17:45

    Hallo Xentus,

    Hast du schon einmal veruscht ftp://www.xentusxentis.xe.funpic.de in einem Browser aufzurufen. Ich denke nein, denn sonst wüstest du warum es nicht funktioniert. Je nach Art der Anmeldung kann es so klappen:

    Code
    ftp://myuser:mypassword@www.xentusxentis.xe.funpic.de

    User und Passwort müssen natürlich stimmen. Wenn nicht musst du auf die FTP-Funktion

    [autoit]

    _FTP_FileGet

    [/autoit]

    ausweichen. Sieh dir dazu das Beispiel in der Hilfe an,

    mfg autoBert

  • Aus der Listbox in Zeilen auslesen

    • autoBert
    • 4. November 2011 um 16:10
    Zitat von BadBunny

    Ich denke er meint | aber das wird doch allgemein als Trennzeichen bei erstellen eines ListView benutzt, also entstehen einzelne Spalten. (Essen | Preis z.B.)

    Zitat von Xentus

    Jenau :D

    na dann habe ich wohl mein Beispiel mit der ComboBox (geht auch mit ListBox) wohl umsonst gemacht,

    mfg autoBert

  • [Beispiel] mini-Downloader

    • autoBert
    • 4. November 2011 um 08:28

    Angeregt durch https://autoit.de/index.php?page…8348#post238348 habe ich einmal ein kleines Beispielskript eines einfachen Downloaders erstellt:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: AutoBert: http://www.autoit.de/index.php?page…4341#post164341

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

    Skriptbeispiel für den Umgang mit INI-Files und ComboBox
    #ce ----------------------------------------------------------------------------

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

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiComboBox.au3>
    #include <StaticConstants.au3>
    ;#include <Array.au3>

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

    Const $sElect = "bitte einen Download auswählen"
    Global $sUrl ;ausgewählte DownloadUrl
    Global $sIni = @ScriptDir & "\Download.INI" ;Pfad zur Inidatei
    Global $sLocalFolder ;letztes Verzeichnis in das gespeichert wurde
    Global $aData[3] ;Download-Infos
    Global $iFileSize ;Grösse des DL-Files
    Global $tStart ;Download gestartet
    Global $nKBPerSec ;KB pro Sekunde
    Global $iPercent ;aktuell heruntergeladenen Prozentanteil der Datei

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

    If Not FileExists($sIni) Then
    $sData = "AutoIt 3.3.6.1=http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe" & @LF
    $sData &= "AutoIt Beta=http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-v3.3.7.20-beta-setup.exe" & @LF
    $sData &= "Scite=http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe" & @LF
    $sData &= "dt. Hilfe=http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-27_05_11.zip" & @LF
    $sData &= "Organize Includes=http://www.autoitscript.com/forum/index.php?app=core&module=attach&section=attach&attach_app=core&module=attach&section=attach&attach_id=29947" & @LF
    IniWriteSection($sIni, "URLs", $sData)
    EndIf

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

    $hGui = GUICreate("mini-Downloader", 300, 105, 302, 218)
    $idcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25)
    $idbtnAdd = GUICtrlCreateButton("&Hinzufügen", 213, 8, 80)
    $idbtnDel = GUICtrlCreateButton("&Löschen", 213, 35, 80)
    $idprgInfo = GUICtrlCreateProgress(8, 70, 285, 30)
    GUICtrlSetState(-1, $GUI_HIDE)
    $idlblInfo = GUICtrlCreateLabel("", 2, 72, 282, 25, $ES_CENTER)
    GUICtrlSetFont(-1, 14, 2000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetState(-1, $GUI_HIDE)
    $idbtnDL = GUICtrlCreateButton("&Downloaden", 8, 35, 200)
    GUICtrlSetState($idbtnDL, $GUI_DISABLE)
    read_INI()
    GUISetState(@SW_SHOW)
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.16") ;sonst streiken manche Freehoster wenn der AutoItUseragent gesetzt ist

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    IniWrite($sIni, "Path", "Local", $sLocalFolder)
    Exit
    Case $idbtnAdd
    $write1 = InputBox("Downloadadresse", "Bitte eine gültige Download-Adresse eingeben")
    If $write1 <> "" Then
    $write2 = InputBox("Download verwalten unter", "Bitte Kurzbegriff eingeben")
    If $write2 <> "" Then IniWrite($sIni, "URLs", $write2, $write1)
    GUICtrlSetData($idcboProg, $write2, $write2)
    EndIf
    get_Selection()
    Case $idbtnDel
    $sDel = GUICtrlRead($idcboProg)
    IniDelete($sIni, "URLs", $sDel)
    GUICtrlSetData($idcboProg, "")
    read_INI()
    Case $idcboProg
    get_Selection()
    Case $idbtnDL
    ;get_Selection()
    $bCanceld = False
    GUICtrlSetData($idbtnDL, "Download &abbrechen")
    $aDatei = StringSplit($sUrl, "/")
    $sDatei = $aDatei[$aDatei[0]]
    $sLocal = FileSaveDialog($sDatei & "Speichern unter", $sLocalFolder, "Alle (*.*)", 18, $sDatei, $hGui)
    If Not @error Then
    GUICtrlSetState($idprgInfo, $GUI_SHOW)
    GUICtrlSetState($idlblInfo, $GUI_SHOW)
    GUICtrlSetData($idlblInfo, "Download startet")
    $aTmp = StringSplit($sLocal, "\")
    $sLocalFolder = $aTmp[$aTmp[1]]
    $iFileSize = InetGetSize($sUrl)
    $hDL = InetGet($sUrl, $sLocal, 1, 1)
    $tStart = TimerInit()
    $aData[0] = 0
    Do
    $bCanceld = _MySleep(250)
    If $bCanceld Then ExitLoop
    $aData = InetGetInfo($hDL, -1)
    If $aData[0] > 0 Then
    $tDiff = TimerDiff($tStart)
    $nKBPerSec = Round($aData[0] / $tDiff * 1000 / 1024, 2)
    $iPercent = Round($aData[0] / $iFileSize * 100, 2)
    If GUICtrlRead($idlblInfo) <> $iPercent Then
    GUICtrlSetData($idprgInfo, $iPercent)
    GUICtrlSetData($idlblInfo, $iPercent & " % " & $nKBPerSec & " KB/sec")
    WinSetTitle($hGui, "", "DL: " & $sDatei & " " & $iPercent & "%")
    EndIf
    EndIf
    Until $aData[2]
    InetClose($hDL)
    ;_ArrayDisplay($aData)
    If $aData[0] < $aData[1] Then $aData[3] = False ;dummerweise werden nur DL-Fehler auf meiner Seite erkannt es kommt aber vo das der DL aus anderen Gründen nicht erfolgreich war
    If $aData[0] < $iFileSize Then $aData[3] = False ;dummerweise werden nur DL-Fehler auf meiner Seite erkannt es kommt aber vo das der DL aus anderen Gründen nicht erfolgreich war
    If Not $aData[3] Then
    If $bCanceld Then
    $sMsg = "Download wurde durch Benutzer abgebrochen"
    Else
    $sMsg = "Download hat abgebrochen," & @CRLF & "überprüfen sie Ihre Internetverbindung." & @CRLF & @CRLF & "Probieren Sie danach noch einmal!"
    EndIf
    MsgBox(48, "Fehler:", $sMsg)
    FileDelete($sLocal)
    Else
    GUICtrlSetState($idbtnDL, $GUI_DISABLE)
    GUICtrlSetData($idcboProg,$sElect,$sElect)
    MsgBox(64, $sLocal, "erfolgreich heruntergeladen")
    EndIf
    Else
    MsgBox(48, "Fehler:", "keinen Namen zum Speichern ausgeählt")
    EndIf
    GUICtrlSetData($idprgInfo, 0)
    GUICtrlSetData($idlblInfo, 0)
    GUICtrlSetState($idlblInfo, $GUI_HIDE)
    GUICtrlSetState($idprgInfo, $GUI_HIDE)
    GUICtrlSetData($idbtnDL, "&Downloaden")
    WinSetTitle($hGui, "", "mini-Downloader")
    EndSwitch
    WEnd

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

    Func _MySleep($iMSec)
    Local $nMsg, $dt = TimerInit()
    Do
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idbtnDL
    Return 1; DL Abbrechen wurde gedrückt
    EndSwitch
    Sleep(10)
    Until TimerDiff($dt) > $iMSec
    EndFunc ;==>_MySleep

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

    Func read_INI()
    $list1 = IniReadSection($sIni, "URLs")
    ;ConsoleWrite($list1 & @CRLF)
    If IsArray($list1) Then
    For $i = 1 To $list1[0][0]
    GUICtrlSetData($idcboProg, $list1[$i][0])
    Next
    EndIf
    _GUICtrlComboBox_InsertString($idcboProg, $sElect, 0)
    _GUICtrlComboBox_SetCurSel($idcboProg, 0)
    $sLocalFolder = IniRead($sIni, "Path", "Local", @ScriptDir)
    EndFunc ;==>read_INI

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

    Func get_Selection()
    If GUICtrlRead($idcboProg) = $sElect Then
    GUICtrlSetState($idbtnDL, $GUI_DISABLE)
    GUICtrlSetData($idlblInfo, "")
    Else
    GUICtrlSetState($idbtnDL, $GUI_ENABLE)
    $Prog = GUICtrlRead($idcboProg)
    ;ConsoleWrite("ausgewählt: " & $Prog & @CRLF)
    $sUrl = IniRead($sIni, "URLs", $Prog, "")
    EndIf
    EndFunc ;==>get_Selection

    [/autoit]

    Die vorbelegten Dateien in der INI sollten sich alle Anfänger herunterladen. Ich weis dass man dies mit einer Listview viel schöner lösen kann aber wie gesagt aufgrund des o.g. Themas habe ich diese Beispiel auf Basis einer Combobox geschrieben. Wenn man anstatt einer Combo ein List erstellt funktioniert das Skript genauso. Profis wundern sich vielleicht über die Zeilen 105 u. 106, dies ist ein Workaround da InetGetInfo nicht immer den korrekten Status ob der DL erfolgreich war zurückgibt.

    Hier noch ein ScreenShot: Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Falls jemanden der Skriptaufbau bekannt vorkommt, richtig es ist aus meinem Mini-Urlmanager abgeleitet.

    Edits: Link dieses Themas in Skript eingefügt. AutoIt-Tag korrigiert, Dem Kind einen anderen Namen gegeben, kleine Schönheitskorrekturen im Skript (Variablennamen, eine überflüssige Zeile entfernt, nach erfolgreichem DL wird DL-Button gesperrt und die "bitte wählen"-Aufforderung erscheint in der ComboBox)

    mfg autoBert

    Bilder

    • cboDL.JPG
      • 15,73 kB
      • 310 × 137
  • Aus der Listbox in Zeilen auslesen

    • autoBert
    • 4. November 2011 um 07:52
    Zitat von Xentus

    Doppel Post hier erlaubt ?


    Doppelposts sind unerwünscht.

    ändere

    [autoit]

    If $List1 = ("Download") then

    [/autoit]

    in

    [autoit]

    If GuiCtrlRead($List1) = ("Download") then

    [/autoit]

    ich würde an deiner Stelle die Listbox gegen eine Listview tauschen ein kleines Beispiel siehst du hier: https://autoit.de/index.php?page…98920#post98920 . Die Informationen für die Items solltest du natürlich aus ein CSV- oder INI-Datei auslesen.

    Edit: bin gerade am schreiben eines Beispiel-Downloaders, werde ihn später in Skripte veröffentlichen.

    mfg autoBert

  • Dateiinhalt mit einem anderen Ergänzen

    • autoBert
    • 3. November 2011 um 00:58
    Zitat von autoBert

    Warum schreibst du jedsmal einen neuen Log? Hänge deine Log-Einträge doch einfach hinten an!


    Ach ja geht ja angeblich nicht weil der alte Log auf dem FTP-Server liegt, siehe:

    Zitat

    Warum löscht du dann deinen alten LOG lokal, anstatt in weiter zu führen und den aktuellen Stand hochzuladen?

    Edit: Im bösen Forum (in dem du mehr Beiträge hast als hier) vermuten sie schon dass dies eine Art Keylogger sein soll. Ich meine eher das einfahren der Beute, sprich ein Steal-Script hat die ausspionierten Log-Files auf deinen FTP übertragen.

    Deshalb und auch wegen mangelnder Mitarbeit (im anderen Thema wurden dir genügend brauchbare Hinweise gegeben) Vote for CLOSE von beiden Themen

    mfg autoBert

  • Drag and Drop mit mehrer Datein

    • autoBert
    • 2. November 2011 um 23:19
    Zitat von Amateur

    Danke :)
    Eine kleine Frage habe ich noch.
    Wie kann man, wenn man jetzt mehrere Dateien in der Liste hat, mehrere markieren und herauslöschen.
    Zurzeit kann man nur eines markieren und löschen

    Da bei derErstellung des LV-Controls ohne Style-Angaben

    Zitat

    Standard (-1) : $LVS_SHOWSELALWAYS, $LVS_SINGLESEL
    Erzwungener Stil : $LVS_REPORT

    enthalten ist kannst du nur eines auswählen. Wenn du deine LV so:

    [autoit]

    $listview = GUICtrlCreateListView("Name |Dateityp |Dateipfad ", 0, 0, 530, @DesktopHeight-200,BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))

    [/autoit]

    erstellst kannst du mehrere auswählen. Zum löschen kannst du dann

    [autoit]

    _GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($listview))

    [/autoit]

    verwenden, dazu benötigst du noch

    [autoit]

    #Include <GuiListView.au3>

    [/autoit]

    am Skriptanfang. Das auslösen der Löschfunktion kann über einen Button geschehen oder eleganter durch ein Contextmenü:

    [autoit]

    $idContextmenu = GUICtrlCreateContextMenu($listview )
    $idDeletemenu = GUICtrlCreateMenu("Löschen...", $idContextmenu)
    $idDeleteAll = GUICtrlCreateMenuItem("Alle Einträge", $idDeletemenu)
    $idDeleteitem = GUICtrlCreateMenuItem("ausgewählte Einträge", $idDeletemenu)

    [/autoit]

    das du nach dem Erstellen der LV einbinden kannst. In [Beispiel] NeMP3-P (MP3-Player) Version 0.8.4.7 habe ich dies gemacht, ist zwar im OnEventMode geschrieben lässt sich aber leicht in den GuiGetMsg-Mode umsetzen,

    mfg autoBert

  • _FFLinkClick simulator funktioniert nicht.

    • autoBert
    • 2. November 2011 um 19:43

    Hallo Lupar,

    dein Beispiel verlinkt auf dieses Thema. In diesem Thema gibt es aber keinen Link der mit "Ordner" beschriftet ist. Also kann auch keiner dein Beispiel zum Laufen bringen.

    Edit: ich denke du versucht dir Unterstützung zu erschleichen für das Umgehen der Forenregeln, die du ja schon mit https://autoit.de/index.php?page=Thread&amp;threadID=29576 gebrochen hast, deshalb:

    Vote for Close

    mfg autoBert

  • Dateiinhalt mit einem anderen Ergänzen

    • autoBert
    • 2. November 2011 um 19:28

    Warum schreibst du jedsmal einen neuen Log? Hänge deine Log-Einträge doch einfach hinten an!

    Edit: warum dieses Doppelthema, das hast doch in https://autoit.de/index.php?page=Thread&amp;threadID=29556 schon einmal gefragt?

    mfg autoBert

  • Loop Problem

    • autoBert
    • 2. November 2011 um 18:59

    Hallo Ilse,

    einfach _MySleep($iWunschZeit) die Zeit wie lange insgesamt (Falls kein Abbruch) gewartet werden soll übergeben. Ich hatte da ja einen Zufallswert eingetragen.

    meistertogo: auch HotKeys werden erst abgearbeitet wenn die MsgBox bestätigt ist, wäre in Ilses Skript ja kein Problem da ein TimeOut von 1 Sekunde gesetzt ist.

    mfg autoBert

  • Überschreibungsschutz

    • autoBert
    • 2. November 2011 um 01:46

    Um eine Datei zu erzeugen benötigt es keinen RegEx, funktioniert auch so:

    [autoit]

    $sDir = @ScriptDir
    $sFile = "Test"
    $sExt =".txt"

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

    $i = 1
    Do
    $sTmp = $sDir & "\" & $sFile & $i & $sExt
    $i += 1
    Until Not FileExists($sTmp)
    ConsoleWrite($sTmp & @TAB & "wird angelegt!" & @crlf)
    FileWrite($sTmp, "Test")

    [/autoit]
    Zitat von iFreak95

    Ich hab noch ne Frage, wie kann ich das hier einbauen?

    [autoit]


    $Open = _FTPOpen('MyFTP Control')
    $Conn = _FTPConnect($Open, $server, $username, $pass)
    $Ftpp = _FtpPutFile($Conn, $file, "/Privat/" & "test.zip")
    $Ftpc = _FTPClose($Open)

    [/autoit]

    Du solltest

    [autoit]

    _FTP_FilePut

    [/autoit]

    aus der <FTPEx.au3> verwenden. Schau dir das Beispiel dazu aus der Hilfe an.

    mfg autoBert

  • [HILFE] Programm hängt sich auf

    • autoBert
    • 2. November 2011 um 01:29
    Zitat von TheLuBu

    Ich frage mich nur, warum du überaupt die Return Werte genutzt hast?
    Beim Switch brauch man keinen Return Wert.

    Zitat von Tw0F1sh1337

    Um vll. mein Problehm zu lösen....

    Dann stell das komplette Skript ein in dem Auszug ergibt es jedenfalls keinen Sinn und mit dem Schnipsel brauchst du dich auch nicht wundern wenn du keine Hilfe bekommst.

    mfg autoBert

  • OnEvent Problem

    • autoBert
    • 2. November 2011 um 00:09
    Zitat von dost0011

    Zitat von »Raupi«Es ist vollkommen normal, das der Abbrechen Button währen einer laufenden Unterfunktion nicht reagiertWas ist, wenn diese Unterfunktion nur ein Sleep über 50 Sekunden ist? Gibt es dann keine Möglichkeit?

    Gibt es: du must den Sleep in einer eigen Funktion in kleine Teile stückeln und innerhalb dieser Funktion mit

    [autoit]

    GuiGetMsg

    [/autoit]

    reagieren. Damit GuiGetMsg funktionieren kann muss am Anfang deiner func der OnEventMode ausgeschaltet und am Ende wieder eingeschaltet werden:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Form1 = GUICreate("Form1", 438, 89, 192, 132)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Loop = GUICtrlCreateButton("Loop-Start", 32, 24, 179, 49)
    GUICtrlSetOnEvent(-1, "Page")
    $Loopinfo = GUICtrlCreateButton("Loop-Stop", 240, 24, 179, 49)
    GUICtrlSetOnEvent(-1, "Stop")
    GUISetState(@SW_SHOW)
    $bStop = True

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

    While 1
    Sleep(10)
    WEnd

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

    Func Page()
    $bStop = False
    _MySleep(Random(100000, 999000,1))
    EndFunc ;==>Page

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

    Func Stop()
    $bStop = True
    ConsoleWrite("STOP" & @CRLF)
    EndFunc ;==>info

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

    Func _MySleep($iMSec)
    Opt("GUIOnEventMode", 0)
    Local $i, $nMsg, $dt = TimerInit()
    Do
    $i += 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Loopinfo
    Stop()
    EndSwitch
    Sleep(10)
    if TimerDiff($dt) > $iMSec Then $bStop = True
    ConsoleWrite($i & @CRLF)
    Until $bStop
    Opt("GUIOnEventMode", 1)
    EndFunc ;==>_MySleep

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    mfg autoBert

  • Loop Problem

    • autoBert
    • 1. November 2011 um 19:48
    Zitat von meistertogo

    Hallo Ilse,
    alternativ zu Raupis Lösung könntest Du auch den GUIOnEventMode verwenden, da dann das Abfragen von GUIGetMsg unnötig wird.

    [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit]


    Definitiv falsch, auch beim GuiOnEventMode werden Events (Tastendruck) erst nach dem Beenden einer laufenden Func abgearbeutet, alos genau das gleiche Problem.

    hier eine Lösung im GuiGetMsg-Modus:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 438, 89, 192, 132)
    $Loop = GUICtrlCreateButton("Loop-Start", 32, 24, 179, 49)
    $Loopinfo = GUICtrlCreateButton("Info", 240, 24, 179, 49)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Loop
    Page()
    Case $Loopinfo
    info()
    EndSwitch
    WEnd

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

    Func Page()

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

    For $i = 1 To 10
    ConsoleWrite($i & @CRLF)
    _MySleep($i * Random(100, 999))
    Next

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

    EndFunc ;==>Page

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

    Func info()

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

    MsgBox(0, "", "test", 1)

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

    EndFunc ;==>info

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

    Func _MySleep($iMSec)
    Local $nMsg, $dt = TimerInit()
    Do
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Loopinfo
    info()
    EndSwitch
    Sleep(10)
    Until TimerDiff($dt) > $iMSec
    EndFunc ;==>_MySleep

    [/autoit]

    Und hier das ganze im OnEventMode:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $Form1 = GUICreate("Form1", 438, 89, 192, 132)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Loop = GUICtrlCreateButton("Loop-Start", 32, 24, 179, 49)
    GUICtrlSetOnEvent(-1, "Page")
    $Loopinfo = GUICtrlCreateButton("Info", 240, 24, 179, 49)
    GUICtrlSetOnEvent(-1, "Info")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(10)
    WEnd

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

    Func Page()

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

    For $i = 1 To 10
    ConsoleWrite($i & @CRLF)
    _MySleep($i * Random(100, 999))
    Next

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

    EndFunc ;==>Page

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

    Func info()

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

    MsgBox(0, "", "test", 1)

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

    EndFunc ;==>info

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

    Func _MySleep($iMSec)
    Opt("GUIOnEventMode", 0)
    Local $nMsg, $dt = TimerInit()
    Do
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Loopinfo
    info()
    EndSwitch
    Sleep(10)
    Until TimerDiff($dt) > $iMSec
    Opt("GUIOnEventMode", 1)
    EndFunc ;==>_MySleep

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    Mit WM_Command könnte es evtl auch während der Anzeige einer MsgBox funktionieren, ich denke aber diese Lösung reicht aus,

    mfg autoBert

  • Bilder Upload auf Webserver

    • autoBert
    • 1. November 2011 um 07:24

    Hallo iFreak95,

    da du schon auf gelöst gesetzt hast gehe ich davon aus du hast

    [autoit]

    _FTP_FilePut

    [/autoit]

    in der Hilfe gefunden. Falls du das Skript in fremde Hände gibst solltest du daran denken das ein im Quelltext hinterlegtes Passwort nicht vor Zugriff geschützt ist.

    mfg autoBert

  • array was in split steht ersetzen und in txt schreiben

    • autoBert
    • 1. November 2011 um 04:40
    Zitat von name22

    Das kann so kein Schwein entziffern.

    Naja Schweine können afaik nicht lesen. Ich hab mir mal die Mühe gemacht, hier das Ergebnis:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <file.au3>
    #include <array.au3>
    #include <string.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 334, 317, 414, 145)
    $kartenblatt = GUICtrlCreateInput("5409", 16, 40, 137, 21)
    $Label1 = GUICtrlCreateLabel("Kartenblatt Nummer", 8, 16, 97, 17)
    $falsch = GUICtrlCreateInput("Hohenleimbach", 16, 112, 257, 21)
    $richtig = GUICtrlCreateInput("bratwurst", 16, 192, 257, 21)
    $Label2 = GUICtrlCreateLabel("ändere in", 16, 168, 48, 17)
    $Label3 = GUICtrlCreateLabel("Suche Name", 16, 88, 66, 17)
    $suche = GUICtrlCreateButton("SUCHEN", 24, 264, 75, 25, 0)
    $Exit = GUICtrlCreateButton("Abrechen", 136, 264, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $suche
    suche()
    Case $GUI_EVENT_CLOSE, $Exit
    Exit
    EndSwitch
    WEnd

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

    Func suche()
    $kb = GUICtrlRead($kartenblatt)
    $wrong = GUICtrlRead($falsch)
    $right = GUICtrlRead($richtig)
    ;### felder voll `?
    If $kb = "Nummer" Or $kb = "" Then
    MsgBox(0, "!!!", "kartenblatt fehlt")
    Return
    EndIf
    If $wrong = "Ort" Or $wrong = "" Then
    MsgBox(0, "!!!", "falscher ort fehlt")
    Return
    EndIf

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

    If $right = "Ort" Or $right = "" Then
    MsgBox(0, "!!!", "richtiger ort fehlt")
    Return
    EndIf

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

    $list = _FileListToArray(@WorkingDir, "*.txt")

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

    For $a = 1 To $list[0] ;durch alle Textdateien gehen
    Dim $read
    _FileReadToArray(@WorkingDir & "\" & $list[$a], $read)
    Dim $aNew[$read[0]][15]
    For $iRow =1 To $read[0] ;Spaltenüberschriften müssen in dieser Version mit eingelesen werden
    $aSplit = StringSplit($read[$iRow], @TAB)
    If $aSplit[7] = $kb And $aSplit[8] = $wrong Then $aSplit[8]= $right ;wenn falscher Ort für diese Kartennr. dann mit richtigem ersetzen
    for $iCol = 1 to $aSplit[0] ;alle Spalten in das neue Array übertragen
    $aNew[$iRow-1][$iCol-1] = $aSplit[$iCol]
    Next
    Next
    _WriteNewArrayToFile(@WorkingDir & "\" & $list[$a] & ".New",$aNew) ;Neue Datei abspeichern
    Next
    MsgBox(0, "bing", "Fertig... ")
    Exit
    EndFunc ;==>suche

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

    Func _WriteNewArrayToFile($sFile, ByRef $a2D,$sRowDelimiter=@CRLF,$sColDelimiter=@TAB)
    ;author autoBert
    ;Parameter: $sFile Name der neuen Datei
    ; $$a2d 2D-Array das zurückgespeichert werden soll
    ; $sRowDelimiter Zeilentrennzeichen
    ; $sColDelimiter Spaltentrennzeichen
    Local $hFile = FileOpen($sFile,2)
    for $iRow = 0 to UBound($a2D) -1
    for $iCol = 0 to UBound($a2D,2)-1
    FileWrite($sFile,$a2D[$iRow][$iCol])
    if $iCol = UBound($a2D,2)-1 Then
    FileWrite($sFile,$sRowDelimiter)
    Else
    FileWrite($sFile,$sColDelimiter)
    EndIf
    Next
    Next
    FileClose($sFile)
    EndFunc

    [/autoit]

    getestet habe ich mit diesen Daten:

    Code
    FILENAME	YEAR	FILM	SERIE	PICT_NR	DATE	TXT1	TXT2	TXT3	TXT4	KAT1	KAT2	KAT3	KAT4
    G180400101.JPG	G	1804	01	001	03.05.2011 11:24:50	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400201.JPG	G	1804	01	002	03.05.2011 11:25:02	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400301.JPG	G	1804	01	003	03.05.2011 11:25:18	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400401.JPG	G	1804	01	004	03.05.2011 11:25:40	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400501.JPG	G	1804	01	005	03.05.2011 11:26:14	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400601.JPG	G	1804	01	006	03.05.2011 11:26:22	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400701.JPG	G	1804	01	007	03.05.2011 11:26:48	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400801.JPG	G	1804	01	008	03.05.2011 11:26:52	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180400901.JPG	G	1804	01	009	03.05.2011 11:26:56	5409	Steinbergerhof	D-HSEP	M	g	F	F
    G180401002.JPG	G	1804	02	010	03.05.2011 11:33:34	5409	Hohenleimbach	D-HSEP	M	g	F	F
    G180401102.JPG	G	1804	02	011	03.05.2011 11:33:54	5409	Hohenleimbach	D-HSEP	M	g	F	F
    G180401202.JPG	G	1804	02	012	03.05.2011 11:34:42	5409	Hohenleimbach	D-HSEP	M	g	F	F
    G180401302.JPG	G	1804	02	013	03.05.2011 11:35:02	5409	Hohenleimbach	D-HSEP	M	g	F	F
    G180401402.JPG	G	1804	02	014	03.05.2011 11:35:22	5409	Hohenleimbach	D-HSEP	M	g	F	F
    Alles anzeigen

    dragula: diesen Service bekommst du aber nicht jeden Tag, also in Zukunft an die Ratschläge von name22 halten und für jeden lesbare Skripte und Daten bereitstellen. Und nun viel Spass damit,

    mfg autoBert

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™