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

Beiträge von Andy

  • Paint

    • Andy
    • 18. November 2009 um 17:53
    Zitat

    Du wolltest doch in einem anderen Forum nach Hilfe suchen. Keine gefunden?

    Dabei hab ich mir SOOO ne Mühe gegeben mit meinem "Paint"-Script.... :rofl::rofl:

    Zitat

    Gibt es nicht andere die solche Probleme haben? Kennt keienr eine Lösung?

    Doch, ICH! Aber da ich schon ein großer Junge bin entscheide ich selbst, wem ich UMSONST helfe und auch wobei. Verarschen lassen muss ich mich auch nicht unbedingt, und da ich vor dem Posten meiner Hilfe gerne mal die "Kandidaten" per Suche in den bisherigen Beiträgen checke, weiss ich zu 95% worauf es bei Threads wie deinem rausläuft.
    Beim nächsten mal also entweder hier geschickter Fragen oder gleich bei den Kollegen im "bösen" Forum, die sind doch auch viiieeel netter als wir! :thumbup:

  • Regular Expression

    • Andy
    • 18. November 2009 um 13:52

    Btw, bauf meinem Rechner gewinnt immer das regex..

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    ; Zeit ab hier

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

    $x = 0
    $y = 0

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

    For $j = 1 To 100
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    $x += TimerDiff($iTimer)

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

    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) - 1
    $aPath[$i] = StringMid($a1[$i], 2, StringInStr($a1[$i], ".zip") - 2) & ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    $y += TimerDiff($iTimer)
    Next

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

    ConsoleWrite('Variante 1 (regex )= ' & $x & @CR)
    ConsoleWrite('Variante 2 (string)= ' & $y & @CR)

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

    $x = 0
    $y = 0

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

    For $j = 1 To 100
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) - 1
    $aPath[$i] = StringMid($a1[$i], 2, StringInStr($a1[$i], ".zip") - 2) & ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    $y += TimerDiff($iTimer)

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

    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    $x += TimerDiff($iTimer)
    Next

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

    ConsoleWrite('Variante 1 (regex) = ' & $x & @CR)
    ConsoleWrite('Variante 2 (string)= ' & $y & @CR)

    [/autoit]

    unabhängig von der Position innerhalb des Scriptes.

    /*EDIT*/ Sackzement ?( , soeben das obige Script auf einem 1,4 GHz PIII getestet....beim ersten Start des Scriptes waren beide Varianten gleich schnell!! Bei jedem weiteren Start war das regex doppelt bis dreimal so schnell.....

  • Regular Expression

    • Andy
    • 18. November 2009 um 13:34

    Das "Problem" unterschiedlicher Laufzeiten von Funktionen je nach Position innerhalb des Scriptes hatte ich auch schon einige Male. Was ich aber schon herausgefunden habe: wenn man prozessor-/plattenintensive (externe) Anwendungen VOR dem Scriptaufruf startet, dann bekommt man in einigen Fällen völlig seltsame Ergebnisse.
    Beim mehrmaligen Start aus Scite heraus sind Geschwindigkeits-Abweichungen von bis zu Faktor 10 keine Seltenheit, seltsamerweise scheint es auch umgekehrt Möglichkeiten zu geben, daß Scripte SCHNELLER laufen als normalerweise. Dabei ist die Geschwindigkeit durchgehend schneller oder langsamer (auf die mittlere Geschwindigkeit bezogen) über die gesamte Scriptlaufzeit.
    Mir ist das beim Testen meines Sudoku-Lösers erstmals richtig aufgefallen. Bei Laufzeiten von einer halben Stunde und mehr sind die schon bekannten "Unzulänglichkeiten" der Timer-Funktionen zu vernachlässigen. D.h. wenn bei einer rechenintensiven Anwendung ein "ungünstiger" Start(zeitpunkt?!) erwischt wurde, dann braucht die Anwendung länger als normalerweise....

    Greek

    Zitat

    Teste doch öfter, wenn man nur einmal testet sind die Werte meistens falsch,

    stimmt, aber genau dein Beispiel "bremst" (je nach äußerem Einfluß) mal die eine, mal die andere Schleife aus! Eigentlich sollte man beide Funktionen in EINE gemeinsame Schleife packen und die einzelnen Laufzeiten dann addieren.

  • Kurze Frage zu Func/whileschleifen

    • Andy
    • 17. November 2009 um 20:41
    Zitat

    Es ist so, dass ich per TCP Nachrichten erhalte und versende

    Was hat DAS mit Sleeps in verschachtelten IF/While/Wend Schleifen zu tun?

    Zitat

    Die Umstellung dauert i.d.R. ~1sek.

    Wieso das?
    Server empfängt Nachricht und schickt ein "Nachricht fehlerfrei empfangen" an den Client. Dieser weiss nun, daß die Nachricht (fehlerfrei) angekommen ist und geht in den Empfangsmodus...Dauer im internen Netz ca 10-20 ms...je nach Länge der Nachricht.

  • gettext from cmd

    • Andy
    • 17. November 2009 um 20:12

    Das klappt so nicht.
    Aus der Hilfe:
    StdoutRead
    Liest vom STDOUT-Stream eines zuvor gestarteten Child-Prozesses ein

    StdoutRead ( process_id[, peek = false[, binary = false]] )
    Parameter:
    process_id Die Prozess-ID eines Child-Prozesses, wie bei einem vorigen Aufruf von Run zurückgegeben


    Ohne Runbefehl und dessen Childparameter kein Stdoutread(). Beispiel:

    [autoit]

    #include <Constants.au3>
    $line=""
    $Console = Run(@ComSpec & " /c dir ", @ScriptDir, @SW_hide, $STDERR_CHILD + $STDOUT_CHILD)
    While 1
    $line &= StdoutRead($Console)
    If @error Then ExitLoop
    WEnd
    MsgBox(0, "STDOUT gesamt:", $line)

    [/autoit]
  • Transparensverlust bei "_GDIPlus_BitmapCloneArea"???

    • Andy
    • 17. November 2009 um 19:47

    Hallo,
    habe einige Zeilen umgestellt und mir mit

    [autoit]

    For $i = 0 To $data[$l][4] Step 1
    $bitmap[$l][$i] = _GDIPlus_BitmapCloneArea($sprite, $data[$l][0]+$spr*$i, $data[$l][1], $spr, $data[$l][3])
    SetBitmap($GUI1, $bitmap[$l][$i], $trans*2.55)
    ConsoleWrite(' $l = ' & $l & ' ' & $i & @crlf) ;### Debug Console
    sleep (3000)
    next

    [/autoit]

    setbitmap() die Sprites angesehen. Keines davon hatte die von dir angesprochene Transparenz.....

  • Kurze Frage zu Func/whileschleifen

    • Andy
    • 17. November 2009 um 19:09

    Die Sleep-Funktion pausiert das Script um einen bestimmten Zeitraum. Wenn das Sleep() im Script für eine bestimmte Aktion nötig ist, beispielsweise das Warten auf eine externe Anwendung, dann wäre es ziemlich schlecht, das Script NICHT diese Zeit warten zu lassen....
    Aber genau das verlangst du! Wasch mich, aber mach mich nicht nass.....

    Zitat

    Die erste Zeile dieser Func lautet sleep(1500)

    Warum?

    Zitat

    Läuft in dieser Zeit die While schleife weiter - werden also die bedingungen weiter abgefragt?

    nein/nein

    Zitat

    Falls nein, wie bekomme ich das hin?

    Nach deiner Beschreibuung garnicht...
    Poste dein Script, es gibt in den meisten Fällen Möglichkeiten den logischen Ablauf zu optimieren. GGf. kann man auch mit den Timer/Adlib-Funktionen arbeiten, dazu muss man allerdings das Script sehen,

  • [gelöst] Netzwerkproblem...

    • Andy
    • 17. November 2009 um 18:31
    Zitat

    Aber dann finde ich immer die Liste net .

    so gehts mir auch, das schlimme am Alzheimer ist, dass man immer vergisst wo die Medikamente liegen^^

  • Regular Expression

    • Andy
    • 17. November 2009 um 18:24

    wobei es seeehr knapp wird^^

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    ; Zeit ab hier
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) -1
    $aPath[$i] = stringmid($a1[$i],2,stringinstr($a1[$i],".zip")-2)& ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    ConsoleWrite('Variante 1 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aPath)

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

    ; Zeit ab hier
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    ConsoleWrite('Variante 2 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aOut)

    [/autoit]
  • Koordinatenkreutz - Negativer Array

    • Andy
    • 17. November 2009 um 12:11
    Zitat

    array könnte halt ziemlich groß werden wenn du alle positionen speichern willst...

    das kommt auf die "Logik" des Lösungsweges an. Selbstverständlich könnte man versuchen, über einen pathfinder-Algorithmus alle Positionen innerhalb des Labyrinths zu erreichen....irgendwann hat man dann zwangsläufig den Ausgang gefunden....
    Ansätze gibt es viele, aber dafür müssen vorher die äusseren Bedingungen definiert werden.
    Ob man Markierungen setzen und/oder Karten vom bisher zurückgelegten Weg machen kann unterscheidet sich doch gewaltig vom Fall "in einer stockdunklen Höhle nackt aus der Bewusstlosigkeit aufgewacht".

  • Editfeld aktualisieren

    • Andy
    • 17. November 2009 um 03:19

    Hallo, habe mal einiges gekürzt/geändert/vereinfacht und auch kommentiert....

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    $ini = @ScriptDir & "\Geburtstage.ini"
    $datum = @MDAY & @MON
    $data = IniReadSection($ini, "Datum") ;alle geburtstage in ein array schreiben

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

    Global $edit_inhalt = "" ;inhalt der inidatei in einen string bringen

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

    If IsArray($data) Then ;wenn es eine inidatei gibt, dann ....
    For $i = 1 To $data[0][0] ;alle daten auslesen
    $edit_inhalt &= $data[$i][0] & " " & $data[$i][1] & @CRLF ;Datum und Name in string schreiben
    Next
    EndIf

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

    GUICreate("TestWindow", 640, 300, -1, -1)
    $input = GUICtrlCreateInput("", 330, 10, 150, 20)
    $nam = GUICtrlCreateLabel("Name Bitte eingeben", 490, 13, 150, 20)
    $save = GUICtrlCreateButton("Speichern", 560, 160, 60, 20)
    $edit = GUICtrlCreateEdit($edit_inhalt, 10, 10, 300, 280)
    $Date = GUICtrlCreateMonthCal("", 330, 70, 200, 200)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $save
    _saveandrefresh() ;daten in ini speichern und in der editbox anzeigen
    EndSwitch
    WEnd

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

    Func _saveandrefresh()
    $test = StringSplit(GUICtrlRead(-1, $Date), "/")
    $dat = ($test[3] & "." & $test[2]) ;Tag.Monat
    IniWrite($ini, "Datum", $dat, GUICtrlRead($input, $nam)) ;ini schreiben
    $edit_inhalt &= $dat & " " & GUICtrlRead($input, $nam) & @CRLF ;inhalt auffüllen
    GUICtrlSetData($input, "") ;inputfeld löschen
    GUICtrlSetData($edit, $edit_inhalt) ;editbox füllen
    EndFunc ;==>_saveandrefresh

    [/autoit]

    Viel Spass beim Sortieren nach Datum und mit einer Anzeige, wer als nächstes Geburtstag hat ^^

  • gettext from cmd

    • Andy
    • 17. November 2009 um 02:40

    poste mal dein script....

  • µit Light Dezember '09

    • Andy
    • 17. November 2009 um 02:39
    Zitat

    allerdings ist das für mich zu harter Tobak


    Damit rollt Stilgar gerade den µIt Dezember auf. Ich habe nicht gedacht, daß er sich da so reinkniet :huh:
    Schau dir mal sein Script an, ich hab alleine 10 Minuten gebraucht um zu kapieren was die erste regex macht^^. Aber das soll uns ja nicht davon abhalten selbst aktiv zu werden.
    Im Startpost vom µIt habe ich einen Link zu einer ganzen Reihe von Optimierungsmöglichkeiten. Da sollte eigentlich von einfach bis schwierig für jeden was dabei sein^^

  • gettext from cmd

    • Andy
    • 17. November 2009 um 00:18

    Welche Methoden hast du probiert und welchen Text willst du auslesen?
    Schon

    [autoit]

    StdoutRead($Console)

    [/autoit]

    probiert?

  • Koordinatenkreutz - Negativer Array

    • Andy
    • 17. November 2009 um 00:14
    Zitat

    Jaja, das ist mir kla

    scheint nicht so^^. Oben links ist der Nullpunkt, damit alle Koordinaten positiv werden beim Laufen in egal welche Richtung. Dein Standort ist bei x=2^16 y=2^16 für den schlechtesten Fall, Ausgang ist oben links und du bist unten rechts oder umgekehrt. Dann muss dein Labyrinth ganz schön gross sein, wenn du da aus dem Zahlenbereich rausläufst (Maximum bis 2^32)

  • [gelöst] Netzwerkproblem...

    • Andy
    • 16. November 2009 um 17:54

    hehe, ich habe nur Links bei der Suche nach DNS und Kabeldeutschland bekommen, die sich mit den seltsamen Gepflogenheiten dieses Unternehmens bzgl ihrer eigenen DNS beschäftigten^^. Allerdings waren die meisten Berichte schon älter wie ein Jahr, aber auch ein blindes Huhn trinkt gern nen Korn :D

  • Reload aus der Config.

    • Andy
    • 16. November 2009 um 15:58
    [autoit]

    $reloadzeitausini=300 ;300 sekunden = 5 minuten

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

    $t=timerinit() ;timestamp merken
    Do
    if timerdiff($t)/1000 > $reloadzeitausini then ;wenn die reloadzeit abgelaufen ist
    $t=timerinit() ;timestamp merken
    _reloadwebsite() ;website laden
    endif
    until GUIGetMsg()=-3

    [/autoit]
  • Reload aus der Config.

    • Andy
    • 16. November 2009 um 15:48
    Zitat

    und wird Straftätlich verfolgt

    :rofl: made my day :rock:

  • [gelöst] Netzwerkproblem...

    • Andy
    • 16. November 2009 um 15:19

    oki, weiter gehts :thumbup:
    Hänge den Problemrechner ans Modem und trage dann in den Eigenschaften von TCP/IP mal bei den DNS Serveradressen eine oder zwei der folgenden DNS-Adressen ein.

    Zitat

    Liste frei verwendbarer DNS-Server

    Die folgenden Nameserver können als Ersatz der Provider-eigenen Nameserver verwendet werden (zum Zeitpunkt der Erstellung dieser Liste, keine Garantie wie lange sie frei verfügbar sind)
    85.214.73.63 (anonymisierungsdienst.foebud.org)
    204.152.184.76 (f.6to4-servers.net, ISC, USA)
    2001:4f8:0:2::14 (f.6to4-servers.net, IPv6, ISC)
    194.150.168.168 (dns.as250.net; anycast DNS!)
    213.73.91.35 (dnscache.berlin.ccc.de)
    80.237.196.2
    194.95.202.198

    Alles anzeigen

    Könnte sein, daß der DNS- Server von Kabel Deutschland nicht der schnellste ist oder Google nicht leiden kann^^

    Alternativ könntest du noch testen, ob du, wenn du im Browser direkt die IP-Adresse statt des domainnamens eingibst, die Probleme trotzdem hast.

  • CPU Auslastung Auslesen

    • Andy
    • 16. November 2009 um 14:41

    Hallo, schau mal HIER, dort sind die Funktionen exakt beschrieben.

    Zitat

    Ist CurrentCpu() schon die Variable?

    Ja, die Rückgabe erfolgt in Prozent. In deinem Beispiel könntest du z.B. schreiben

    [autoit]


    Run("calc.exe")
    WinWaitActive("Rechner")
    WinActivate("Rechner")
    Send("!a") ;ansicht
    Sleep(200)
    Send("w")
    Sleep(100)
    ControlSend("Rechner", "", "[CLASS:Edit; INSTANCE:1]", "964535464756") ;zahl ins editfeld
    Sleep(100)
    ControlClick("Rechner", "", "Button35") ;fakultät

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

    Do ;solange wiederholen .....

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

    $t = TimerInit() ;timerstamp merken
    Do ;solange wiederholen...
    Sleep(100) ;bissl warten
    ToolTip("Prozessorlast " & _GetCPUUsageOld() & " %") ;Last anzeigen
    Until TimerDiff($t) > 4000 Or _GetCPUUsageOld() > 5 ;....bis die Zeit über 4 Sekunden oder die Last über 5% ist

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

    Until _GetCPUUsageOld() < 5 ;....bis 4 Sekunden lang die CPU-Last unter 5% ist

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

    MsgBox(0, 0, "Die CPU-Auslastung war 4 Sekunden lang unter 5%")

    [/autoit]


    Der erste Teil des Scriptes startet den Windows Taschenrechner und berechnet die Fakultät einer großen Zahl (100% Prozessorlast).Währenddessen sollte in der Toolbox die Prozessorlast stehen. Nach einigen Sekunden fragt der Taschenrechner nach, ob er weitermachen soll oder anhalten. Dann auf Anhalten klicken. 4 Sekunden nachdem auf "Anhalten" geklickt wurde, erscheint die Messagebox.

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™