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

Beiträge von TheLuBu

  • For ... next schleife vorzeitig von anfang beginnen

    • TheLuBu
    • 1. September 2011 um 08:50

    wenn du mal den gesamten COde posten könntest, oder zumindest die For schleifen, dann wäre es einfacher zu helfen ;)

  • Bestimmte Zeile suchen und ersetzen lassen

    • TheLuBu
    • 29. August 2011 um 10:04

    Auch wenns schon gelöst ist, kannst du dir auch mal mein Wildcard Script aus meiner Signatur ansehen

  • GameVerwaltung

    • TheLuBu
    • 26. August 2011 um 15:11

    füg das hier bei dir ein, nach Zeile 51:

    [autoit]

    $Language = "German.ini"

    [/autoit]

    , er versucht einen Wert aus der Registry zu lesen, die es nicht gibt ^^

  • Prozentual Werte hinzufügen

    • TheLuBu
    • 26. August 2011 um 12:33

    Habs jetzt etwas umständlich gelöst ;)
    Nochmal zur Erklärung, ich habe die Werte und die dazugehörigen Prozente.
    Jetzt möchte ich "zufällig" 100 Variablen einen Wert zuweisen, aber mit beachtung der Prozentwerte.
    Also eben nicht

    48xWert1, 17xWert2, 2xWert3, 5xWert4, 25xWert5 sondern ungefähr so
    2xWer1, 3xWert2,5xWert1, 1xWert4, 2xWert5,9xWert1 usw.

    Habe es jetzt so gelöst:

    [autoit]

    $full = 100
    For $i = 1 To UBound($Werte) - 1
    $Werte[$i][2] = ($Werte[$i][1] / $Alle_werte) * 100 ; Berechnet den Prozentwert
    $Werte[$i][4] = $full - Round($Werte[$i][2], 2) ; untere Grenze
    $Werte[$i][5] = $full ;obere grenze
    $full -= Round($Werte[$i][2], 2)
    Next

    [/autoit]


    Die Prozentzahl wird von 100 abgezogen, der entstehende Wert ist damit die untere grenze, obere grenze ist 100. Dann wird der Prozentsatz von 100 abgezogen, um die neue Obergrenze für den nächsten Wert zu stellen.

    Jetzt kann ich mit

    [autoit]

    Random(0, 100)

    [/autoit]

    einen Wert "zufällig" erstellen, wenn dieser zwischen der Ober- und Untergrenze liegt, wird der entsprechende Wert zurückgeliefert.

    Habe es mit 100000 Werten durchlaufen lassen und die Ergebnisse sind Prozentual richtig (ca. natürlich ;) ) aber eben willkürlich verteilt, genauso wie es sein soll (bei mir zumindest ^^)

  • Prozentual Werte hinzufügen

    • TheLuBu
    • 26. August 2011 um 11:43

    Hallöchen,
    ich sitze hier grade vor einem kleinen Logikproblem.
    Ich habe Werte, denen ein Prozentsatz zugehört.

    Code
    [0]|48.7179487179487|WERT1
    [1]|17.9487179487179|WERT2
    [2]|2.56410256410256|WERT3
    [3]|5.12820512820513|WERT4
    [4]|25.6410256410256|WERT5´

    Diese Werte werden ständig neu berechnet, also nutzt sie nur als Beispiel ;)
    Jetzt muss ich diese Werte nach den prozentwerten verteilen, aber nicht in einer bestimmten Reihenfolge, (48x den Wert, 17x den nächsten) sondern in einer zufälligen Reihenfolge.
    Die Werte können nicht im nachhinein "gemischt" werden.
    Hat da jemand eine Idee?

  • Dezimaluhrzeit von Excel umwandeln

    • TheLuBu
    • 25. August 2011 um 15:10

    Ich hatte das Problem, das ich eine Uhrzeit aus Excel ausgelesen habe und nur eine Dezimalzahl erhalten habe.
    Ich habe mich dann mal drangesetzt, und diese Funktion geschrieben, welche die Uhrzeit aus der Dezimalzahl wieder in eine "normale" Darstellung umwandelt. Vielleicht kann das ja jemand gebrauchen.

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION#
    ;===============================================================================
    ;
    ; Name...........: _ExcelTimeToNormalTime
    ; Description ...: Wandelt eine Exceluhrzeit (Dezimal) in eine normale Uhrzeit (hh:mm:ss) um
    ; Syntax.........: _ExcelTimeToNormalTime($i_time)
    ; Parameters ....: $i_time - Die Uhrzeit, wie sie von Excel gespeichert wird
    ; Return values .: Success - Die normale Uhrzeit
    ; Failure - Returns 0 and Sets @Error:
    ; |0 - Kein Fehler
    ; |1 - $i_time ist keine gültige Zahl
    ; Author ........: TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Modified.......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ;
    ;==========================================================================================
    Func _ExcelTimeToNormalTime($i_time)
    $i_time = StringReplace($i_time, ",", ".")
    If Not IsNumber($i_time) Then Return SetError (1,0,0)
    Return StringRight("0" & Int($i_time * 24), 2) & ":" & StringRight("0" & Int((($i_time * 24) - Int($i_time * 24)) * 60), 2) & ":" & StringRight("0" & Int(((($i_time * 24) - Int($i_time * 24)) * 60 - Int((($i_time * 24) - Int($i_time * 24)) * 60)) * 60), 2)
    EndFunc ;==>_ExcelTimeToNormalTime

    [/autoit]
  • Controll Click erkennt button nicht

    • TheLuBu
    • 22. August 2011 um 14:53

    Hast du das Fenster schon mit

    [autoit]

    WinActivate

    [/autoit]

    aktiviert? bzw. erstmal gewartet, bis es aktiv ist mit

    [autoit]

    WinActive

    [/autoit]
  • Screenshot erstellen

    • TheLuBu
    • 22. August 2011 um 11:20

    du hast ein Komma vergessen ;) Hinter 377

    [autoit]

    DllCall(@TempDir & "\captdll.dll", "int", "CaptureRegion", "str", $CaptureDirectory & $CaptureFile, "int", 263, "int", 497, "int", 830, "int", 377, "int", 100)

    [/autoit]
  • Excel Problem

    • TheLuBu
    • 19. August 2011 um 11:16

    So, dreimal Kopf aufn Tisch geknallt... Hab ich verdient.

    Hatte vorher mit <> "" gearbeitet, deswegen stand das Else noch drin.

    Danke

  • Pixelsearch

    • TheLuBu
    • 19. August 2011 um 10:58

    Vielleicht geht es so?

    [autoit]

    While True
    If PixelSearch( 263, 497, 1113, 894, 0x000000, 100) Then
    MsgBox(0, "Farbe", "Farbe gefunden")
    Exitloop
    Else
    MsgBox(0, "Farbe", "Farbe nicht gefunden")
    Sleep(10000)
    EndIf
    WEnd

    [/autoit]
  • Excel Problem

    • TheLuBu
    • 19. August 2011 um 10:51

    Hab mich jetzt für VB entschieden, da ich zu keiner Lösung gekommen bin.
    Dein Vorschlag funktioniert bei der Exceldatei leider niht, hatte auch schon drüber nachgedacht, aber so wie die Tabelle aufgebaut und gepflegt wird klappt es leider nicht.

    Zum VB Code

    Code
    Sub Stundenkonto()
    Dim intRow As Integer
    For intRow = 3 To 200
        If Cells(intRow, 13) = "" Then
        Else
        Cells(intRow, 12).Copy
        Cells(intRow, 13).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        End If
    Next intRow
    End Sub
    Alles anzeigen


    Ich habe jetzt mehrere Formeln in die Datei eingebaut. In Spalte L steht jetzt der Wert, den ich kopieren will (ohne Formeln, nur Wert), und der soll nur in Spalte M kopiert werden, wenn nichts in M steht.
    Allerdings klappt es nicht, die Schleife läuft nicht durch.
    Weiß jemand rat?

  • Excel Problem

    • TheLuBu
    • 19. August 2011 um 09:10

    Hallöchen, ich schreib es mal hier, weil es nicht direkt mit AutoIt zutun hat.

    Ich habe eine Exceltabelle mit der Arbeitszeit unserer Mitarbeiter.
    In Spalte K steht das aktuelle Stundenkonto.
    Wenn die jetzt mehr als 10 Überstunden haben, bekommen sie einen Bonus. Dieser wird aber nur einmalig im Monat gezahlt, das Stundenkonto fängt dann aber wieder neu an für diesen Bonus zu zählen.
    Mal als Beispiel ;)
    Mitarbeiter A hat insgesamt 12 Überstunden, erhält also den Bonus. In der Spalte N soll nun das Überstundenkonto "zurückgesetzt werden" und dann von vorne zählen. In Spalte K steht weiterhin das aktuelle Stundenkonto. Ich brauche jetzt also den Wert 12, um ihn abziehen zu können, aber eben als festen Wert. Kennt jemand eine Möglichkeit, dies mit einer Formel zu machen? Oder muss ich dafür VB nehmen?

    Ich hoffe mich versteht jemand ^^

  • Datum berechnen

    • TheLuBu
    • 19. August 2011 um 08:15
    [autoit]

    $date = _DateAdd('w', -1, _NowCalcDate())
    ;$split = Stringsplit(GUICtrlRead($date), ".") ;Wieso GuictrlRead, ist doch kein Gui Control
    $split = Stringsplit($date, "/") ;probiers mal so
    Send($split[3] & "." & $split[2] & "." & $split[1])

    [/autoit]
  • Ini Sektionsnamen in Listbox

    • TheLuBu
    • 18. August 2011 um 21:47
    [autoit]

    EndFunc _RefreshServerList()

    [/autoit]


    Du beendest die FUnktion und rufst in der selben Zeile die Funktion auf.
    Einfach nur

    [autoit]

    EndFunc

    [/autoit]

    und der Error sollte weg sein ;)

  • Problem bei Login mit WinHTTP

    • TheLuBu
    • 18. August 2011 um 21:44

    Du musst die Daten auch empfangen, bis jetzt hast du nur einen Request abgeschickt und überprüfst, ob eine Antwort zurück kommt.

    [autoit]

    #include <WinHTTP.au3>

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

    $hOpen = _WinHttpOpen()
    $hConnect = _WinHttpConnect($hOpen, "http://www2.willstequatschen.de")
    $hRequest = _WinHttpOpenRequest($hConnect, "GET", "/la/sites/offline/index.php")

    _WinHttpSendRequest($hRequest)

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

    MsgBox(0, 0, $hRequest)

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

    _WinHttpCloseHandle($hRequest)
    _WinHttpReceiveResponse($hRequest)

    $hRequest = _WinHttpOpenRequest($hConnect, "POST", "/insert/login.php", "HTTP/1.1")


    _WinHttpSendRequest($hRequest, "Content-Type: application/x-www-form-urlencoded" & @CRLF, "/insert/login.php?action=login benutzer=benutzername&pass=kennwort&secpass=&secure=0")
    _WinHttpReceiveResponse($hRequest)

    Local $data = ""
    Do
    $data &= _WinHttpReadData($hRequest)
    Until @error
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $data = ' & $data & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    FileWrite("req01.html", $data)
    _WinHttpCloseHandle($hRequest)

    [/autoit]
  • Kalenderwoche zu Tagen umrechnen

    • TheLuBu
    • 18. August 2011 um 18:12

    Ich habe eine Funktion gebraucht, die mir die Tage einer Kalenderwoche ausgibt, und da hier schon jemand nach etwas ähnlichem gefragt hat, hier die Funktion, vielleicht kann sie einer von euch ja auch noch gebrauchen.

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ;===============================================================================
    ;
    ; Name...........: _DateWeekISOtoDate
    ; Description ...: Liefert die Tage der gewählten Kalenderwoche
    ; Syntax.........: _DateWeekISOtoDate($iKW, $iYear = @YEAR)
    ; Parameters ....: $iKW - Die Kalenderwoche, dessen Tage gesucht werden sollen
    ; $iYear - Das Jahr (Standart = Aktuelles Jahr)
    ; Return values .: Success - Eindimensionales Array mit den Tagen der gesuchten Woche.
    ; - In $Result[0] steht die Anzahl an Wochen des Jahres
    ; Failure - Returns 0 and Sets @Error:
    ; |0 - Kein Fehler
    ; |1 - $iKW ist keine Zahl
    ; |2 - $iKW ist kleiner 1 oder größer 53
    ; |3 - $iKW ist 53, es gibt aber nur 52 Wochen
    ; |4 - $iYear ist keine Zahl
    ; |5 - $iYear ist kein Jahr
    ; Author ........: TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Modified.......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ;
    ; ;==========================================================================================
    Func _DateWeekISOtoDate($iKW, $iYear = @YEAR)
    If Not StringIsDigit($iKW) THen Return SetError(1,0,0)
    If $iKW = 0 Or $iKW > 53 Then Return SetError(2,0,0)
    If Not StringIsDigit($iYear) THen Return SetError(4,0,0)
    If Not StringLen($iYear) = 4 THen Return SetError(5,0,0)
    Local $s4thjanuary, $s1thjanuary, $idatereduce, $iMaxWeeks, $asReturndate[8]
    $s4thjanuary = _DateToDayOfWeek($iYear, "01", "04")
    $s1thjanuary = _DateToDayOfWeek($iYear, "01", "01")
    For $i = 1 To 6
    $idatereduce = $s4thjanuary - $i
    If $idatereduce = 2 Then ExitLoop
    Next
    $sFirstDayWeekISO = _DateAdd("D", -$i, $iYear & "/01/04")
    Switch $s1thjanuary
    Case 5 ;Donnerstag
    $iMaxWeeks = 53
    Case 4 ;Mittwoch
    If _DateIsLeapYear($iYear) Then
    $iMaxWeeks = 53
    Else
    $iMaxWeeks = 52
    EndIf
    Case Else
    $iMaxWeeks = 52
    EndSwitch
    If $iMaxWeeks = 52 And $iKW = 53 Then SetError(3,0,0)
    $asReturndate[0] = $iMaxWeeks
    For $i = 1 To 7
    $asReturndate[$i] = _DateAdd("w", $iKW - 1, _DateAdd("D", $i-1, $sFirstDayWeekISO))
    Next
    Return $asReturndate
    EndFunc ;==>_DateWeekISOtoDate

    [/autoit]
  • Datum berechnen

    • TheLuBu
    • 18. August 2011 um 18:10

    Hab sowieso grade an einer Datumskonvertierung gearbeitet, schau dir mal die Funktion von mir an, vielleicht hilft sie dir.

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ;===============================================================================
    ;
    ; Name...........: _DateWeekISOtoDate
    ; Description ...: Liefert die Tage der gewählten Kalenderwoche
    ; Syntax.........: _DateWeekISOtoDate($iKW, $iYear = @YEAR)
    ; Parameters ....: $iKW - Die Kalenderwoche, dessen Tage gesucht werden sollen
    ; $iYear - Das Jahr (Standart = Aktuelles Jahr)
    ; Return values .: Success - Eindimensionales Array mit den Tagen der gesuchten Woche.
    ; - In $Result[0] steht die Anzahl an Wochen des Jahres
    ; Failure - Returns 0 and Sets @Error:
    ; |0 - Kein Fehler
    ; |1 - $iKW ist keine Zahl
    ; |2 - $iKW ist kleiner 1 oder größer 53
    ; |3 - $iKW ist 53, es gibt aber nur 52 Wochen
    ; |4 - $iYear ist keine Zahl
    ; |5 - $iYear ist kein Jahr
    ; Author ........: TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Modified.......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ;
    ; ;==========================================================================================
    Func _DateWeekISOtoDate($iKW, $iYear = @YEAR)
    If Not StringIsDigit($iKW) THen Return SetError(1,0,0)
    If $iKW = 0 Or $iKW > 53 Then Return SetError(2,0,0)
    If Not StringIsDigit($iYear) THen Return SetError(4,0,0)
    If Not StringLen($iYear) = 4 THen Return SetError(5,0,0)
    Local $s4thjanuary, $s1thjanuary, $idatereduce, $iMaxWeeks, $asReturndate[8]
    $s4thjanuary = _DateToDayOfWeek($iYear, "01", "04")
    $s1thjanuary = _DateToDayOfWeek($iYear, "01", "01")
    For $i = 1 To 6
    $idatereduce = $s4thjanuary - $i
    If $idatereduce = 2 Then ExitLoop
    Next
    $sFirstDayWeekISO = _DateAdd("D", -$i, $iYear & "/01/04")
    Switch $s1thjanuary
    Case 5 ;Donnerstag
    $iMaxWeeks = 53
    Case 4 ;Mittwoch
    If _DateIsLeapYear($iYear) Then
    $iMaxWeeks = 53
    Else
    $iMaxWeeks = 52
    EndIf
    Case Else
    $iMaxWeeks = 52
    EndSwitch
    If $iMaxWeeks = 52 And $iKW = 53 Then SetError(3,0,0)
    $asReturndate[0] = $iMaxWeeks
    For $i = 1 To 7
    $asReturndate[$i] = _DateAdd("w", $iKW - 1, _DateAdd("D", $i-1, $sFirstDayWeekISO))
    Next
    Return $asReturndate
    EndFunc ;==>_DateWeekISOtoDate

    [/autoit]
  • ComboBox leeren

    • TheLuBu
    • 18. August 2011 um 15:03

    Hab jetzt grade mal was geschrieben, bei mir klappt es:

    Spoiler anzeigen
    [autoit]

    #include <GuiComboBox.au3>
    #include <GUIConstantsEx.au3>
    $Test = "Test1|Test2|Test3"
    $Test2 = "Test4|Test5|Test6"
    Dim $GUITitle = "Finderling"
    Dim $GUIWidth = 300
    Dim $GUIHeight = 150
    Global $WindowGui = GUICreate($GUITitle, $GUIWidth, $GUIHeight)
    Global $check = GUICtrlCreateCheckbox("LongLog", 170, 60)
    Global $combo = GUICtrlCreateCombo("", 50, 70, 100, 25)
    Global $button_start = GUICtrlCreateButton("Start", 50, 100, 100, 25)
    Global $label = GUICtrlCreateLabel("l", 170, 105, 100, 50)
    GUICtrlCreateLabel("DatenTyp:", 50, 50, 80, 20)
    $button_SelectFile = GUICtrlCreateButton("SelectIniFile", 50, 20, 100, 25)
    $button_Hilfe = GUICtrlCreateButton("Hilfe", 170, 20, 90, 25)
    GUISetState(@SW_SHOW)

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

    #Region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $button_start
    GUICtrlSetData($combo, $Test)
    Case $msg = $button_Hilfe
    _GUICtrlComboBox_ResetContent($combo)
    GUICtrlSetData($combo, $Test2)

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

    EndSelect
    WEnd
    #EndRegion - GUI SelectLoop

    [/autoit]


    Wenn ich deinen Code versuche zu deuten, klickst du zuerst auf Select File, wenn du dann die Werte ändern willst auf Hilfe und dann wieder auf Select File?
    Du könntest

    [autoit]

    _GUICtrlComboBox_ResetContent($combo)

    [/autoit]

    direkt in die SelectFile() Funktion setzen, denn dort wird ja auch der neue Wert eingetragen.
    Da ich keine Inidatei habe, kann ich dein Script leider nicht weiter testen

  • ComboBox leeren

    • TheLuBu
    • 18. August 2011 um 14:23

    Wo schreibst du denn die neuen Werte in die Combobox? Poste doch bitte das gesamte Script

  • Ordner auf Server

    • TheLuBu
    • 18. August 2011 um 10:15
    Zitat von Dietmar


    FTP Ordner wohl nicht mit Backslashes aber IP wird wohl zutreffen.


    Könnte auch ein FTP Ordner sein, der als Netzlaufwerk eingebunden ist, die haben dann auch den Zugriff mit "\\"

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™