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

Beiträge von bernd670

  • csv Array Problem

    • bernd670
    • 30. Dezember 2010 um 13:05

    Hallo,

    das geht mit Hilfe von Ubound!

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Main()

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

    Func Main()

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

    Local $sAdr = "csv.txt"
    Local $h = FileOpen($sAdr, 0)

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

    Local $aRet = _CSV2Array($h, Default, True, 1)

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

    FileClose($h)
    ;~ _ArrayDisplay($aRet)

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

    For $iRow = 0 To UBound($aRet, 1) - 1 ; Zeilen von $aRet
    For $iCol = 0 To UBound($aRet, 2) - 1 ; Spalten von $aRet
    ConsoleWrite($aRet[$iRow][$iCol] & @TAB & @TAB)
    Next
    ConsoleWrite(@CRLF)
    Next

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

    EndFunc ;==>Main

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

    ; #FUNCTION# ===================================================================
    ; Name ..........: _CSV2Array
    ; Description ...:
    ; AutoIt Version : V3.3.0.0
    ; Syntax ........: _CSV2Array($hFile[, $cSeperator = "auto"[, $bFilterString = True[, $iColumnMode = 0]]])
    ; Parameter(s): .: $hFile - Handle for the CSV file to Read
    ; $cSeperator - Optional: (Default = "auto") : Tries to find the separator char ;) or , or TAB or | or space)
    ; | Data-seperator-char
    ; | Empty-string = Opt("GUIDataSeparatorChar")
    ; $bFilterString - Optional: (Default = True) : Removes leading and trailing " or '
    ; $iColumnMode - Optional: (Default = 0) :
    ; | 0: Sets error if lines have different columns and @extended to the csv-line number
    ; | 1: returns lines with different columns numbers comparing to the first line, too
    ; | 2: removing all columns > column numbers in the first line
    ; Return Value ..: Success - 2-dim Array
    ; Failure - 0
    ; @ERROR - 1: error file read
    ; @ERROR - 2: different number of columns / @EXTENDED = CSV-line
    ; - 3: parameter error
    ; Author(s) .....: Thorsten Willert
    ; Date ..........: Mon Dec 07 18:54:35 CET 2009
    ; ==============================================================================
    Func _CSV2Array($hFile, $cSeperator = "auto", $bFilterString = True, $iColumnMode = 0)
    Local $s = FileRead($hFile)
    If @error Then Return SetError(1)

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

    If $cSeperator = Default Then $cSeperator = "auto"
    If Not $cSeperator Then $cSeperator = Opt("GUIDataSeparatorChar")

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

    ; searching the line-seperator and splitting the lines into an array
    Local $aLines
    If StringInStr($s, @CRLF) Then
    $aLines = StringSplit($s, @CRLF, 1)
    ElseIf StringInStr($s, @CR) Then
    $aLines = StringSplit($s, @CR)
    Else
    $aLines = StringSplit($s, @LF)
    EndIf

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

    ; searching the delimiter in the first line
    Local $aTMP
    If $cSeperator = "auto" Then
    Local $iMax = 0
    Local $iC[5] = [0, 0, 0, 0, 0]
    Local $sC[5] = [";", ",", @TAB, "|", " "]

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

    $aTMP = StringRegExp($aLines[1], ";", 3)
    If Not @error Then $iC[0] = UBound($aTMP)
    $aTMP = StringRegExp($aLines[1], ",", 3)
    If Not @error Then $iC[1] = UBound($aTMP)
    $aTMP = StringRegExp($aLines[1], "\t", 3)
    If Not @error Then $iC[2] = UBound($aTMP)
    $aTMP = StringRegExp($aLines[1], "\|", 3)
    If Not @error Then $iC[3] = UBound($aTMP)
    $aTMP = StringRegExp($aLines[1], "[ ]", 3)
    If Not @error Then $iC[4] = UBound($aTMP)

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

    For $i = 0 To UBound($sC) - 1
    If $iC[$i] > $iMax Then
    $iMax = $iC[$i]
    $cSeperator = $sC[$i]
    EndIf
    Next
    EndIf

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

    ; creating 2-dim array based on the number of data in the first line
    $aTMP = StringSplit($aLines[1], $cSeperator)
    Local $iCol = $aTMP[0]
    Local $aRet[$aLines[0]][$iCol]

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

    ; splitting and filling the lines
    For $i = 1 To $aLines[0]
    $aTMP = StringSplit($aLines[$i], $cSeperator)
    If @error Then ContinueLoop
    If $aTMP[0] > $iCol Then
    Switch $iColumnMode
    Case 0
    Return SetError(2, $i)
    Case 1
    ReDim $aRet[$aLines[0] - 1][$aTMP[0]]
    Case 2
    $aTMP[0] = $iCol
    Case Else
    Return SetError(3)
    EndSwitch
    EndIf
    For $j = 1 To $aTMP[0]
    $aTMP[$j] = StringStripWS($aTMP[$j], 3)
    If $bFilterString Then ; removing leading and trailing " or '
    $aTMP[$j] = StringRegExpReplace($aTMP[$j], '^("|'')(.*?)\1$', '$2')
    EndIf
    $aRet[$i - 1][$j - 1] = $aTMP[$j]
    Next ; /cols
    Next ; /lines

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

    Return $aRet
    EndFunc ;==>_CSV2Array

    [/autoit]
  • A* Algorithmus?!

    • bernd670
    • 30. Dezember 2010 um 12:46

    Das geht auch einfacher!

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Global $SC_ARR_POSSIBLEMOVES[1][2];Setze die Globale Varialbe GetPossible (== Mögliche Züge) zurück
    Global $SC_ARR_PLACES[65][5]
    $SC_ARR_PLACES[0][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[0][1] = 5; 1. Nachbar von Feld 0
    $SC_ARR_PLACES[0][2] = 20; 2. Nachbar von Feld 0
    $SC_ARR_PLACES[0][3] = 10; 3. Nachbar von Feld 0
    $SC_ARR_PLACES[0][4] = 15; 4. Nachbar von Feld 0
    $SC_ARR_PLACES[1][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[1][1] = 51; 1. Nachbar von Feld 1
    $SC_ARR_PLACES[1][2] = 64; 2. Nachbar von Feld 1
    $SC_ARR_PLACES[1][3] = 52; 3. Nachbar von Feld 1
    $SC_ARR_PLACES[1][4] = 9; 4. Nachbar von Feld 1
    $SC_ARR_PLACES[2][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[2][1] = 34; 1. Nachbar von Feld 2
    $SC_ARR_PLACES[2][2] = 33; 2. Nachbar von Feld 2
    $SC_ARR_PLACES[2][3] = 62; 3. Nachbar von Feld 2
    $SC_ARR_PLACES[2][4] = 14; 4. Nachbar von Feld 2
    $SC_ARR_PLACES[3][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[3][1] = 19; 1. Nachbar von Feld 3
    $SC_ARR_PLACES[3][2] = 42; 2. Nachbar von Feld 3
    $SC_ARR_PLACES[3][3] = 43; 3. Nachbar von Feld 3
    $SC_ARR_PLACES[3][4] = 63; 4. Nachbar von Feld 3
    $SC_ARR_PLACES[4][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[4][1] = 25; 1. Nachbar von Feld 4
    $SC_ARR_PLACES[4][2] = 24; 2. Nachbar von Feld 4
    $SC_ARR_PLACES[4][3] = 61; 3. Nachbar von Feld 4
    $SC_ARR_PLACES[4][4] = 60; 4. Nachbar von Feld 4
    $SC_ARR_PLACES[5][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[5][1] = 0; 1. Nachbar von Feld 5
    $SC_ARR_PLACES[5][2] = 6; 2. Nachbar von Feld 5
    $SC_ARR_PLACES[6][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[6][1] = 5; 1. Nachbar von Feld 6
    $SC_ARR_PLACES[6][2] = 7; 2. Nachbar von Feld 6
    $SC_ARR_PLACES[7][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[7][1] = 6; 1. Nachbar von Feld 7
    $SC_ARR_PLACES[7][2] = 8; 2. Nachbar von Feld 7
    $SC_ARR_PLACES[8][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[8][1] = 7; 1. Nachbar von Feld 8
    $SC_ARR_PLACES[8][2] = 9; 2. Nachbar von Feld 8
    $SC_ARR_PLACES[9][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[9][1] = 1; 1. Nachbar von Feld 9
    $SC_ARR_PLACES[9][2] = 8; 2. Nachbar von Feld 9
    $SC_ARR_PLACES[10][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[10][1] = 0; 1. Nachbar von Feld 10
    $SC_ARR_PLACES[10][2] = 11; 2. Nachbar von Feld 10
    $SC_ARR_PLACES[11][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[11][1] = 10; 1. Nachbar von Feld 11
    $SC_ARR_PLACES[11][2] = 12; 2. Nachbar von Feld 11
    $SC_ARR_PLACES[12][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[12][1] = 11; 1. Nachbar von Feld 12
    $SC_ARR_PLACES[12][2] = 13; 2. Nachbar von Feld 12
    $SC_ARR_PLACES[13][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[13][1] = 12; 1. Nachbar von Feld 13
    $SC_ARR_PLACES[13][2] = 14; 2. Nachbar von Feld 13
    $SC_ARR_PLACES[14][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[14][1] = 2; 1. Nachbar von Feld 14
    $SC_ARR_PLACES[14][2] = 13; 2. Nachbar von Feld 14
    $SC_ARR_PLACES[15][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[15][1] = 0; 1. Nachbar von Feld 15
    $SC_ARR_PLACES[15][2] = 16; 2. Nachbar von Feld 15
    $SC_ARR_PLACES[16][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[16][1] = 17; 1. Nachbar von Feld 16
    $SC_ARR_PLACES[16][2] = 15; 2. Nachbar von Feld 16
    $SC_ARR_PLACES[17][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[17][1] = 16; 1. Nachbar von Feld 17
    $SC_ARR_PLACES[17][2] = 18; 2. Nachbar von Feld 17
    $SC_ARR_PLACES[18][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[18][1] = 17; 1. Nachbar von Feld 18
    $SC_ARR_PLACES[18][2] = 19; 2. Nachbar von Feld 18
    $SC_ARR_PLACES[19][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[19][1] = 18; 1. Nachbar von Feld 19
    $SC_ARR_PLACES[19][2] = 3; 2. Nachbar von Feld 19
    $SC_ARR_PLACES[20][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[20][1] = 0; 1. Nachbar von Feld 20
    $SC_ARR_PLACES[20][2] = 21; 2. Nachbar von Feld 20
    $SC_ARR_PLACES[21][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[21][1] = 20; 1. Nachbar von Feld 21
    $SC_ARR_PLACES[21][2] = 22; 2. Nachbar von Feld 21
    $SC_ARR_PLACES[22][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[22][1] = 21; 1. Nachbar von Feld 22
    $SC_ARR_PLACES[22][2] = 23; 2. Nachbar von Feld 22
    $SC_ARR_PLACES[23][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[23][1] = 22; 1. Nachbar von Feld 23
    $SC_ARR_PLACES[23][2] = 24; 2. Nachbar von Feld 23
    $SC_ARR_PLACES[24][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[24][1] = 4; 1. Nachbar von Feld 24
    $SC_ARR_PLACES[24][2] = 23; 2. Nachbar von Feld 24
    $SC_ARR_PLACES[25][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[25][1] = 4; 1. Nachbar von Feld 25
    $SC_ARR_PLACES[25][2] = 26; 2. Nachbar von Feld 25
    $SC_ARR_PLACES[26][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[26][1] = 25; 1. Nachbar von Feld 26
    $SC_ARR_PLACES[26][2] = 27; 2. Nachbar von Feld 26
    $SC_ARR_PLACES[27][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[27][1] = 26; 1. Nachbar von Feld 27
    $SC_ARR_PLACES[27][2] = 28; 2. Nachbar von Feld 27
    $SC_ARR_PLACES[28][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[28][1] = 27; 1. Nachbar von Feld 28
    $SC_ARR_PLACES[28][2] = 29; 2. Nachbar von Feld 28
    $SC_ARR_PLACES[29][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[29][1] = 28; 1. Nachbar von Feld 29
    $SC_ARR_PLACES[29][2] = 30; 2. Nachbar von Feld 29
    $SC_ARR_PLACES[30][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[30][1] = 29; 1. Nachbar von Feld 30
    $SC_ARR_PLACES[30][2] = 31; 2. Nachbar von Feld 30
    $SC_ARR_PLACES[31][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[31][1] = 32; 1. Nachbar von Feld 31
    $SC_ARR_PLACES[31][2] = 30; 2. Nachbar von Feld 31
    $SC_ARR_PLACES[32][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[32][1] = 33; 1. Nachbar von Feld 32
    $SC_ARR_PLACES[32][2] = 31; 2. Nachbar von Feld 32
    $SC_ARR_PLACES[33][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[33][1] = 32; 1. Nachbar von Feld 33
    $SC_ARR_PLACES[33][2] = 2; 2. Nachbar von Feld 33
    $SC_ARR_PLACES[34][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[34][1] = 35; 1. Nachbar von Feld 34
    $SC_ARR_PLACES[34][2] = 2; 2. Nachbar von Feld 34
    $SC_ARR_PLACES[35][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[35][1] = 34; 1. Nachbar von Feld 35
    $SC_ARR_PLACES[35][2] = 36; 2. Nachbar von Feld 35
    $SC_ARR_PLACES[36][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[36][1] = 35; 1. Nachbar von Feld 36
    $SC_ARR_PLACES[36][2] = 37; 2. Nachbar von Feld 36
    $SC_ARR_PLACES[37][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[37][1] = 38; 1. Nachbar von Feld 37
    $SC_ARR_PLACES[37][2] = 36; 2. Nachbar von Feld 37
    $SC_ARR_PLACES[38][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[38][1] = 39; 1. Nachbar von Feld 38
    $SC_ARR_PLACES[38][2] = 37; 2. Nachbar von Feld 38
    $SC_ARR_PLACES[39][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[39][1] = 38; 1. Nachbar von Feld 39
    $SC_ARR_PLACES[39][2] = 40; 2. Nachbar von Feld 39
    $SC_ARR_PLACES[40][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[40][1] = 39; 1. Nachbar von Feld 40
    $SC_ARR_PLACES[40][2] = 41; 2. Nachbar von Feld 40
    $SC_ARR_PLACES[41][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[41][1] = 42; 1. Nachbar von Feld 41
    $SC_ARR_PLACES[41][2] = 40; 2. Nachbar von Feld 41
    $SC_ARR_PLACES[42][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[42][1] = 3; 1. Nachbar von Feld 42
    $SC_ARR_PLACES[42][2] = 41; 2. Nachbar von Feld 42
    $SC_ARR_PLACES[43][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[43][1] = 3; 1. Nachbar von Feld 43
    $SC_ARR_PLACES[43][2] = 44; 2. Nachbar von Feld 43
    $SC_ARR_PLACES[44][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[44][1] = 43; 1. Nachbar von Feld 44
    $SC_ARR_PLACES[44][2] = 45; 2. Nachbar von Feld 44
    $SC_ARR_PLACES[45][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[45][1] = 46; 1. Nachbar von Feld 45
    $SC_ARR_PLACES[45][2] = 44; 2. Nachbar von Feld 45
    $SC_ARR_PLACES[46][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[46][1] = 47; 1. Nachbar von Feld 46
    $SC_ARR_PLACES[46][2] = 45; 2. Nachbar von Feld 46
    $SC_ARR_PLACES[47][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[47][1] = 48; 1. Nachbar von Feld 47
    $SC_ARR_PLACES[47][2] = 46; 2. Nachbar von Feld 47
    $SC_ARR_PLACES[48][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[48][1] = 49; 1. Nachbar von Feld 48
    $SC_ARR_PLACES[48][2] = 47; 2. Nachbar von Feld 48
    $SC_ARR_PLACES[49][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[49][1] = 50; 1. Nachbar von Feld 49
    $SC_ARR_PLACES[49][2] = 48; 2. Nachbar von Feld 49
    $SC_ARR_PLACES[50][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[50][1] = 51; 1. Nachbar von Feld 50
    $SC_ARR_PLACES[50][2] = 49; 2. Nachbar von Feld 50
    $SC_ARR_PLACES[51][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[51][1] = 50; 1. Nachbar von Feld 51
    $SC_ARR_PLACES[51][2] = 1; 2. Nachbar von Feld 51
    $SC_ARR_PLACES[52][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[52][1] = 1; 1. Nachbar von Feld 52
    $SC_ARR_PLACES[52][2] = 53; 2. Nachbar von Feld 52
    $SC_ARR_PLACES[53][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[53][1] = 54; 1. Nachbar von Feld 53
    $SC_ARR_PLACES[53][2] = 52; 2. Nachbar von Feld 53
    $SC_ARR_PLACES[54][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[54][1] = 55; 1. Nachbar von Feld 54
    $SC_ARR_PLACES[54][2] = 53; 2. Nachbar von Feld 54
    $SC_ARR_PLACES[55][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[55][1] = 54; 1. Nachbar von Feld 55
    $SC_ARR_PLACES[55][2] = 56; 2. Nachbar von Feld 55
    $SC_ARR_PLACES[56][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[56][1] = 55; 1. Nachbar von Feld 56
    $SC_ARR_PLACES[56][2] = 57; 2. Nachbar von Feld 56
    $SC_ARR_PLACES[57][0] = "SAVE"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[57][1] = 58; 1. Nachbar von Feld 57
    $SC_ARR_PLACES[57][2] = 56; 2. Nachbar von Feld 57
    $SC_ARR_PLACES[58][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[58][1] = 59; 1. Nachbar von Feld 58
    $SC_ARR_PLACES[58][2] = 57; 2. Nachbar von Feld 58
    $SC_ARR_PLACES[59][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[59][1] = 58; 1. Nachbar von Feld 59
    $SC_ARR_PLACES[59][2] = 60; 2. Nachbar von Feld 59
    $SC_ARR_PLACES[60][0] = "GRASS"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[60][1] = 4; 1. Nachbar von Feld 60
    $SC_ARR_PLACES[60][2] = 59; 2. Nachbar von Feld 60
    $SC_ARR_PLACES[61][0] = "HOME2"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[61][1] = 4; 1. Nachbar von Feld 61
    $SC_ARR_PLACES[62][0] = "HOME1"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[62][1] = 2; 1. Nachbar von Feld 62
    $SC_ARR_PLACES[63][0] = "HOME2"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[63][1] = 3; 1. Nachbar von Feld 63
    $SC_ARR_PLACES[64][0] = "HOME1"; Dieser Wert ist irrelevant
    $SC_ARR_PLACES[64][1] = 1; 1. Nachbar von Feld 64

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

    Dim $aRetPath[2]

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

    $aRetPath[0] = 0
    PathFinder(63,11)
    _ArrayDisplay($aRetPath, "63 -> 11")

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

    $aRetPath[0] = 0
    PathFinder(21,6)
    _ArrayDisplay($aRetPath, "21 -> 6")

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

    $aRetPath[0] = 0
    PathFinder(27,12)
    _ArrayDisplay($aRetPath, "27 -> 12")

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

    Func PathFinder($iStart, $iZiel, $szPath = ";", $iSteps = 0)

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

    $szPath &= $iStart & ";"
    ; Abbruchbedingung für unendliche Rekursionen
    StringReplace($szPath, ";" & $iStart & ";", ";" & $iStart & ";")
    If @extended > 1 Then Return -1 ; Wenn das Startfeld mehr als einmal im Weg steht war es wohl ein Umweg

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

    For $i = 1 To UBound($SC_ARR_PLACES, 2) - 1
    If IsInt($SC_ARR_PLACES[$iStart][$i]) Then ; Wenn ein Nachbarfeld eingetragen ist
    If $SC_ARR_PLACES[$iStart][$i] = $iZiel Then ; Wenn Nachbarfeld das Zielfeld ist
    ;~ ConsoleWrite($szPath & @CRLF)
    If ($aRetPath[0] = 0) Or ($aRetPath[0] > $iSteps + 1) Then ; wenn es der kürzeste Weg ist
    $aRetPath[0] = $iSteps + 1 ; Schritte bis zum Ziel eintragen
    $aRetPath[1] = StringTrimLeft($szPath,1) & $iZiel ; Weg eintragen
    EndIf
    Else ; Wenn Nachbarfeld nicht das Zielfeld ist
    PathFinder($SC_ARR_PLACES[$iStart][$i], $iZiel, $szPath, $iSteps + 1) ; weitersuchen
    EndIf
    EndIf
    Next
    EndFunc ;==>PathFinder

    [/autoit]
  • STRATO HiDrive automatisch verbinden

    • bernd670
    • 29. Dezember 2010 um 14:17

    Hallo,

    probier mal das.

    Spoiler anzeigen
    [autoit]

    ;Falls Netzlaufwerk verbunden, trennen
    DriveMapDel("x:")

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

    ;Benutzerdaten abfrage
    $login = InputBox("Benutzername", "Bitte Benutzername eingeben")
    $passwd = InputBox("Passwort", "Bitte Passwort eingeben", "", "*")

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

    $share = "\\smb.hidrive.strato.com\root\users\" & $login

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

    ;Verbindungsaufbau
    DriveMapAdd("x:", $share, 0, $login, $passwd)

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

    ; Laufwerk im Explorer umbenenen
    If Not @error Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\" + StringReplace($share, "\", "#"), "_LabelFromDesktopINI", "REG_SZ", $login)

    [/autoit]
  • Lern Trainer

    • bernd670
    • 29. Dezember 2010 um 12:42

    [OT]
    Aber Noob ist doch im engl. nur die kurzform für Newbie.
    [/OT]

  • zahl 08 darf nicht als 8 ausgegeben werden.... wie geht das?

    • bernd670
    • 29. Dezember 2010 um 12:03

    Der 1. Parameter in deinem Stringformat ist $source2[0], und da da kein Formatstring enthalten ist wird der Rest ignoriert.

  • zahl 08 darf nicht als 8 ausgegeben werden.... wie geht das?

    • bernd670
    • 29. Dezember 2010 um 11:34

    AspirinJunkie,

    in deinem StringFormat hat sich wohl ein Bug eingeschlichen ;)

    [autoit]

    ; Zahl mit 2 Nachkommastellen ausgeben
    MsgBox(0,"", StringFormat("%.2f", $source2[0]))

    [/autoit]
  • zahl 08 darf nicht als 8 ausgegeben werden.... wie geht das?

    • bernd670
    • 29. Dezember 2010 um 10:20

    Hallo,

    meinst du sowas:

    [autoit]

    $szFloat = "5,06"

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

    $szFloat = StringReplace($szFloat, ",", ".")
    $fNK = Round(Number($szFloat) - Int($szFloat), 2)

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

    MsgBox(0,"Nachkommawert", $fNK)

    [/autoit]
  • Driver installieren (.inf .sys .cat)

    • bernd670
    • 29. Dezember 2010 um 09:46

    Hallo,

    probiers mal so:

    Spoiler anzeigen
    [autoit]

    $szInfDir = "d:\temp\u320" ; Verzeichnis mit der InfDatei
    $szInfFile = "adpu320.inf" ; Name der InfDatei

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

    RunWait(@ComSpec & " /E:ON /C %SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 " & $szInfFile, $szInfDir, @SW_SHOW)

    [/autoit]

    Verzeichnis muss noch angepasst werden.

  • Dienste starten und beenden

    • bernd670
    • 28. Dezember 2010 um 22:15

    Mit ein paar Änderungen funktionieren auch die DLL-Aufrufe auf Remotesystemen!

    Spoiler anzeigen
    [autoit]

    Global $STANDARD_RIGHTS_REQUIRED = 0x000F0000
    Global $SC_MANAGER_CONNECT = 0x0001
    Global $SC_MANAGER_CREATE_SERVICE = 0x0002
    Global $SC_MANAGER_ENUMERATE_SERVICE = 0x0004
    Global $SC_MANAGER_LOCK = 0x0008
    Global $SC_MANAGER_QUERY_LOCK_STATUS = 0x0010
    Global $SC_MANAGER_MODIFY_BOOT_CONFIG = 0x0020

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

    Global $SC_MANAGER_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _
    $SC_MANAGER_CONNECT, _
    $SC_MANAGER_CREATE_SERVICE, _
    $SC_MANAGER_ENUMERATE_SERVICE, _
    $SC_MANAGER_LOCK, _
    $SC_MANAGER_QUERY_LOCK_STATUS, _
    $SC_MANAGER_MODIFY_BOOT_CONFIG)

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

    Global $SERVICE_QUERY_CONFIG = 0x0001
    Global $SERVICE_CHANGE_CONFIG = 0x0002
    Global $SERVICE_QUERY_STATUS = 0x0004
    Global $SERVICE_ENUMERATE_DEPENDENTS = 0x0008
    Global $SERVICE_START = 0x0010
    Global $SERVICE_STOP = 0x0020
    Global $SERVICE_PAUSE_CONTINUE = 0x0040
    Global $SERVICE_INTERROGATE = 0x0080
    Global $SERVICE_USER_DEFINED_CONTROL = 0x0100

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

    Global $SERVICE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _
    $SERVICE_QUERY_CONFIG, _
    $SERVICE_CHANGE_CONFIG, _
    $SERVICE_QUERY_STATUS, _
    $SERVICE_ENUMERATE_DEPENDENTS, _
    $SERVICE_START, _
    $SERVICE_STOP, _
    $SERVICE_PAUSE_CONTINUE, _
    $SERVICE_INTERROGATE, _
    $SERVICE_USER_DEFINED_CONTROL)

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

    Global $SERVICE_CONTROL_STOP = 0x00000001
    Global $SERVICE_CONTROL_INTERROGATE = 0x00000004

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

    ;#comments-start
    $RemotePC = "PCNAME"
    ;Example - stop print spooler service
    If _ServiceRunning("Remote-Registrierung", $RemotePC) Then
    _StopService("Remote-Registrierung", $RemotePC)
    If @error Then
    MsgBox(64, "", "Failed to stop Spooler service")
    Else
    MsgBox(64, "", "Spooler service stopped")
    EndIf
    Else
    _StartService("Remote-Registrierung", $RemotePC)
    If @error Then
    MsgBox(64, "", "Failed to start Spooler service")
    Else
    MsgBox(64, "", "Spooler service started")
    EndIf
    EndIf
    ;#comments-end

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

    ;===============================================================================
    ;
    ; Description: Starts a service
    ; Syntax: _StartService($sServiceName)
    ; Parameter(s): $sServiceName - Name of service to start
    ; Requirement(s): None
    ; Return Value(s): On Success - Sets @error = 0
    ; On Failure - Sets:
    ; @error = 1056: Already running
    ; @error = 1060: Service does not exist
    ; Author(s): SumTingWong
    ; Documented by: noone
    ;
    ;===============================================================================
    Func _StartService($sServiceName, $Computer = ".")
    Local $arRet
    Local $hSC
    Local $hService
    Local $lError = -1

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

    $arRet = DllCall("advapi32.dll", "long", "OpenSCManager", _
    "str", $Computer, _
    "str", "ServicesActive", _
    "long", $SC_MANAGER_CONNECT)
    If $arRet[0] = 0 Then
    $arRet = DllCall("kernel32.dll", "long", "GetLastError")
    $lError = $arRet[0]
    Else
    $hSC = $arRet[0]
    $arRet = DllCall("advapi32.dll", "long", "OpenService", _
    "long", $hSC, _
    "str", $sServiceName, _
    "long", $SERVICE_START)
    If $arRet[0] = 0 Then
    $arRet = DllCall("kernel32.dll", "long", "GetLastError")
    $lError = $arRet[0]
    Else
    $hService = $arRet[0]
    $arRet = DllCall("advapi32.dll", "int", "StartService", _
    "long", $hService, _
    "long", 0, _
    "str", "")
    If $arRet[0] = 0 Then
    $arRet = DllCall("kernel32.dll", "long", "GetLastError")
    $lError = $arRet[0]
    EndIf
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $hService)
    EndIf
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $hSC)
    EndIf
    If $lError <> -1 Then SetError($lError)
    EndFunc ;==>_StartService

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

    ;===============================================================================
    ;
    ; Description: Stops a service
    ; Syntax: _StopService($sServiceName)
    ; Parameter(s): $sServiceName - Name of service to stop
    ; Requirement(s): None
    ; Return Value(s): On Success - Sets:
    ; @error = 0
    ; On Failure - Sets:
    ; @error = 1062: Already stopped
    ; @error = 1060: Service does not exist
    ; Author(s): SumTingWong
    ; Documented by: noone
    ;
    ;===============================================================================
    Func _StopService($sServiceName, $Computer = ".")
    Local $arRet
    Local $hSC
    Local $hService
    Local $lError = -1

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

    $arRet = DllCall("advapi32.dll", "long", "OpenSCManager", _
    "str", $Computer, _
    "str", "ServicesActive", _
    "long", $SC_MANAGER_CONNECT)
    If $arRet[0] = 0 Then
    $arRet = DllCall("kernel32.dll", "long", "GetLastError")
    $lError = $arRet[0]
    Else
    $hSC = $arRet[0]
    $arRet = DllCall("advapi32.dll", "long", "OpenService", _
    "long", $hSC, _
    "str", $sServiceName, _
    "long", $SERVICE_STOP)
    If $arRet[0] = 0 Then
    $arRet = DllCall("kernel32.dll", "long", "GetLastError")
    $lError = $arRet[0]
    Else
    $hService = $arRet[0]
    $arRet = DllCall("advapi32.dll", "int", "ControlService", _
    "long", $hService, _
    "long", $SERVICE_CONTROL_STOP, _
    "str", "")
    If $arRet[0] = 0 Then
    $arRet = DllCall("kernel32.dll", "long", "GetLastError")
    $lError = $arRet[0]
    EndIf
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $hService)
    EndIf
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $hSC)
    EndIf
    If $lError <> -1 Then SetError($lError)
    EndFunc ;==>_StopService

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

    ;===============================================================================
    ;
    ; Description: Checks to see if a service is installed
    ; Syntax: _ServiceExists($sServiceName)
    ; Parameter(s): $sServiceName - Name of service to check
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): SumTingWong
    ; Documented by: noone
    ;
    ;===============================================================================
    Func _ServiceExists($sServiceName, $Computer = ".")
    Local $arRet
    Local $hSC
    Local $bExist = 0

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

    $arRet = DllCall("advapi32.dll", "long", "OpenSCManager", _
    "str", $Computer, _
    "str", "ServicesActive", _
    "long", $SC_MANAGER_CONNECT)
    If $arRet[0] <> 0 Then
    $hSC = $arRet[0]
    $arRet = DllCall("advapi32.dll", "long", "OpenService", _
    "long", $hSC, _
    "str", $sServiceName, _
    "long", $SERVICE_INTERROGATE)
    If $arRet[0] <> 0 Then
    $bExist = 1
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $arRet[0])
    EndIf
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $hSC)
    EndIf
    Return $bExist
    EndFunc ;==>_ServiceExists

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

    ;===============================================================================
    ;
    ; Description: Checks to see if a service is running
    ; Syntax: _ServiceRunning($sServiceName)
    ; Parameter(s): $sServiceName - Name of service to check
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): SumTingWong
    ; Documented by: noone
    ;
    ;===============================================================================
    Func _ServiceRunning($sServiceName, $Computer = ".")
    Local $arRet
    Local $hSC
    Local $hService
    Local $bRunning = 0

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

    $arRet = DllCall("advapi32.dll", "long", "OpenSCManager", _
    "str", $Computer, _
    "str", "ServicesActive", _
    "long", $SC_MANAGER_CONNECT)
    If $arRet[0] <> 0 Then
    $hSC = $arRet[0]
    $arRet = DllCall("advapi32.dll", "long", "OpenService", _
    "long", $hSC, _
    "str", $sServiceName, _
    "long", $SERVICE_INTERROGATE)
    If $arRet[0] <> 0 Then
    $hService = $arRet[0]
    $arRet = DllCall("advapi32.dll", "int", "ControlService", _
    "long", $hService, _
    "long", $SERVICE_CONTROL_INTERROGATE, _
    "str", "")
    $bRunning = $arRet[0]
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $hService)
    EndIf
    DllCall("advapi32.dll", "int", "CloseServiceHandle", "long", $hSC)
    EndIf
    Return $bRunning
    EndFunc ;==>_ServiceRunning

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

    ;===============================================================================
    ; Description: Delete a Windows Service
    ; Syntax: _ServDelete($iName[, $Computer])
    ; Parameter(s): $iName - The name of the service to delete
    ; $Computer - The network name of the computer (optional) The local computer is default
    ; Requirement(s): None
    ; Return Value(s): Success - Deletes the service
    ; Failure Sets @Error = -1 if service is not found
    ; Author(s) GEOSoft
    ; Modification(s):
    ; Note(s):
    ; Example(s):
    ;===============================================================================
    Func _ServDelete($iName, $Computer = ".")
    $Service = ObjGet("winmgmts:\\" & $Computer & "\root\cimv2")
    $sItems = $Service.ExecQuery("Select * from Win32_Service")
    For $objService In $sItems
    If $objService.Name == $iName Then
    $objService.StopService($objService.Name)
    $objService.Delete($objService.Name)
    Return
    EndIf
    Next
    Return SetError(-1)
    EndFunc ;==>_ServDelete

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

    ;===============================================================================
    ; Description: Return the details of a Windows Service
    ; Syntax: _ServGetDetails($iName[, $Computer])
    ; Parameter(s): $iName - The name of the service to check
    ; $Computer - The network name of the computer (optional) The local computer is default
    ; Requirement(s): None
    ; Return Value(s): Success - Returns an array of the service details where element (-1 = Yes, 0 = No)
    ; [1] = Computer Network Name
    ; [2] = Service Name
    ; [3] = Service Type (Own Process, Share Process)
    ; [4] = Service State (Stopped, Running, Paused)
    ; [5] = Exit Code (0, 1077)
    ; [6] = Process ID
    ; [7] = Can Be Paused (-1, 0)
    ; [8] = Can Be Stopped (-1, 0)
    ; [9] = Caption
    ; [10] = Description
    ; [11] = Can Interact With Desktop (-1, 0)
    ; [12] = Display Name
    ; [13] = Error Control (Normal, Ignore)
    ; [14] = Executable Path Name
    ; [15] = Service Started (-1, 0)
    ; [16] = Start Mode (Auto, Manual, Disabled)
    ; [17] = Account Name (LocalSystem, NT AUTHORITY\LocalService, NT AUTHORITY\NetworkService)
    ; Failure Sets @Error = -1 if service not found
    ; Author(s) GEOSoft
    ; Modification(s):
    ; Note(s):
    ; Example(s): $Var = _ServGetDetails("ATI Smart")
    ; $Dtl = "System Name|Name|Type|State|ExitCode|Process ID|Can Pause|Can Stop|Caption|Description|"
    ; $Dtl = StringSplit($Dtl & "Interact With DskTop|Display Name|Error Control|Exec File Path|Started|Start Mode|Account", '|')
    ; For $I = 1 To $Var[0]
    ; MsgBox(4096,$Dtl[$I], $Var[$I])
    ; Next
    ;===============================================================================
    Func _ServGetDetails($iName, $Computer = ".")
    Local $Rtn = ''
    $Service = ObjGet("winmgmts:\\" & $Computer & "\root\cimv2")
    $sItems = $Service.ExecQuery("Select * from Win32_Service")
    For $objService In $sItems
    If $objService.Name == $iName Then
    $Rtn &= $objService.SystemName & '|' & $objService.Name & '|' & $objService.ServiceType & '|' & $objService.State & '|'
    $Rtn &= $objService.ExitCode & '|' & $objService.ProcessID & '|' & $objService.AcceptPause & '|' & $objService.AcceptStop & '|'
    $Rtn &= $objService.Caption & '|' & $objService.Description & '|' & $objService.DesktopInteract & '|' & $objService.DisplayName & '|'
    $Rtn &= $objService.ErrorControl & '|' & $objService.PathName & '|' & $objService.Started & '|' & $objService.StartMode & '|'
    $Rtn &= $objService.StartName
    Return StringSplit($Rtn, '|')
    EndIf
    Next
    Return SetError(-1)
    EndFunc ;==>_ServGetDetails

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

    ;===============================================================================
    ; Description: Return the current state of a Windows Service
    ; Syntax: _ServGetState($iName[, $Computer])
    ; Parameter(s): $iName - The name of the service to check
    ; $Computer - The network name of the computer (optional) The local computer is default
    ; Requirement(s): None
    ; Return Value(s): Success - Returns the state of the service
    ; Failure Sets @Error = -1 if service not found
    ; Author(s) GEOSoft
    ; Modification(s):
    ; Note(s):
    ; Example(s):
    ;===============================================================================
    Func _ServGetState($iName, $Computer = ".")
    $Service = ObjGet("winmgmts:\\" & $Computer & "\root\cimv2")
    $sItems = $Service.ExecQuery("Select * from Win32_Service")
    For $objItem In $sItems
    If $objItem.Name == $iName Then Return $objItem.State
    Next
    Return SetError(-1)
    EndFunc ;==>_ServGetState

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

    ;===============================================================================
    ; Description: List the currently installed services
    ; Syntax: _ServListInstalled([,$Computer])
    ; Parameter(s): $Computer - The network name of the computer (optional) The local computer is default
    ; Requirement(s): None
    ; Return Value(s): Success - Returns the state of the service
    ; Failure Sets @Error = -1 if service not found
    ; Author(s) GEOSoft
    ; Modification(s):
    ; Note(s):
    ; Example(s):
    ;===============================================================================
    Func _ServListInstalled($Computer = ".")
    Local $Rtn = ''
    $Service = ObjGet("winmgmts:\\" & $Computer & "\root\cimv2")
    $sItems = $Service.ExecQuery("Select * from Win32_Service")
    For $objService In $sItems
    $Rtn &= $objService.Name & '|'
    Next
    Return StringSplit(StringTrimRight($Rtn, 1), '|')
    EndFunc ;==>_ServListInstalled

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

    ;===============================================================================
    ; Description: Pause a Windows Service
    ; Syntax: _ServPause($iName[, $Computer])
    ; Parameter(s): $iName - The name of the service to start
    ; $Computer - The network name of the computer (optional). The local computer is default
    ; Requirement(s): None
    ; Return Value(s): Success - Pauses the service
    ; Failure Sets @Error = -1 if service not found or service is already paused
    ; Author(s) GEOSoft
    ; Modification(s):
    ; Note(s):
    ; Example(s):
    ;===============================================================================
    Func _ServPause($iName, $Computer = ".")
    $Service = ObjGet("winmgmts:\\" & $Computer & "\root\cimv2")
    $sItems = $Service.ExecQuery("Select * from Win32_Service Where State = 'Running' ")
    For $objService In $sItems
    If $objService.Name == $iName Then
    $objService.PauseService($objService.Name)
    Return
    EndIf
    Next
    Return SetError(-1)
    EndFunc ;==>_ServPause

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

    ;===============================================================================
    ; Description: Resumes a previously paused Windows auto-start service
    ; Syntax: _ServResume($iName[, $Computer])
    ; Parameter(s): $iName - The name of the service to start
    ; $Computer - The network name of the computer (optional). The local computer is default
    ; Requirement(s): None
    ; Return Value(s): Success - Resumes the service
    ; Failure Sets @Error = -1 if service not found
    ; Author(s) GEOSoft
    ; Modification(s):
    ; Note(s):
    ; Example(s):
    ;===============================================================================
    Func _ServResume($iName, $Computer = ".")
    $Service = ObjGet("winmgmts:\\" & $Computer & "\root\cimv2")
    $sItems = $Service.ExecQuery("Select * from Win32_Service Where State = 'Paused' and StartMode = 'Auto'")
    For $objService In $sItems
    If $objService.Name == $iName Then
    $objService.ResumeService($objService.Name)
    Return
    EndIf
    Next
    Return SetError(-1)
    EndFunc ;==>_ServResume

    [/autoit]
  • $b_trace von Funktion _INetSmtpMail anwenden

    • bernd670
    • 28. Dezember 2010 um 21:19

    Es reicht jetzt! Bitte die Netiquette wahren!

  • Komplexeres? schnelles durchsuchen größerer Arrays

    • bernd670
    • 28. Dezember 2010 um 20:23

    Hallo,

    kannst du vllt. noch erklären was als Ergebnis rauskommen soll?
    Soll es eine Liste mit den Änderungen sein?
    Mußt du nur wissen ob sich was geändert hat, um die neue Liste einzulesen?

  • StringBetween

    • bernd670
    • 28. Dezember 2010 um 18:43

    Hallo,

    häufig wird einfach übersehen das das Ergebnis, bei Erfolg, in einem Array zurückgegeben wird!

  • Schittpunkt von Kreis und Grade

    • bernd670
    • 28. Dezember 2010 um 16:31

    Hallo,

    zeig doch einfach deine Versuche, dann kann dir evtl. auch sagen was falsch ist!

  • Driver installieren (.inf .sys .cat)

    • bernd670
    • 28. Dezember 2010 um 16:15

    Hallo,

    das Installieren von INF-Dateien sollte so funktionieren:

    [autoit]

    $szInfDir = "d:\test" ; Verzeichnis mit der InfDatei
    $szInfFile = "test.inf" ; Name der InfDatei

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

    RunWait("%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 " & $szInfFile, $szInfDir, @SW_HIDE)

    [/autoit]

    Einfach die Variablen $szInfDir und $szInfFile anpassen!

  • in eine Zeile schreiben

    • bernd670
    • 28. Dezember 2010 um 10:11

    Hallo,

    man kann in AutoIt immer nur einen Befehl je Zeile schreiben!

  • Automatischer Zeilenumbruch

    • bernd670
    • 28. Dezember 2010 um 10:04

    Hallo,

    das Problem mit dem Zeilenumbruch hatten wir doch schon mal -> @LF nach Anzahl zeichen mit GUICtrlSetTip

  • StringRegExpReplace -> String kuerzen

    • bernd670
    • 26. Dezember 2010 um 18:58

    Hallo,

    schon mal was von _PathSplit gehört?

  • Rechenschritte verursachen Rundungsfehler

    • bernd670
    • 26. Dezember 2010 um 18:30

    Hallo,

    Ich hab's etwas gekürzt und den Fehler mit der Prozentberechnung ist auch beseitigt!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEX.au3>
    #include <Array.au3>
    #include <EditConstants.au3>
    #include <UpdownConstants.au3>

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

    Opt("MustDeclareVars", 1)

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

    ; Konstanten ====================================================================================================================
    ; Anzahl der Produkte und Materialien
    Global Const $Produkte = 3
    Global Const $Materialien = 4
    ; Arrays ========================================================================================================================
    ; Array für den Materialverbrauch je Produkt
    Global $aKosten[$Produkte][$Materialien] = _
    [ _
    [3, 2, 5, 1], _ ; Materialverbrauch Produkt 1
    [7, 0, 5, 13], _ ; Materialverbrauch Produkt 2
    [10, 12, 18, 7] _ ; Materialverbrauch Produkt 3
    ]

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

    Global $aProduktNamen[$Produkte] = _
    [ _
    "Produkt1", _ ; Name für Produkt 1
    "Produkt2", _ ; Name für Produkt 2
    "Produkt3" _ ; Name für Produkt 3
    ]

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

    Global $aMaterialNamen[$Materialien] = _
    [ _
    "A", _ ; Name für Material 1
    "B", _ ; Name für Material 2
    "C", _ ; Name für Material 3
    "D" _ ; Name für Material 4
    ]

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

    ; Arrays für die Material-, Produkt- und Prozenteingabe
    Global $aMaterial[$Materialien]
    Global $aProdukt[$Produkte]
    Global $aProzent[$Produkte]
    ; Array für die Materialvorräte
    Global $aVorrat[$Materialien]
    ; Array für die Restmengen
    Global $aRest[$Materialien]
    ; Array für die ausgewählten Produkte
    Global $aAuswahl[$Produkte][2]
    ; Array für die Ergebnisse
    Global $aErgebnis[$Produkte][7]
    ; Variable zur Validierung
    Global $ProzentGesamt
    ; GUIGetMsg
    Global $GGM
    ; GUI für Eingabe ===============================================================================================================
    Global $MainGUI = GUICreate("Kalkulator", 500, 230)
    ;-------- Materialvorräte
    For $i = 0 To $Materialien - 1
    GUICtrlCreateLabel($aMaterialNamen[$i], 8 + $i * 125, 57, 18, 12)
    $aMaterial[$i] = GUICtrlCreateInput("", 28 + $i * 125, 53, 50, 20, $ES_NUMBER)
    Next
    ;-------- Produkte
    For $i = 0 To $Produkte - 1
    $aProdukt[$i] = GUICtrlCreateCheckbox($aProduktNamen[$i], 202, 90 + $i * 30)
    $aProzent[$i] = GUICtrlCreateInput("0", 113, 90 + $i * 30, 40, 20, $ES_NUMBER)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateUpdown($aProzent[$i], $UDS_ARROWKEYS)
    GUICtrlSetLimit(-1, 100, 0)
    GUICtrlCreateLabel("%", 156, 94 + $i * 30, 18, 12)
    Next
    ;-------- Berechnen
    Global $OK = GUICtrlCreateButton("Berechnen", 171, 190, 160, 30)
    GUISetState()
    ; MessageLoop ===================================================================================================================
    While True
    $GGM = GUIGetMsg()
    ; Bearbeitung der Produktauswahl
    For $iProdukt = 0 To $Produkte - 1
    If $GGM = $aProdukt[$iProdukt] Then
    If GUICtrlRead($aProdukt[$iProdukt]) = $GUI_CHECKED Then
    GUICtrlSetState($aProzent[$iProdukt], $GUI_ENABLE)
    Else
    GUICtrlSetData($aProzent[$iProdukt], "0")
    GUICtrlSetState($aProzent[$iProdukt], $GUI_DISABLE)
    EndIf
    EndIf
    Next

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

    Switch $GGM
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $ProzentGesamt = 0
    For $i = 0 To $Produkte - 1
    $ProzentGesamt += GUICtrlRead($aProzent[$i])
    Next
    If $ProzentGesamt < 100 Then
    MsgBox(48, "Fehler", "Es wurden noch nicht alle Prozente verteilt!" & @CRLF & "Alle Prozentangaben müssen zusammen genau 100% ergeben.")
    ElseIf $ProzentGesamt > 100 Then
    MsgBox(48, "Fehler", "Es wurden zu viele Prozente verteilt!" & @CRLF & "Alle Prozentangaben müssen zusammen genau 100% ergeben.")
    ElseIf $ProzentGesamt = 100 Then
    _Berechnen()
    _Anzeigen()
    EndIf
    EndSwitch
    WEnd
    ; Func _Berechnen ===============================================================================================================
    Func _Berechnen()
    Local $ErgebnisIndex = 0
    ; Array für die Berechnung leeren
    Dim $aVorrat[$Materialien]
    Dim $aRest[$Materialien]
    Dim $aAuswahl[$Produkte][2]
    Dim $aErgebnis[$Produkte][7]
    ; Materialeingaben und Produktauswahl auslesen
    For $i = 0 To $Materialien - 1
    $aVorrat[$i] = GUICtrlRead($aMaterial[$i])
    Next
    $aRest = $aVorrat
    For $i = 0 To $Produkte - 1
    If GUICtrlRead($aProdukt[$i]) = $GUI_CHECKED Then
    $aAuswahl[$ErgebnisIndex][0] = GUICtrlRead($aProzent[$i])
    $aAuswahl[$ErgebnisIndex][1] = $i
    $ErgebnisIndex += 1
    EndIf
    Next
    ; Produktauswahl absteigend nach Prozenten sortieren
    _ArraySort($aAuswahl, 1)
    ; Produktauswahl nach Prozenten verarbeiten
    For $i = 0 To $Produkte - 1
    If $aAuswahl[$i][0] Then
    _RechneProdukt($i, $aAuswahl[$i][0], $aAuswahl[$i][1])
    EndIf
    Next
    ; Restmengen verteilen
    _RechneReste()
    EndFunc ;==>_Berechnen
    ; Func _RechneProdukt ===========================================================================================================
    Func _RechneProdukt($ErgebnisIndex, $ProduktProzent, $ProduktIndex)
    ; Stückzahlen gemäß vorgegebener Prozente berechnen
    Local $ProduktMenge = 0x7FFFFFFF, $Min
    For $i = 0 To $Materialien - 1
    If $aKosten[$ProduktIndex][$i] > 0 Then
    $Min = Floor($aVorrat[$i] / 100 * $ProduktProzent / $aKosten[$ProduktIndex][$i])
    If $Min < $ProduktMenge Then $ProduktMenge = $Min
    EndIf
    Next
    For $i = 0 To $Materialien - 1
    $aErgebnis[$ErgebnisIndex][$i] = $ProduktMenge * $aKosten[$ProduktIndex][$i]
    $aRest[$i] -= $aErgebnis[$ErgebnisIndex][$i]
    Next
    $aErgebnis[$ErgebnisIndex][4] = $ProduktIndex
    $aErgebnis[$ErgebnisIndex][5] = $ProduktProzent
    $aErgebnis[$ErgebnisIndex][6] = $ProduktMenge
    EndFunc ;==>_RechneProdukt
    ; Func _RechneReste =============================================================================================================
    Func _RechneReste()
    ; Restmengen verteilen
    Local $ProduktIndex, $Zugeordnet = True
    While $Zugeordnet
    $Zugeordnet = False
    For $i = 0 To $Produkte - 1
    If Not $aAuswahl[$i][0] Then ContinueLoop
    $ProduktIndex = $aErgebnis[$i][4]
    For $J = 0 To $Materialien - 1
    If $aKosten[$ProduktIndex][$J] > $aRest[$J] Then ContinueLoop 2
    Next
    For $J = 0 To $Materialien - 1
    $aErgebnis[$i][$J] += $aKosten[$ProduktIndex][$J]
    $aRest[$J] -= $aKosten[$ProduktIndex][$J]
    Next
    $aErgebnis[$i][6] += 1
    $Zugeordnet = True
    Next
    WEnd
    EndFunc ;==>_RechneReste
    ; Func _Anzeigen ================================================================================================================
    Func _Anzeigen()
    ; Ergebnis GUI anzeigen
    Local $GesamtMenge = 0, $Gesamtrest = 0, $ProduktName
    Local $ErgebnisGUI = GUICreate("Ergebnis", 600, 243, -1, -1, -1, -1, $MainGUI)
    Local $ListView = GUICtrlCreateListView("Name: |Anzahl: |Material a: |Material b: |Material c |Material d: |Gesamt: ", 5, 10, 590, 203)
    For $i = 0 To $Produkte - 1
    If $aErgebnis[$i][6] Then
    $GesamtMenge = 0
    For $J = 0 To $Materialien - 1
    $GesamtMenge += $aErgebnis[$i][$J]
    Next
    $ProduktName = "Produkt " & ($aErgebnis[$i][4] + 1) & " (" & $aErgebnis[$i][5] & " %)"
    GUICtrlCreateListViewItem($ProduktName & "|" & $aErgebnis[$i][6] & "|" & $aErgebnis[$i][0] & "|" & $aErgebnis[$i][1] & "|" & $aErgebnis[$i][2] & "|" & $aErgebnis[$i][3] & "|" & $GesamtMenge, $ListView)
    EndIf
    Next
    GUICtrlCreateListViewItem("______________________", $ListView)
    GUICtrlSetColor(-1, 0x757575)
    For $i = 0 To $Materialien - 1
    $Gesamtrest += $aRest[$i]
    Next
    GUICtrlCreateListViewItem("Rest:||" & $aRest[0] & "|" & $aRest[1] & "|" & $aRest[2] & "|" & $aRest[3] & "|" & $Gesamtrest, $ListView)
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState()
    GUISetState(@SW_DISABLE, $MainGUI)

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    GUISetState(@SW_ENABLE, $MainGUI)
    GUIDelete($ErgebnisGUI)
    EndFunc ;==>_Anzeigen

    [/autoit]
  • Einem Pixel eine Farbe zuordnen

    • bernd670
    • 26. Dezember 2010 um 09:41

    Hallo,

    [autoit]

    If _IsPressed("A3", $vU32DLL) Then

    [/autoit]


    behandelt auch nur die rechte Ctrl/Strg-Taste!

    so werden beide Ctrl/Strg-Tasten berücksichtig!

    [autoit]

    If _IsPressed("A2", $vU32DLL) Or _IsPressed("A3", $vU32DLL) Then

    [/autoit]
  • _FileReadToArray ???Fehler???

    • bernd670
    • 25. Dezember 2010 um 22:29

    Es macht auch keinen Sinn ene Anwendung in ein Array einzulesen, mir fällt im Moment zumindest keiner ein.

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™