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

Beiträge von Oscar

  • Nur erste Ping-Abfrage im Script funktioniert

    • Oscar
    • 20. Februar 2014 um 11:25

    Ich gehe mal davon aus, dass Deine CSV-Datei als Zeilenende nicht nur Chr(13) = CR, sonder Chr(13) + Chr(10) = CRLF enthält.
    Demzufolge muss die Zeile 7 so aussehen:

    [autoit]

    $array=StringSplit($content, Chr(13) & Chr(10), 1)

    [/autoit]


    oder so:

    [autoit]

    $array=StringSplit($content, @CRLF, 1)

    [/autoit]
  • _ImageSearch Probleme nach kompilieren

    • Oscar
    • 15. Februar 2014 um 18:29

    Man kann GuiRegisterMsg dazu verwenden, die Eingabe zu überwachen und nur Zahlen und den Dezimalpunkt zuzulassen:

    Spoiler anzeigen
    [autoit]


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

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

    Global $iTimer = TimerInit()
    $hGui = GUICreate("", 320, 120)
    $idInput = GUICtrlCreateInput("", 10, 50, 200, 20)

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

    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
    Do
    If TimerDiff($iTimer) > 2000 Then ToolTip('')
    Until GUIGetMsg() = -3

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    If $nID = $idInput And $nNotifyCode = 1024 Then
    ToolTip('')
    Local $sText = GUICtrlRead($idInput)
    $sText = StringRegExpReplace($sText, '([^\d\.])', '')
    If @extended Then
    Local $aPos = WinGetPos($hGui)
    Local $aControlPos = ControlGetPos($hGui, '', $idInput)
    ToolTip('Erlaubt sind nur Zahlen und der Dezimalpunkt', $aPos[0] + $aControlPos[0] + 20, $aPos[1] + $aControlPos[1] + 40, 'Achtung!', 1, 1)
    $iTimer = TimerInit()
    EndIf
    GUICtrlSetData($idInput, $sText)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]
  • Eintrag aus eigener Combobox selektieren und ausführen

    • Oscar
    • 13. Februar 2014 um 16:50

    Poste bitte das ganze Script oder zumindest ein lauffähiges Beispiel.
    Unsere Hilfeleistung tendiert gegen Null, wenn wir erst die GUI selbst erstellen sollen. ;)

  • Wie speichere ich Korrekt das vorkommen von Strings in ein Array

    • Oscar
    • 11. Februar 2014 um 18:45

    Naja, _ArrayDisplay hat eine eigene Fehlerbehandlung (das sollte an der Stelle auch nur zum testen sein), aber das deklarieren des $aData-Arrays sollte nicht fehlschlagen. ^^

  • Wie speichere ich Korrekt das vorkommen von Strings in ein Array

    • Oscar
    • 11. Februar 2014 um 18:19

    Hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $string = '<p class="userlist">Herbert Alter: 46 Abteilung: Buchhaltung</p><p class="userlist">Robert Alter: 38 Abteilung: QS</p>' & @CRLF & '<p class="userlist">Karl Alter: 45 Abteilung: Außendienst</p><p class="userlist">Anton Alter: 42 Abteilung: ZBV</p>'
    $array = StringRegExp($string, 'userlist">(.+?)<', 3)
    _ArrayDisplay($array, 'Userlist')
    If IsArray($array) Then
    Global $aData[UBound($array)][3]
    For $i = 0 To UBound($array) - 1
    $aData[$i][0] = StringRegExpReplace($array[$i], '(.+)Alter.+', '$1')
    $aData[$i][1] = StringRegExpReplace($array[$i], '.+Alter: (.+?) .+', '$1')
    $aData[$i][2] = StringRegExpReplace($array[$i], '.+Abteilung: (.+).*', '$1')
    Next
    _ArrayDisplay($aData, '2D-Array')
    EndIf

    [/autoit]
  • Welche AutoIt Version nutzt ihr?

    • Oscar
    • 7. Februar 2014 um 19:17

    Ich würde mir wünschen, dass man einen Datentyp beim deklarieren vorgeben kann. Wenn keiner angegeben ist, dann halt Variant.
    So könnte man die Vorteile nutzen und müsste sich nicht mit den Schwierigkeiten des Variant in manchen Situationen rumschlagen.

  • Glücklichen Herzwunsch zum Geburtstag, Schnitzel!

    • Oscar
    • 6. Februar 2014 um 19:57

    Von mir auch alles Gute zum Geburtstag, Schnitzel! (ich kriege immer Hunger, wenn ich Deinen Usernamen schreibe :D )
    Feiere schön und lass Dich reich beschenken. :)

  • Datum berechnen und format behalten

    • Oscar
    • 5. Februar 2014 um 18:07

    Ich würde es so machen:

    [autoit]


    #include <Date.au3>
    $today = StringRegExpReplace(_NowCalcDate(), '(\d{4})/(\d{2})/(\d{2})', '$3-$2-$1')
    $yday = StringRegExpReplace(_DateAdd('d', -1, _NowCalcDate()), '(\d{4})/(\d{2})/(\d{2})', '$3-$2-$1')
    ConsoleWrite('today: ' & $today & @CR)
    ConsoleWrite('yesterday: ' & $yday & @CR)

    [/autoit]
  • Radio Button

    • Oscar
    • 5. Februar 2014 um 17:57

    Und da es ja immer noch gern verkehrt gemacht wird, möchte ich auf den Zusatz in der Hilfe verweisen:

    Zitat

    Bei Checkboxen und Radiobuttons können mehrere Statuse als $GUI_FOCUS und $GUI_CHECKED zurückgegeben werden. So ist z. B. BitAnd(GUICtrlRead($Item),$GUI_CHECKED) zu verwenden um zu sehen ob ein Control markiert ist.


    BTW: Die deutsche Hilfe ist in dem Punkt falsch. Der Plural von Status lautet ebenfalls Status (ohne "e" am Ende).

    Es sollte also heißen:

    [autoit]

    If BitAnd(GUICtrlRead($Radio1), $GUI_CHECKED) Then

    [/autoit]
  • STDOUT_CHILD in Scrite-Console aber nicht mit StdouRead lesbar

    • Oscar
    • 5. Februar 2014 um 17:42

    Äh..."RunWAIT"?
    Sollte das nicht nur "Run" sein?

  • Happy Birthday, Andy

    • Oscar
    • 4. Februar 2014 um 19:41

    Alles Gute zu Deinem Geburtstag!
    Eine schöne Geburtstagsfeier und viele Geschenke! :D

    Deine Scripte und Beiträge hier im Forum sind eine echte Bereicherung. Ich bin immer wieder begeistert. :thumbup:

  • Kleines Tool zum Punkte verteilen

    • Oscar
    • 4. Februar 2014 um 18:25

    Ich habe Dir Dein Script mal angepasst (Arrays erleichtern vieles):

    Spoiler anzeigen
    [autoit]


    #Region ### Include section ###
    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #EndRegion ### Include section ###
    ;

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

    #Region ### GUI section ###
    GUICreate("AP Distributor", 445, 490)
    GUISetIcon(@ScriptDir & '\aion.ico')
    GUISetBkColor(0xFFFFFF)

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

    #Region ### Menu section ###
    $menu_1 = GUICtrlCreateMenu("Datei")
    $menu_1_1 = GUICtrlCreateMenuItem("Beenden", $menu_1)
    $menu_2 = GUICtrlCreateMenu("Hilfe")
    $menu_2_1 = GUICtrlCreateMenuItem("Anleitung", $menu_2)
    #EndRegion ### Menu section ###
    ;

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

    #Region ### Button section ###
    $start = GUICtrlCreateButton("Verteilen", 5, 440, 80, 25)
    $calc = GUICtrlCreateButton("Zwischenstand", 182.5, 440, 80, 25)
    $end = GUICtrlCreateButton("Schließen", 360, 440, 80, 25)
    #EndRegion ### Button section ###
    ;
    Global $aidIcons[16], $sAllItems = "", $iAllItemsVal = 0
    #Region ### Ikonen ###
    GUICtrlCreateGroup("", 10, 5, 210, 190)
    GUICtrlCreatePic(@ScriptDir & '\oldtorso01.bmp', 14, 15, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldtorso02.bmp', 14, 60, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldtorso03.bmp', 14, 105, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldtorso04.bmp', 14, 150, 40, 40)
    GUICtrlCreateLabel("Geringe uralte Ikone", 60, 29, 120, 15)
    GUICtrlCreateLabel("Normale uralte Ikone", 60, 74, 120, 15)
    GUICtrlCreateLabel("Große uralte Ikone", 60, 119, 120, 15)
    GUICtrlCreateLabel("Mächtige uralte Ikone", 60, 164, 120, 15)
    $aidIcons[0] = GUICtrlCreateInput("0", 190, 28, 25, 17, $ES_NUMBER)
    $aidIcons[1] = GUICtrlCreateInput("0", 190, 73, 25, 17, $ES_NUMBER)
    $aidIcons[2] = GUICtrlCreateInput("0", 190, 118, 25, 17, $ES_NUMBER)
    $aidIcons[3] = GUICtrlCreateInput("0", 190, 163, 25, 17, $ES_NUMBER)
    #EndRegion ### Ikonen ###
    ;

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

    #Region ### Siegel ###
    GUICtrlCreateGroup("", 225, 5, 210, 190)
    GUICtrlCreatePic(@ScriptDir & '\oldseal01.bmp', 229, 15, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldseal02.bmp', 229, 60, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldseal03.bmp', 229, 105, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldseal04.bmp', 229, 150, 40, 40)
    GUICtrlCreateLabel("Geringes uraltes Siegel", 275, 29, 120, 15)
    GUICtrlCreateLabel("Normales uraltes Siegel", 275, 74, 120, 15)
    GUICtrlCreateLabel("Großes uraltes Siegel", 275, 119, 120, 15)
    GUICtrlCreateLabel("Mächtiges uraltes Siegel", 275, 164, 120, 15)
    $aidIcons[4] = GUICtrlCreateInput("0", 405, 28, 25, 17, $ES_NUMBER)
    $aidIcons[5] = GUICtrlCreateInput("0", 405, 73, 25, 17, $ES_NUMBER)
    $aidIcons[6] = GUICtrlCreateInput("0", 405, 118, 25, 17, $ES_NUMBER)
    $aidIcons[7] = GUICtrlCreateInput("0", 405, 163, 25, 17, $ES_NUMBER)
    #EndRegion ### Siegel ###
    ;

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

    #Region ### Kelche ###
    GUICtrlCreateGroup("", 10, 195, 210, 190)
    GUICtrlCreatePic(@ScriptDir & '\oldcup01.bmp', 14, 205, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldcup02.bmp', 14, 250, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldcup03.bmp', 14, 295, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldcup04.bmp', 14, 340, 40, 40)
    GUICtrlCreateLabel("Geringer uralter Kelch", 60, 219, 120, 15)
    GUICtrlCreateLabel("Normaler uralter Kelch", 60, 264, 120, 15)
    GUICtrlCreateLabel("Großer uralter Kelch", 60, 309, 120, 15)
    GUICtrlCreateLabel("Mächtiger uralter Kelch", 60, 354, 120, 15)
    $aidIcons[8] = GUICtrlCreateInput("0", 190, 218, 25, 17, $ES_NUMBER)
    $aidIcons[9] = GUICtrlCreateInput("0", 190, 263, 25, 17, $ES_NUMBER)
    $aidIcons[10] = GUICtrlCreateInput("0", 190, 308, 25, 17, $ES_NUMBER)
    $aidIcons[11] = GUICtrlCreateInput("0", 190, 353, 25, 17, $ES_NUMBER)
    #EndRegion ### Kelche ###
    ;

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

    #Region ### Kronen ###
    GUICtrlCreateGroup("", 225, 195, 210, 190)
    GUICtrlCreatePic(@ScriptDir & '\oldcrown01.bmp', 229, 205, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldcrown02.bmp', 229, 250, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldcrown03.bmp', 229, 295, 40, 40)
    GUICtrlCreatePic(@ScriptDir & '\oldcrown04.bmp', 229, 340, 40, 40)
    GUICtrlCreateLabel("Geringe uralte Krone", 275, 219, 120, 15)
    GUICtrlCreateLabel("Normale uralte Krone", 275, 264, 120, 15)
    GUICtrlCreateLabel("Große uralte Krone", 275, 309, 120, 15)
    GUICtrlCreateLabel("Mächtige uralte Krone", 275, 354, 120, 15)
    $aidIcons[12] = GUICtrlCreateInput("0", 405, 218, 25, 17, $ES_NUMBER)
    $aidIcons[13] = GUICtrlCreateInput("0", 405, 263, 25, 17, $ES_NUMBER)
    $aidIcons[14] = GUICtrlCreateInput("0", 405, 308, 25, 17, $ES_NUMBER)
    $aidIcons[15] = GUICtrlCreateInput("0", 405, 353, 25, 17, $ES_NUMBER)
    #EndRegion ### Kronen ###
    ;

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

    #Region ### Spieler ###
    GUICtrlCreateGroup("", 10, 385, 425, 50)
    GUICtrlCreateLabel("Anzahl der Gruppenmitglieder:", 15, 395, 150, 15)
    $player = GUICtrlCreateInput("0", 170, 394, 25, 17, $ES_NUMBER)
    GUICtrlCreateLabel("Aktuelle AP zur Vergabe:", 15, 415, 150, 15)
    $ap = GUICtrlCreateLabel("0", 172, 415, 100, 15)
    #EndRegion ### Spieler ###
    ;

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

    GUISetState(@SW_SHOW)
    #EndRegion ### GUI section ###
    ;

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

    #Region ### Start Global section ###
    Global $aPoints = StringSplit("315,630,945,1260,630,1260,1890,2520,1200,2400,3600,4800,2400,4800,7200,9600", ",", 2)
    #EndRegion ### Start Global section ###
    ;

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

    #Region ### Start HotKey section ###
    HotKeySet("{END}", "_exit")
    HotKeySet("{F1}", "_help")
    #EndRegion ### Start HotKey section ###
    ;

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

    #Region ### Start Programm section ###
    ; GUI-Schleife
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $menu_1_1
    _exit()
    Case $menu_2_1
    _help()
    Case $start
    _start()
    Case $calc
    _calc()
    Case $end
    _exit()
    EndSwitch
    WEnd

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

    ; Verteilung starten
    Func _start()
    Local $iPlayerCount = GUICtrlRead($player)
    If $iPlayerCount = 0 Then Return
    Local $aPlayer[$iPlayerCount][3], $iAverage = 0
    _calc()
    If $sAllItems = '' Then Return
    Local $aItems = StringSplit(StringTrimRight($sAllItems, 1), ',', 2)
    Local $iItemCount = 0, $iItemEnd = UBound($aItems) - 1
    ConsoleWrite('Gesamtwert aller Items: ' & $iAllItemsVal & @CR)
    _ArrayStringToNumber($aItems)
    _ArraySort($aItems, 1)
    _ArrayDisplay($aItems, 'Liste der Items')
    For $i = 0 To $iPlayerCount - 1
    $aPlayer[$i][0] = "Player " & $i + 1
    $aPlayer[$i][1] = ""
    $aPlayer[$i][2] = 0
    Next
    $iAverage = Int($iAllItemsVal / UBound($aPlayer, 1))
    ConsoleWrite('Durchschnittswert für jeden Spieler: ' & $iAverage & @CR)
    Do
    For $i = 0 To UBound($aPlayer, 1) - 1
    If $aPlayer[$i][2] = 0 Then
    $aPlayer[$i][1] &= $aItems[$iItemCount] & ', '
    $aPlayer[$i][2] += $aItems[$iItemCount]
    $iItemCount += 1
    If $iItemCount > $iItemEnd Then ExitLoop 2
    ElseIf $aPlayer[$i][2] + $aItems[$iItemCount] <= $iAverage + $aItems[$iItemEnd] Then
    $aPlayer[$i][1] &= $aItems[$iItemCount] & ', '
    $aPlayer[$i][2] += $aItems[$iItemCount]
    $iItemCount += 1
    If $iItemCount > $iItemEnd Then ExitLoop 2
    EndIf
    Next
    Until $iItemCount > $iItemEnd
    _ArrayDisplay($aPlayer, 'Verteilung der Items')
    EndFunc ;==>_start

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

    Func _ArrayStringToNumber(ByRef $Array)
    For $i = 0 To UBound($Array) - 1
    $Array[$i] = Number($Array[$i])
    Next
    EndFunc ;==>_ArrayStringToNumber

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

    ; AP zusammenrechnen
    Func _calc()
    Global $aItems[1] = [0], $sAllItems = "", $iAllItemsVal = 0
    Local $iItemTmp = 0
    For $i = 0 To UBound($aidIcons) - 1
    $iItemTmp = GUICtrlRead($aidIcons[$i])
    If $iItemTmp > 0 Then
    $iAllItemsVal += $iItemTmp * $aPoints[$i]
    For $j = 1 To $iItemTmp
    $sAllItems &= $aPoints[$i] & ','
    Next
    EndIf
    Next
    GUICtrlSetData($ap, $iAllItemsVal)
    EndFunc ;==>_calc

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

    ; Hilfe
    Func _help()
    MsgBox(0, "Ausführliche Anleitung", "~Eintrag~" & @CRLF & @CRLF & _
    " - Tragt die Anzahl der Relikte in die dafür vorgesehenen Feld ein." & @CRLF & _
    " - Tragt die Anzahl der Gruppenmitglieder in das dafür vorgesehene Feld ein." & @CRLF & _
    " - (nur die Mitglieder, die auch AP haben möchten)." & @CRLF & @CRLF & _
    "~Verteilen~" & @CRLF & @CRLF & _
    " - Startet die Verteilung der Relikte an die Gruppenmitglieder." & @CRLF & @CRLF & _
    "~Zwischenstand~" & @CRLF & @CRLF & _
    " - Rechnet die gesamten AP vor der Verteilung aus." & @CRLF & @CRLF & _
    "~Schließen~" & @CRLF & @CRLF & _
    " - Beendet das Programm.")
    EndFunc ;==>_help

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

    ; Bot beenden - GUI schließen
    Func _exit()
    Exit
    EndFunc ;==>_exit
    #EndRegion ### Start Programm section ###

    [/autoit]
  • Controlclick Problem

    • Oscar
    • 4. Februar 2014 um 14:22

    Die ersten beiden Parameter bei ControlClick sind für die Auswahl des Fensters, erst der dritte Parameter steht für das Control-Element (hier den Button).
    Es müsste also so aussehen:

    [autoit]

    ControlClick("[Class:#32770]", "", "[CLASS:Button; INSTANCE:9]")

    [/autoit]
  • Daten von Website in Excel importieren

    • Oscar
    • 4. Februar 2014 um 09:17

    Das hier funktioniert bei mir (Win7, 64 Bit, AutoIt 3.3.10.2) einwandfrei:

    [autoit]


    #include <Excel.au3>

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

    Local $oExcel = _ExcelBookNew(1)
    Local $array [5][5] = [["Jahr", 1],["Monat", 2],["Tag", 3],["WRI", 4],["Wges", 5]]
    _ExcelWriteSheetFromArray($oExcel, $Array, 1, 1, 0, 0)

    [/autoit]
  • Kleines Tool zum Punkte verteilen

    • Oscar
    • 4. Februar 2014 um 09:05

    Du musst die Werte nicht in den Stringsplit kriegen, sondern nur in das Array "$aItems". Das Array also nur entsprechend dimensionieren und die Werte hineinkopieren.
    Wenn Du das nicht hinbekommst, solltest Du vielleicht mal Dein Script posten...

  • Kleines Tool zum Punkte verteilen

    • Oscar
    • 4. Februar 2014 um 06:58

    Hier ist eine Version, die noch besser verteilt:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    Global $aItems = StringSplit('2400,600,600,300,300,300,100,100,100,100,100,50,50,50', ',', 2)
    _ArrayStringToNumber($aItems)
    _ArraySort($aItems, 1)
    _ArrayDisplay($aItems, 'Liste der Items')

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

    Global $aPlayer[4][3] = [['Player 1', '', 0],['Player 2', '', 0],['Player 3', '', 0],['Player 4', '', 0]]

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

    Global $iAllItemsVal = 0
    For $i In $aItems
    $iAllItemsVal += $i
    Next
    ConsoleWrite('Gesamtwert aller Items: ' & $iAllItemsVal & @CR)
    Global $iAverage = Int($iAllItemsVal / UBound($aPlayer, 1))
    ConsoleWrite('Durchschnittswert für jeden Spieler: ' & $iAverage & @CR)

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

    Global $iItemCount = 0, $iItemEnd = UBound($aItems) - 1
    Do
    For $i = 0 To UBound($aPlayer, 1) - 1
    If $aPlayer[$i][2] = 0 Then
    $aPlayer[$i][1] &= $aItems[$iItemCount] & ', '
    $aPlayer[$i][2] += $aItems[$iItemCount]
    $iItemCount += 1
    If $iItemCount > $iItemEnd Then ExitLoop 2
    ElseIf $aPlayer[$i][2] + $aItems[$iItemCount] <= $iAverage + $aItems[$iItemEnd] Then
    $aPlayer[$i][1] &= $aItems[$iItemCount] & ', '
    $aPlayer[$i][2] += $aItems[$iItemCount]
    $iItemCount += 1
    If $iItemCount > $iItemEnd Then ExitLoop 2
    EndIf
    Next
    Until $iItemCount > $iItemEnd
    _ArrayDisplay($aPlayer, 'Verteilung der Items')

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

    Func _ArrayStringToNumber(ByRef $Array)
    For $i = 0 To UBound($Array) - 1
    $Array[$i] = Number($Array[$i])
    Next
    EndFunc

    [/autoit]
  • Kleines Tool zum Punkte verteilen

    • Oscar
    • 3. Februar 2014 um 18:57

    Hier mal eine Variante, die eine relativ brauchbare Verteilung liefert. Bei manchen Item-Kombinationen bekommt allerdings nicht immer "Player 1" die meisten Punkte.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    Global $aItems = StringSplit('600,300,300,300,100,100,100,100,100', ',', 2)
    _ArrayStringToNumber($aItems)
    _ArraySort($aItems, 1)
    _ArrayDisplay($aItems, 'Liste der Items')

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

    Global $aPlayer[4][3] = [['Player 1', '', 0],['Player 2', '', 0],['Player 3', '', 0],['Player 4', '', 0]]

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

    Global $iAllItemsVal = 0
    For $i In $aItems
    $iAllItemsVal += $i
    Next
    ConsoleWrite('Gesamtwert aller Items: ' & $iAllItemsVal & @CR)
    Global $iAverage = Int($iAllItemsVal / UBound($aPlayer, 1))
    ConsoleWrite('Durchschnittswert für jeden Spieler: ' & $iAverage & @CR)

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

    Global $iItemCount = 0, $iItemEnd = UBound($aItems) - 1
    Do
    For $i = 0 To UBound($aPlayer, 1) - 1
    If $aPlayer[$i][2] < $iAverage Then
    $aPlayer[$i][1] &= $aItems[$iItemCount] & ', '
    $aPlayer[$i][2] += $aItems[$iItemCount]
    $iItemCount += 1
    If $iItemCount > $iItemEnd Then ExitLoop 2
    EndIf
    If $aPlayer[$i][2] < $iAverage Then
    $aPlayer[$i][1] &= $aItems[$iItemEnd] & ', '
    $aPlayer[$i][2] += $aItems[$iItemEnd]
    $iItemEnd -= 1
    If $iItemCount > $iItemEnd Then ExitLoop 2
    EndIf
    Next
    Until $iItemCount > $iItemEnd
    _ArrayDisplay($aPlayer, 'Verteilung der Items')

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

    Func _ArrayStringToNumber(ByRef $Array)
    For $i = 0 To UBound($Array) - 1
    $Array[$i] = Number($Array[$i])
    Next
    EndFunc

    [/autoit]
  • Berechnungen mit verschlüsselten Daten (Zahlen)

    • Oscar
    • 2. Februar 2014 um 18:20

    Vor allem: wie willst Du aus der Summe der Addition wieder auf die beiden Summanden kommen?
    Vielleicht solltest Du lieber beschreiben, was Du vorhast. Dann findet sich vielleicht eine (einfachere) Lösung...

  • Berechnungen mit verschlüsselten Daten (Zahlen)

    • Oscar
    • 1. Februar 2014 um 17:57

    Was soll das auch für eine "Berechnung" sein?
    _Crypt_EncryptData gibt einen Binärstring zurück. Den kannst Du nicht einfach in eine Zahl (Number) wandeln.

  • Verzeichnissinhalt in MsgBox ausgeben.

    • Oscar
    • 31. Januar 2014 um 19:11

    Hier mal ein Beispiel:

    [autoit]


    #include <File.au3>
    Global $sDir = @ScriptDir, $sMsg = ''
    Global $aFiles = _FileListToArray($sDir, '*', 1)
    If Not @error Then
    For $i = 1 To $aFiles[0]
    $sMsg &= $aFiles[$i] & @CRLF
    Next
    MsgBox(0, 'Dateianzeige', $sMsg)
    EndIf

    [/autoit]

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™