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

Beiträge von BugFix

  • Mit 1. GUI eine 2. Aufrufen aber 1. reagiert nicht mehr :(

    • BugFix
    • 17. April 2009 um 19:17

    Zu dem Thema haben wir wirklich mindestens 50 Beiträge. Bitte benutze mal die Suche.
    Nur kurz: Man sollte am Skriptbeginn alle GUI erstellen und bei Bedarf mit GUISetState die entsprechende einblenden.


    Zitat von simon

    Nichts aber er hat mich in der Shoutbox vorhing dazu gefragt und ich musste jetzt weg

    @simon:
    Ich möchte nicht mit Kanonen auf Spatzen schießen, deshalb noch keine Warnung, nur ein letztmaliger Hinweis:
    OffTopic-Posts gehören auch in das entsprechende Unterforum, von wenigen Ausnahmen abgesehen. Dass du weg mußt kannst du auch per PN oder in der SB mitteilen.
    Ich mache dich deshalb darauf aufmerksam, weil Pee dich heute bereits wegen deiner sinnfreien Kurzposts und ich dich wegen Nichtbenutzung des Editmodes angemahnt haben.
    Also, respektiere unsere Forenregeln.

  • Wochentag- Feiertagsermittlung

    • BugFix
    • 17. April 2009 um 19:04
    Zitat von funkey

    Was hat es mit den Jahren 1583 und 8201 auf sich?


    Das sind die Jahresgrenzen für die eine Ermittlung von Schaltjahren gesichert ist.
    Seit 1583 gilt der Gregorianische Kalender mit der aktuellen Schalttagesregelung.
    Es verbleibt jedoch immer noch eine Differenz, die sich bis zum Jahr 8201 summieren wird. Es ist heute noch nicht geregelt, wie dann damit umgegangen werden soll (z.B. einmalig 2 Schalttage?).
    Laß uns dann noch mal drüber reden :rofl:

  • Wochentag- Feiertagsermittlung

    • BugFix
    • 17. April 2009 um 18:48

    Hab mal auf die aktuelle Version angepaßt und auch etwas "aufgefrischt", s. Post 1. ;)

  • Liste

    • BugFix
    • 17. April 2009 um 14:42

    Hier war der Fehler:

    [autoit]

    Case $erntenbutton
    $read = GUICTrlRead($angepflanztes)
    If $read = "" Then ; Du hattest statt Leerstring auf ein Leerzeichen geprüft!!
    GUICtrlSetBKColor($feld,0x8C4600)
    Else
    MsgBox(0,"Ernten","Du willst also folgendes ernten:" & @CRLF & $read)
    $List1CurSel = _GUICtrlListBox_GetCurSel ($angepflanztes)
    _GUICtrlListBox_DeleteString ($angepflanztes, $List1CurSel)
    $geld += 120
    GUICTrlSetDAta($geldanzeige,$geld)
    EndIf

    [/autoit]


    Und vereinfache mal die Befüllung der Listen:

    [autoit]

    $listview = GUICtrlCreateList("",530,40,200,200)
    GUICTRlSetDAta(-1,"Weizen|Gerste|Rüben|Salat|Mais|Klee|Gras")

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

    $kaufliste = GUICTrlCreateList("",770,40,200,200)
    GUICTrlSetData(-1,"Traktor 1|Traktor 2|Pflug|Sämaschiene|Mähdräscher|Eigenes Haus|Kartoffelernter|Mähwerk|Rübenvollernter|Halle 1|Halle 2")

    [/autoit]

    ;)

  • Execute funktioniert nicht

    • BugFix
    • 17. April 2009 um 14:09

    Hier ist der Fehler:
    $Split1 = StringSplit($Source, @CRLF) ==> du hattest @LF

    Und du solltest in deine Schleife noch einfügen:

    [autoit]

    If $Split1[$FNLoop] = '' Then ContinueLoop

    [/autoit]
  • regex in der ifschleife

    • BugFix
    • 17. April 2009 um 13:43

    Probier mal so:

    [autoit]

    $click = StringRegExp($var,"^(\d{1,4})\,(\d{1,4})$",1)
    If @extended Then MouseClick("left",$click[0],$click[1],1)

    [/autoit]
  • Execute funktioniert nicht

    • BugFix
    • 17. April 2009 um 13:31

    Aber warum machst du es dir so schwer?
    Ist folgendes nicht viel einfacher?

    [autoit]

    ; PlugIn erstellen:
    $plugin1 = @ScriptDir & '\plugin1.au3'
    FileWrite($plugin1, _
    "For $FNLoop = 1 To 5" & @CRLF _
    & @TAB & "MsgBox(0,'Test','Loop ' & $FNLoop)" & @CRLF & _
    "Next")

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

    ; PlugIn ausführen
    RunPlugIn($plugin1)

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

    Func RunPlugIn($PluginPath)
    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $PluginPath & '"')
    EndFunc

    [/autoit]
  • Execute funktioniert nicht

    • BugFix
    • 17. April 2009 um 13:18

    Also nochmal:
    - Execute erlaubt nur einen Befehl / Befehlszeile
    - jede Schleife besteht aber aus: Befehl Schleifenanfang + Befehl(e) in der Schleife + Befehl Schleifenende

    Versuch doch mal: For $i=0 To 20 auszuführen ;) ==> geht nicht!
    Und darum macht Execute das auch nicht.

  • Execute funktioniert nicht

    • BugFix
    • 17. April 2009 um 12:59

    Ich meinte nicht Codezeile, sondern Programmzeilen.
    So kannst du einen Ein-Zeilen-Code mit Schleife ausführen:

    [autoit]

    If FileWrite(@TempDir & "\temp.script.au3", _
    'For $FNLoop = 5 To 10' & @CRLF & _
    'MsgBox(0,"Test","Loop " & $FNLoop)' & @CRLF & _
    'Next') _
    And Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\temp.script.au3"') _
    And Sleep(1000) _
    And FileDelete(@TempDir & "\temp.script.au3") Then Exit

    [/autoit]
  • Execute funktioniert nicht

    • BugFix
    • 17. April 2009 um 12:53

    Execute kann nur eine Codezeile ausführen.

  • Anwendungspfad anhand der PID ermitteln

    • BugFix
    • 17. April 2009 um 11:42
    Zitat von ahe

    wird nur "Files\Mozilla Firefox\firefox.exe" zurückgeliefert...


    Kann ich nicht bestätigen.
    Habe mal diesen Ordner angelegt (im deutschen Windows gibt es den normalerweise ja nicht :P ) und ein dort hinkopiertes Programm gestartet.
    Ergebnis:

    Code
    C:\Program Files\TEST\PDFReader.exe
  • MathEx UDF

    • BugFix
    • 17. April 2009 um 09:25

    Die Schlacht um die Primzahldefinition :D

    Zitat von eukalyptus

    Eine Primzahl ist nur durch 1 und sich selbst teilbar - und das trifft auf 1 völlig zu ;)

    Das macht bei mir aber zwei Faktoren :P

    Hierbei sollte man auf keinen Fall den Ergebnissen von Google oder Wikipedia allein trauen.
    Hier das Ergebnis der Suchmaschine von princeton.edu:
    http://wordnetweb.princeton.edu/perl/webwn?s=prime%20number

    Dazu passend auch diese, wie ich finde gute Erklärung: Warum 1 keine Primzahl ist

    ;)

  • Text zählen

    • BugFix
    • 16. April 2009 um 09:33
    Zitat von Stilgar

    (wenn die Daten schon in der DB drinn sind dauert die Auswertung nur noch 12.4ms)


    Ja, dann ist es wirklich sauschnell. Das Einfügen der Daten ist der Pferdefuß.
    _FileReadToArray ist hier die Bremse. Ich hab jetzt mal die Funktion direkt mit der Erstellung des SQL-Insertstring verknüpft. Bringt bei mir einen schönen Zeitgewinn. Könnte evtl. an die Werte der Objekt-Version heranreichen.

    [autoit]

    Func _sql_count_ip()
    Local $fh = FileOpen(@ScriptDir & '\test_ip.txt', 0)
    Local $insertStr = '', $hSQL
    Local $aFile = StringStripWS(FileRead($fh, 2)
    If StringInStr($aFile, @LF) Then
    $aFile = StringSplit(StringStripCR($aFile), @LF, 2)
    ElseIf StringInStr($aFile, @CR) Then
    $aFile = StringSplit($aFile, @CR, 2)
    EndIf
    For $i = 0 To UBound($aFile) -1
    $insertStr &= "INSERT INTO tblTEST VALUES ('" & $aFile[$i] & "');"
    Next
    FileClose($fh)

    _SQLite_Startup ()
    $hSQL = _SQLite_Open ()
    _SQLite_Exec ( $hSQL, "CREATE TABLE tblTEST ('ip');" & $insertStr )

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

    Local $hQuery, $aRow, $result = ''
    _SQlite_Query ( $hSQL, "SELECT ip,COUNT(ip) FROM tblTEST GROUP BY ip ORDER BY COUNT(ip) DESC;", $hQuery )

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

    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    ;~ $result &= $aRow[0] & @TAB & $aRow[1] & @CRLF
    ConsoleWrite($aRow[0] & @TAB & $aRow[1] & @CRLF)
    WEnd
    $fh = FileOpen(@ScriptDir & '\test_ip_out.txt', 2)
    FileWrite($fh, $result)
    FileClose($fh)
    _SQLite_Exec ( $hSQL, "DROP TABLE tblTEST;" )
    _SQLite_Close ()
    _SQLite_Shutdown ()
    EndFunc

    [/autoit]
  • GDI Plus

    • BugFix
    • 15. April 2009 um 23:48

    So?

    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

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

    Opt('MustDeclareVars', 1)

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

    _Main()
    Exit

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

    Func _Main()
    Local $hGUI, $hWnd, $hGraphic, $x = -2

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

    ; Create GUI
    $hGUI = GUICreate("GDI+", 400, 300)
    $hWnd = WinGetHandle("GDI+")
    GUISetState()

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

    ; Draw an ellipse
    _GDIPlus_Startup ()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd)
    For $i = 1 To 25
    $x += 13
    _GDIPlus_GraphicsFillEllipse ($hGraphic, $x, 50, 13, 13)
    Sleep(300)
    Next

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_Shutdown ()

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

    EndFunc ;==>_Main

    [/autoit]
  • GDI Plus

    • BugFix
    • 15. April 2009 um 23:27

    Guckst du in die Hilfe:

    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

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

    Opt('MustDeclareVars', 1)

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

    _Main()
    Exit

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

    Func _Main()
    Local $hGUI, $hWnd, $hGraphic, $hBrush

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

    ; Create GUI
    $hGUI = GUICreate("GDI+", 400, 300)
    $hWnd = WinGetHandle("GDI+")
    GUISetState()

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

    ; Draw an ellipse
    _GDIPlus_Startup ()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd)
    _GDIPlus_GraphicsFillEllipse ($hGraphic, 50, 50, 13, 13)

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_Shutdown ()

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

    EndFunc ;==>_Main

    [/autoit]
  • GDI Plus

    • BugFix
    • 15. April 2009 um 23:10

    Einfach einen Kreis mit 'nem kleinen Durchmesser zeichnen und ausfüllen.

  • Text zählen

    • BugFix
    • 15. April 2009 um 21:49

    Leute, das muß doch schneller gehen :D
    Und was ist geeigneter für große Datenmengen als... SQLite ;)

    Grob geschätzt 60% Zeitersparnis. ( und ausserdem sortiert nach Häufigkeit :P )

    [autoit]

    #include <File.au3>
    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    Func _sql_count_ip()
    Local $file = @ScriptDir & '\test_ip.txt', $arIP
    _FileReadToArray($file, $arIP)
    Local $tableStr = "CREATE TABLE tblTEST ('ip');"
    Local $insertStr = ''
    For $i = 1 To UBound($arIP) -1
    $insertStr &= "INSERT INTO tblTEST VALUES ('" & $arIP[$i] & "');"
    Next

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

    _SQLite_Startup ()
    $hSQL = _SQLite_Open ()
    _SQLite_Exec ( $hSQL, $tableStr & $insertStr )

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

    Local $hQuery, $aRow, $result = '', $fh
    _SQlite_Query ( $hSQL, "SELECT ip,COUNT(ip) FROM tblTEST GROUP BY ip ORDER BY COUNT(ip) DESC;", $hQuery )

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

    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    $result &= $aRow[0] & @TAB & $aRow[1] & @CRLF
    ;~ ConsoleWrite($aRow[0] & @TAB & $aRow[1] & @CRLF)
    WEnd
    $fh = FileOpen(@ScriptDir & '\test_ip_out.txt', 1)
    FileWrite($fh, $result)
    FileClose($fh)
    _SQLite_Exec ( $hSQL, "DROP TABLE tblTEST;" )
    _SQLite_Close ()
    _SQLite_Shutdown ()
    EndFunc

    [/autoit]

    Edit: Was allerdings wieder 2/3 ausbremst, ist die Initialisierung der SQLite Dll ;)

  • Software installiern bei Logon

    • BugFix
    • 15. April 2009 um 08:51

    Du setzt eine Zählvariable, die die nicht in der INI enthaltenen Rechner zählt ($x=0), und wenn sie erhöht wurde startest du die Installation.
    Beim Vergleich auf diese Variable prüfst du aber: if $x <>1 (statt 0)
    Somit wird immer dann installiert, wenn alle Rechner in der INI stehen. Und nur wenn ein neuer Rechnername in der INI ist, wird nicht installiert. ;)

  • Funktion zur Osterberechnung jetzt als UDF und modalem Meldungsfenster

    • BugFix
    • 13. April 2009 um 22:52
    Zitat von AutoBert

    Sind deine Func's in die aktuelle AutoIT-Version eingeflossen, sprich soll ich meine _Easter anders benennen, damit es zu keinem Durcheinander kommt?


    Sind keine offiziellen UDF, also nicht in AutoIt.
    Du brauchst auch nix umbenennen. Kommt häufiger vor, dass man etwas erstellt, was bereits mit gleichem Ansatz gelöst wurde. Also kein Problem.

  • Funktion zur Osterberechnung jetzt als UDF und modalem Meldungsfenster

    • BugFix
    • 13. April 2009 um 20:50

    Kein Problem :D
    War das erste überhaupt, was ich mit AutoIt gemacht hatte. Lang, lang ist's her... :rolleyes:
    Heute würde das schon wesentlich anders aussehen. (Arrays) ;)

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™