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

Beiträge von autoBert

  • Problem mit File

    • autoBert
    • 19. November 2011 um 15:03

    In dieser Datei gibt es keinen einzigen Eintrag der getauscht werden müsste, mit was soll man also testen?

    so sollte es aber für Dateien klappen die nach dem gleichen Schema aufgebaut sind:

    [autoit]

    #include <file.au3>
    #include <Array.au3>

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

    FileCopy(@ScriptDir & "\Options.txt",@ScriptDir & "\Options.test")
    ;zum testen eine Arbeitskopie erstellen

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

    Dim $aTmp[1]

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

    _FileReadToArray(@ScriptDir & "\Options.test",$aTmp)
    _ArrayDisplay($aTmp,"vor Tausch")

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

    for $i = 1 to $aTmp[0]
    if StringInStr($aTmp[$i],"music:0") Then $aTmp[$i] = "music:1.0"
    Next
    _ArrayDelete($aTmp,0)
    _FileWriteFromArray(@ScriptDir & "\Options.test",$aTmp)

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

    _FileReadToArray(@ScriptDir & "\Options.test",$aTmp)
    _ArrayDisplay($aTmp,"nach Tausch")

    [/autoit]

    mfg autoBert

  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 19. November 2011 um 14:19

    Hallo Ghostleader,

    ich weis nicht was du für einen Bug eingebaut hast (gar nicht gesucht). Ich habe meinen letzten Stand genommen deine Änderung der GUI (Stückzahlen) reinkopiert, die bereits berechnete Anzahl dem entsprechenden Label zugewiesen, eine kleine kosmetische Korrektur gemacht (VK jetzt auch --- wenn 0), siehe da lief sofort:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <ComboConstants.au3>
    #include <file.au3>
    #include <Array.au3>

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

    Global $bDebug = False
    Global $sStart, $sZiel

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

    Local $aTmp

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

    #Region ;Waren.CSV einlesen und in 2D-Array speichern
    _FileReadToArray(@ScriptDir & "\Waren.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "Waren.CSV")

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

    $aSplit = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    $iCols = $aSplit[0]
    If $bDebug Then _ArrayDisplay($aSplit, "Waren Colheader")

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

    Global $aWaren[$iRows][$iCols]
    ;Warenbezeichnung Gewicht und Stufe in Waren-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aWaren[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    If $bDebug Then _ArrayDisplay($aWaren, "Waren")
    #EndRegion
    #Region ;Verkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\VK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "VK.CSV")

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

    $aOrte = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    If $bDebug Then _ArrayDisplay($aOrte, "Orte aus VK.CSV")
    $iCols = $aOrte[0]

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

    Global $aVK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in VK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aVK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aVK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise")
    #EndRegion

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

    #Region ;Einkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\EK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "EK.CSV")
    $iCols = $aOrte[0]

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

    Global $aEK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in EK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aEK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aEK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise")
    #EndRegion

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

    $Form1 = GUICreate("Stadtwaren Rechner", 1000, 520, 380, 230)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Form1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Alex Sindy Amy\Desktop/Handel.jpg", 0, 0, 1000, 520)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Local $sPleaseSelect = " Wähle Stadt"
    Local $sComboText = ""
    For $i = 1 To $aOrte[0]
    $sComboText &= $aOrte[$i] & "|"
    Next
    $sComboText &= $sPleaseSelect
    $Startstadt = GUICtrlCreateCombo("", 85, 75, 110, 130, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    $Zielstadt = GUICtrlCreateCombo("", 212, 75, 110, 25, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    GUISetState(@SW_SHOW)

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

    Local $Ergebnis[8], $Ware[8], $Stufe[8], $Gewicht[8], $EK[8], $VK[8], $AnzahlStuk[8], $iHeight = 200
    For $i = 1 To 7
    $Ware[$i] = GUICtrlCreateLabel("", 30, $iHeight, 190, 40)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe[$i] = GUICtrlCreateLabel("", 240, $iHeight, 25, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht[$i] = GUICtrlCreateLabel("", 300, $iHeight, 80, 20, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK[$i] = GUICtrlCreateLabel("", 435, $iHeight, 50, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK[$i] = GUICtrlCreateLabel("", 540, $iHeight, 60, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis[$i] = GUICtrlCreateLabel("", 710, $iHeight, 100, 35, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $AnzahlStuk[$i] = GUICtrlCreateLabel("", 655, $iHeight, 45, 35, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $iHeight += 45
    Next

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

    #Region Übersicht Überschriften Labels
    $Warenname = GUICtrlCreateLabel("Ware", 80, 160, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Warenstufe = GUICtrlCreateLabel("Stufe", 225, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Einkauf = GUICtrlCreateLabel("EK-Preis", 415, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Verkauf = GUICtrlCreateLabel("VK-Preis", 530, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stuk = GUICtrlCreateLabel("Anzahl-Stück", 620, 160, 125, 35)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewin = GUICtrlCreateLabel("Gewinn", 745, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewichtname = GUICtrlCreateLabel("Gewicht", 310, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Von = GUICtrlCreateLabel("Von", 110, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Nach = GUICtrlCreateLabel("Nach", 237, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladung = GUICtrlCreateLabel("Max-Lade-Kapazität", 345, 50, 160, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladungbelegt = GUICtrlCreateLabel("Belegter-Laderaum", 540, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Listen = GUICtrlCreateLabel("Listen Übersicht", 743, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    #Region Buttons
    $BerechnungStart = GUICtrlCreateButton("Berechnung &Starten", 745, 75, 130, 20) ;eigentlich unnötig geworden
    ;GUICtrlSetState($BerechnungStart, $GUI_DISABLE)
    $ListeEK = GUICtrlCreateButton("Liste Einkaufspreise", 745, 105, 130, 20)
    $ListeVK = GUICtrlCreateButton("Liste Verkaufspreise", 745, 135, 130, 20)
    #EndRegion Buttons

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

    $InputLadung = GUICtrlCreateInput("1000", 360, 75, 130, 21)
    $InputLadungbelegt = GUICtrlCreateInput("0", 553, 75, 130, 21)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Startstadt, $Zielstadt, $BerechnungStart
    _Berechnung($nMsg)
    Case $ListeEK
    _ArraySort($aEK)
    _ArrayDisplay($aEK, "Einkaufspreise sortiert nach Warenbezeichnung ")
    Case $ListeVK
    _ArrayDisplay($aVK, "Verkaufspreise sortiert nach Warenbezeichnung")
    EndSwitch
    WEnd

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

    Func _Berechnung($nArt)
    If $nArt = $Startstadt Then
    $sStart = GUICtrlRead($Startstadt)
    If $sStart = $sPleaseSelect Then Return ;keine StartStadt ausgwählt also zurück
    $iStart = _ArraySearch($aOrte, $sStart) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite("Startiindex: " & $iStart & @TAB & $aEK[0][$iStart] & @CRLF)
    If $iStart < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Einkaufsarray gefunden!")
    Return
    EndIf
    ;_ArraySort($aEK, 1, 0, 0, $iStart) ;umgestellt auf arraySort2D_MC

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

    ;============ nötig für arraySort2D_MC
    ;es wird ein String gebildet in dem die Reihenfolge und Art der Sortierung festgelegt wird
    ;Sortierung ist notwendig damit die Waren einer Stadt hinereinander kommen die Standardsortierung ginge auch dann sind aber die Preise nicht korrekt aufsteigend sortiert
    $sColSortOrder = $iStart & "%N|0"
    For $i = 1 To UBound($aEK, 2) - 1
    If $i <> $iStart Then $sColSortOrder &= "|" & $i
    Next
    ;================
    _arraySort2D_MC($aEK, $sColSortOrder) ;sortiert Preise aufsteigend bei gleichem Preis 2. Kriterium Warenname
    $iUBoundEK = UBound($aEK) - 8 ;6 für die Schleifendurchgänge +1 weil 0-baisert +1 weil danach letztes Element die Spaltenüberschrift enthält
    For $iRow = 1 To 6 ;für Label(-Zeilen) 1 - 6
    $iEK = $aEK[$iUBoundEK + $iRow][$iStart] ;Einkaufspreis aus Array holen
    $sWare = $aEK[$iUBoundEK + $iRow][0] ;Warenbezeichnung aus Array holen
    GUICtrlSetData($Ware[$iRow], $sWare) ;Warenbezeichnung in Label eintragen
    GUICtrlSetData($EK[$iRow], $iEK) ;Einkaufspreis eintragen
    $iWare = _ArraySearch($aWaren, $aEK[$iUBoundEK + $iRow][0]) ;Ware im Array WAREN suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aWaren[$iWare][1] & @CRLF)
    If $iWare < 0 Then
    ;Fehler im Array WAREN kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", $aEK[$iUBoundEK + $iRow] & " nicht im Warenarray gefunden!")
    GUICtrlSetData($Gewicht[$iRow], "") ;Gewicht leeren
    GUICtrlSetData($Stufe[$iRow], "") ;Stufe leeren
    Else
    ;das ist der Normalfall
    GUICtrlSetData($Gewicht[$iRow], $aWaren[$iWare][1]) ;Gewicht eintragen
    GUICtrlSetData($Stufe[$iRow], $aWaren[$iWare][2]) ;Stufe eintragen
    EndIf
    GUICtrlSetData($VK[$iRow], "") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "") ;Gewinn leeren
    Next
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise sortiert für " & $aEK[0][$iStart])
    EndIf
    ;==================
    If $nArt = $Zielstadt Then
    $sZiel = GUICtrlRead($Zielstadt)
    If $sZiel = $sStart Or $sZiel = "" Or $sZiel = $sPleaseSelect Then
    For $iRow = 1 To 7 ;für Label(-zeilen) 1-7
    GUICtrlSetData($VK[$iRow], "---") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "---") ;Gewinn leeren
    Next
    Return ;keine ZielStadt ausgwählt also zurück
    EndIf
    $iZiel = _ArraySearch($aOrte, $sZiel) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite($iZiel & @TAB & $aVK[0][$iZiel] & @CRLF)
    If $iZiel < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Verkaufsarray gefunden!")
    Return
    EndIf
    For $iRow = 1 To 6 ;für Label(-zeilen) 1-6
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label lesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $iWare < 0 Then
    ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    GUICtrlSetData($VK[$iRow], "") ;VK leeren
    Else
    ;das ist der Normalfall
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label auslesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aVK[$iWare][0] & @CRLF)
    GUICtrlSetData($VK[$iRow], $aVK[$iWare][$iZiel]) ;Verkaufspreis eintragen
    EndIf
    Next
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise sortiert nach Warenbezeichnung")
    EndIf
    ;====================
    $Laderaumfrei = GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)
    If Int($Laderaumfrei) <= 0 Then Return ;wenn kein Laderaum frei ist zurück
    For $iRow = 1 To 6 ;für Label(-Zeilen) 1-6
    $anzahl = Int($Laderaumfrei / GUICtrlRead($Gewicht[$iRow])) ;mögliche Anzahl für diese Ware ermitteln
    $iVK = Number(GUICtrlRead($VK[$iRow])) ;VK aus Label auslesen
    $iEK = Number(GUICtrlRead($EK[$iRow])) ;EK aus Label auslesen
    If $iVK > $iEK And $iEK > 0 Then
    ;VK-Preis muss grösser dem Einkaufspreis sein UND der Einkaufspreis muss auch grösser 0 sein (eher der Rgelfall)
    GUICtrlSetData($AnzahlStuk[$iRow],$anzahl) ;Anzahl Label zuweisen
    GUICtrlSetData($Ergebnis[$iRow], ($iVK - $iEK) * $anzahl) ;Gewinn berechnen und Label zuweisen
    Else
    ;Berechnung ist nicht möglich oder Verkauf unnsinnig
    GUICtrlSetData($Ergebnis[$iRow], "---") ;zeigen dass mit dieser Ware kein Gewinn gemacht werden kann
    GUICtrlSetData($AnzahlStuk[$iRow],"---");daher auch keine Stückzahl anzeigen
    if $iVK = 0 Then GUICtrlSetData($VK[$iRow],"---");zwecks einheitlicher Darstellung
    EndIf
    If $bDebug Then ConsoleWrite(GUICtrlRead($Ware[$iRow]) & @TAB & "VK: " & $iVK & @TAB & "EK: " & GUICtrlRead($EK[$iRow]) & @TAB & "Anzahl: " & $anzahl & @CRLF)
    Next
    EndFunc ;==>_Berechnung

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

    Func _arraySort2D_MC(ByRef $avArray, $ColOrder = "")
    ;Parameterübergabe
    ;$avArray zu sorterendes Array
    ;$ColdOrder String mit den Sortieranweisungen, getrennt mit "|" für jede Spalte
    ; zulässige Angaben:
    ; nur Spaltenindex = normale Sortierung
    ; Spaltenindex%N = numerische Sortierung
    ; Spaltenindex%D = Sortierung nach Datum JJJJ/MM/TT
    ; Spaltenindex%G = Sortierung nach Geburtstag MM/TT/JJJJ
    ; z.B.: "1|2%N|3%D|0" die Reihenfolge für die Sortierung ist 1.,2., 3. 0. (0 basierend)
    ; die 1. Spalte wird Standard von _ArraySort verwendet
    ; die 2. Spalte (%N) wird bei der Sortierun numerisch behnadelt
    ; die 3. Spalte (%D) wird als Datum behandelt
    ;
    ; es müssen alle Spalten des Arrays in den Sortieranweisungen vorkommen
    ; =====================================================================
    ;Rückgabe: 0 Fehler (nicht alle Spalten in $ColOrder definert
    ; 1 Erfolg
    ;Autor: AutoBert 2010 https://autoit.de/index.php?page…1403#post141403
    ;==============================================================================================================

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

    $aCols = StringSplit($ColOrder, "|")
    ;consolewrite($aCols[0] & " " & UBound($array, 2) & @CRLF)
    If $aCols[0] <> UBound($avArray, 2) Then
    MsgBox(16, "Fehler:", "unterschiedliche Spaltenanzahl!")
    Return 0
    EndIf
    Local $aColformat = $aCols
    Local $sRow
    For $i = 1 To $aColformat[0]
    ;$aColformat[$i] = StringRight($aColformat[$i], 1)
    $aCols[$i] = StringReplace($aCols[$i], "N", "")
    $aCols[$i] = StringReplace($aCols[$i], "D", "")
    Next
    _ArrayDelete($aColformat, 0)
    _ArrayDelete($aCols, 0)
    Local $iCols = UBound($aColformat)
    For $i = 0 To UBound($avArray) - 1
    $sRow = ""
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringUpper(StringRight($aColformat[$j], 1))
    Case "N" ;numerisch
    $sRow &= StringFormat("%99s", $avArray[$i][$iCol])
    ;ConsoleWrite(StringFormat("%99s", $avArray[$i][$iCol]) & @CRLF)
    Case "D" ;Datum JJJJ/MM/TT
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= StringRight("0" & $aDate[2], 2) & "." & StringRight("0" & $aDate[1], 2) & "." & $aDate[3]
    Case Else
    $sRow &= $avArray[$i][$iCol]
    EndSwitch
    If $j <> $iCols - 1 Then $sRow &= "|"
    Next
    $avArray[$i][0] = $sRow
    ;consolewrite($sRow & @CRLF)
    Next
    _ArraySort($avArray)
    ;_ArrayDisplay($avArray)
    ;_ArrayDisplay($aColformat, "FormatStrings")
    ;_ArrayDisplay($aCols, "Cols")
    ;consolewrite($iCols & @CRLF)
    For $i = 0 To UBound($avArray) - 1
    $aSplit = StringSplit($avArray[$i][0], "|", 2)
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringRight($aColformat[$j], 1)
    ; Case "X"

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

    ;#cs
    Case "N" ;numerisch
    $avArray[$i][$iCol] = StringStripWS($aSplit[$j], 1)
    ;consolewrite(" N: " & $avArray[$i][$iCol])
    Case "D" ;Datum JJJJ/MM/TT
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[2] & "." & $aDate[1] & "." & $aDate[3]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    ;#ce
    Case Else
    $avArray[$i][$iCol] = $aSplit[$j]
    ;consolewrite(" : " & $avArray[$i][$iCol])
    EndSwitch
    Next
    ;consolewrite(@CRLF)
    Next
    Return 1
    ;_ArrayDisplay($avArray)
    EndFunc ;==>_arraySort2D_MC

    [/autoit]

    mfg autoBert

  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 19. November 2011 um 06:09

    Diese Rechnung exitsiert doch schon. In Variable

    [autoit]

    $anzahl = Int($Laderaumfrei / GUICtrlRead($Gewicht[$iRow])) ;mögliche Anzahl für diese Ware ermitteln

    [/autoit]

    Du musst also nur diesen Wert deinem neuen Label zuweisen. Dass es nur ganze Stück sein können dafür sorgt Int:

    Zitat von 'aus der dt. Hilfe zu Int

    Gibt einen Integer (ganze Zahl) eines Ausdrucks zurück.
    ...
    Bemerkungen

    Kommazahlen werden abgeschnitten, also Int(1.999999) ergibt 1.

    Da ich in deinem Codeschnipsel nicht die extra erstellten Kommentare sehe vermute ich dass du immer noch mit einer veralteten Version des Codes weiter entwickelst, stutzig macht mich vor allem dass in dem 1. Codeschnipsel die Variable $AnzahlStuk[] schon exisitiert.

    mfg autoBert

  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 19. November 2011 um 00:06
    Zitat von Ghostleader

    Was ich damit meine ---> 2. Die waren stimmen nicht immer mit den Städten wo es sie gibt überein. (zb. Accra gibt es kein Zucker) Hast du die wahllos eingetragen? Desweiteren werden bei den Städten statt 6 = 7 Waren angezeigt bei ek und vk. Aber eine stadt verkauft nur 6 Waren!


    Das ist war dann wohl das Problem (sollte dann aber beijeder Stadt bei der 1. angezeigten Ware vorgekommen sein), aber warum erzeugst du dann 7 Reihen mit Labels zur Aufnahme von Werten?

    Hier deraktuelle Stand:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <ComboConstants.au3>
    #include <file.au3>
    #include <Array.au3>

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

    Global $bDebug = False
    Global $sStart, $sZiel

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

    Local $aTmp

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

    #Region ;Waren.CSV einlesen und in 2D-Array speichern
    _FileReadToArray(@ScriptDir & "\Waren.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "Waren.CSV")

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

    $aSplit = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    $iCols = $aSplit[0]
    If $bDebug Then _ArrayDisplay($aSplit, "Waren Colheader")

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

    Global $aWaren[$iRows][$iCols]
    ;Warenbezeichnung Gewicht und Stufe in Waren-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aWaren[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    If $bDebug Then _ArrayDisplay($aWaren, "Waren")
    #EndRegion
    #Region ;Verkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\VK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "VK.CSV")

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

    $aOrte = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    If $bDebug Then _ArrayDisplay($aOrte, "Orte aus VK.CSV")
    $iCols = $aOrte[0]

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

    Global $aVK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in VK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aVK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aVK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise")
    #EndRegion

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

    #Region ;Einkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\EK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "EK.CSV")
    $iCols = $aOrte[0]

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

    Global $aEK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in EK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aEK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aEK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise")
    #EndRegion

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

    $Form1 = GUICreate("Stadtwaren Rechner", 1000, 520, 380, 230)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Form1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Alex Sindy Amy\Desktop/Handel.jpg", 0, 0, 1000, 520)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Local $sPleaseSelect = " Wähle Stadt"
    Local $sComboText = ""
    For $i = 1 To $aOrte[0]
    $sComboText &= $aOrte[$i] & "|"
    Next
    $sComboText &= $sPleaseSelect
    $Startstadt = GUICtrlCreateCombo("", 85, 75, 110, 130, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    $Zielstadt = GUICtrlCreateCombo("", 212, 75, 110, 25, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    GUISetState(@SW_SHOW)

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

    Local $Ergebnis[8], $Ware[8], $Stufe[8], $Gewicht[8], $EK[8], $VK[8], $test[8], $iHeight = 200 ;war 230
    For $i = 1 To 7
    $Ware[$i] = GUICtrlCreateLabel("", 30, $iHeight, 190, 40)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe[$i] = GUICtrlCreateLabel("", 240, $iHeight, 25, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht[$i] = GUICtrlCreateLabel("", 300, $iHeight, 80, 20, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK[$i] = GUICtrlCreateLabel("", 435, $iHeight, 50, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK[$i] = GUICtrlCreateLabel("", 540, $iHeight, 60, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis[$i] = GUICtrlCreateLabel("", 610, $iHeight, 100, 35, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #cs
    $test[$i] = GUICtrlCreateLabel("", 645, 190, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #ce
    $iHeight += 45 ;war 30
    Next

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

    #Region Übersicht Überschriften Labels
    $Warenname = GUICtrlCreateLabel("Ware", 80, 160, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Warenstufe = GUICtrlCreateLabel("Stufe", 225, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Einkauf = GUICtrlCreateLabel("EK-Preis", 415, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Verkauf = GUICtrlCreateLabel("VK-Preis", 530, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewin = GUICtrlCreateLabel("Gewinn", 645, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewichtname = GUICtrlCreateLabel("Gewicht", 310, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Von = GUICtrlCreateLabel("Von", 110, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Nach = GUICtrlCreateLabel("Nach", 237, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladung = GUICtrlCreateLabel("Max-Lade-Kapazität", 345, 50, 160, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladungbelegt = GUICtrlCreateLabel("Belegter-Laderaum", 540, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Berechnung = GUICtrlCreateLabel("Berechnung starten", 730, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    #Region Buttons
    $BerechnungStart = GUICtrlCreateButton("Berechnung &Starten", 745, 75, 130, 20) ;eigentlich unnötig geworden
    ;GUICtrlSetState($BerechnungStart, $GUI_DISABLE)
    $ListeEK = GUICtrlCreateButton("Liste Einkaufspreise", 745, 105, 130, 20)
    $ListeVK = GUICtrlCreateButton("Liste Verkaufspreise", 745, 135, 130, 20)
    #EndRegion Buttons

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

    $InputLadung = GUICtrlCreateInput("1000", 360, 75, 130, 21)
    $InputLadungbelegt = GUICtrlCreateInput("0", 553, 75, 130, 21)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Startstadt, $Zielstadt, $BerechnungStart
    _Berechnung($nMsg)
    Case $ListeEK
    _ArraySort($aEK)
    _ArrayDisplay($aEK, "Einkaufspreise sortiert nach Warenbezeichnung ")
    Case $ListeVK
    _ArrayDisplay($aVK, "Verkaufspreise sortiert nach Warenbezeichnung")
    EndSwitch
    WEnd

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

    Func _Berechnung($nArt)
    If $nArt = $Startstadt Then
    $sStart = GUICtrlRead($Startstadt)
    If $sStart = $sPleaseSelect Then Return ;keine StartStadt ausgwählt also zurück
    $iStart = _ArraySearch($aOrte, $sStart) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite("Startiindex: " & $iStart & @TAB & $aEK[0][$iStart] & @CRLF)
    If $iStart < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Einkaufsarray gefunden!")
    Return
    EndIf
    ;_ArraySort($aEK, 1, 0, 0, $iStart) ;umgestellt auf arraySort2D_MC

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

    ;============ nötig für arraySort2D_MC
    ;es wird ein String gebildet in dem die Reihenfolge und Art der Sortierung festgelegt wird
    ;Sortierung ist notwendig damit die Waren einer Stadt hinereinander kommen die Standardsortierung ginge auch dann sind aber die Preise nicht korrekt aufsteigend sortiert
    $sColSortOrder = $iStart & "%N|0"
    For $i = 1 To UBound($aEK, 2) - 1
    If $i <> $iStart Then $sColSortOrder &= "|" & $i
    Next
    ;================
    _arraySort2D_MC($aEK, $sColSortOrder) ;sortiert Preise aufsteigend bei gleichem Preis 2. Kriterium Warenname
    $iUBoundEK = UBound($aEK) - 8 ;6 für die Schleifendurchgänge +1 weil 0-baisert +1 weil danach letztes Element die Spaltenüberschrift enthält
    For $iRow = 1 To 6 ;für Label(-Zeilen) 1 - 6
    $iEK = $aEK[$iUBoundEK + $iRow][$iStart] ;Einkaufspreis aus Array holen
    $sWare = $aEK[$iUBoundEK + $iRow][0] ;Warenbezeichnung aus Array holen
    GUICtrlSetData($Ware[$iRow], $sWare) ;Warenbezeichnung in Label eintragen
    GUICtrlSetData($EK[$iRow], $iEK) ;Einkaufspreis eintragen
    $iWare = _ArraySearch($aWaren, $aEK[$iUBoundEK + $iRow][0]) ;Ware im Array WAREN suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aWaren[$iWare][1] & @CRLF)
    If $iWare < 0 Then
    ;Fehler im Array WAREN kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", $aEK[$iUBoundEK + $iRow] & " nicht im Warenarray gefunden!")
    GUICtrlSetData($Gewicht[$iRow], "") ;Gewicht leeren
    GUICtrlSetData($Stufe[$iRow], "") ;Stufe leeren
    Else
    ;das ist der Normalfall
    GUICtrlSetData($Gewicht[$iRow], $aWaren[$iWare][1]) ;Gewicht eintragen
    GUICtrlSetData($Stufe[$iRow], $aWaren[$iWare][2]) ;Stufe eintragen
    EndIf
    GUICtrlSetData($VK[$iRow], "") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "") ;Gewinn leeren
    Next
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise sortiert für " & $aEK[0][$iStart])
    EndIf
    ;==================
    If $nArt = $Zielstadt Then
    $sZiel = GUICtrlRead($Zielstadt)
    If $sZiel = $sStart Or $sZiel = "" Or $sZiel = $sPleaseSelect Then
    For $iRow = 1 To 7 ;für Label(-zeilen) 1-7
    GUICtrlSetData($VK[$iRow], "---") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "---") ;Gewinn leeren
    Next
    Return ;keine ZielStadt ausgwählt also zurück
    EndIf
    $iZiel = _ArraySearch($aOrte, $sZiel) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite($iZiel & @TAB & $aVK[0][$iZiel] & @CRLF)
    If $iZiel < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Verkaufsarray gefunden!")
    Return
    EndIf
    For $iRow = 1 To 6 ;für Label(-zeilen) 1-6
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label lesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $iWare < 0 Then
    ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    GUICtrlSetData($VK[$iRow], "") ;VK leeren
    Else
    ;das ist der Normalfall
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label auslesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aVK[$iWare][0] & @CRLF)
    GUICtrlSetData($VK[$iRow], $aVK[$iWare][$iZiel]) ;Verkaufspreis eintragen
    EndIf
    Next
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise sortiert nach Warenbezeichnung")
    EndIf
    ;====================
    $Laderaumfrei = GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)
    If Int($Laderaumfrei) <= 0 Then Return ;wenn kein Laderaum frei ist zurück
    For $iRow = 1 To 6 ;für Label(-Zeilen) 1-6
    $anzahl = Int($Laderaumfrei / GUICtrlRead($Gewicht[$iRow])) ;mögliche Anzahl für diese Ware ermitteln
    $iVK = Number(GUICtrlRead($VK[$iRow])) ;VK aus Label auslesen
    $iEK = Number(GUICtrlRead($EK[$iRow])) ;EK aus Label auslesen
    If $iVK > $iEK And $iEK > 0 Then
    ;VK-Preis muss grösser dem Einkaufspreis sein UND der Einkaufspreis muss auch grösser 0 sein (eher der Rgelfall)
    GUICtrlSetData($Ergebnis[$iRow], ($iVK - $iEK) * $anzahl) ;Gewinn berechnen und Label zuweisen
    Else
    ;Berechnung ist nicht möglich oder Verkauf unnsinnig
    GUICtrlSetData($Ergebnis[$iRow], "---") ;zeigen dass mit dieser Ware kein Gewinn gemacht werden kann
    EndIf
    If $bDebug Then ConsoleWrite(GUICtrlRead($Ware[$iRow]) & @TAB & "VK: " & $iVK & @TAB & "EK: " & GUICtrlRead($EK[$iRow]) & @TAB & "Anzahl: " & $anzahl & @CRLF)
    Next
    EndFunc ;==>_Berechnung

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

    Func _arraySort2D_MC(ByRef $avArray, $ColOrder = "")
    ;Parameterübergabe
    ;$avArray zu sorterendes Array
    ;$ColdOrder String mit den Sortieranweisungen, getrennt mit "|" für jede Spalte
    ; zulässige Angaben:
    ; nur Spaltenindex = normale Sortierung
    ; Spaltenindex%N = numerische Sortierung
    ; Spaltenindex%D = Sortierung nach Datum JJJJ/MM/TT
    ; Spaltenindex%G = Sortierung nach Geburtstag MM/TT/JJJJ
    ; z.B.: "1|2%N|3%D|0" die Reihenfolge für die Sortierung ist 1.,2., 3. 0. (0 basierend)
    ; die 1. Spalte wird Standard von _ArraySort verwendet
    ; die 2. Spalte (%N) wird bei der Sortierun numerisch behnadelt
    ; die 3. Spalte (%D) wird als Datum behandelt
    ;
    ; es müssen alle Spalten des Arrays in den Sortieranweisungen vorkommen
    ; =====================================================================
    ;Rückgabe: 0 Fehler (nicht alle Spalten in $ColOrder definert
    ; 1 Erfolg
    ;Autor: AutoBert 2010 https://autoit.de/index.php?page…1403#post141403
    ;==============================================================================================================

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

    $aCols = StringSplit($ColOrder, "|")
    ;consolewrite($aCols[0] & " " & UBound($array, 2) & @CRLF)
    If $aCols[0] <> UBound($avArray, 2) Then
    MsgBox(16, "Fehler:", "unterschiedliche Spaltenanzahl!")
    Return 0
    EndIf
    Local $aColformat = $aCols
    Local $sRow
    For $i = 1 To $aColformat[0]
    ;$aColformat[$i] = StringRight($aColformat[$i], 1)
    $aCols[$i] = StringReplace($aCols[$i], "N", "")
    $aCols[$i] = StringReplace($aCols[$i], "D", "")
    Next
    _ArrayDelete($aColformat, 0)
    _ArrayDelete($aCols, 0)
    Local $iCols = UBound($aColformat)
    For $i = 0 To UBound($avArray) - 1
    $sRow = ""
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringUpper(StringRight($aColformat[$j], 1))
    Case "N" ;numerisch
    $sRow &= StringFormat("%99s", $avArray[$i][$iCol])
    ;ConsoleWrite(StringFormat("%99s", $avArray[$i][$iCol]) & @CRLF)
    Case "D" ;Datum JJJJ/MM/TT
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= StringRight("0" & $aDate[2], 2) & "." & StringRight("0" & $aDate[1], 2) & "." & $aDate[3]
    Case Else
    $sRow &= $avArray[$i][$iCol]
    EndSwitch
    If $j <> $iCols - 1 Then $sRow &= "|"
    Next
    $avArray[$i][0] = $sRow
    ;consolewrite($sRow & @CRLF)
    Next
    _ArraySort($avArray)
    ;_ArrayDisplay($avArray)
    ;_ArrayDisplay($aColformat, "FormatStrings")
    ;_ArrayDisplay($aCols, "Cols")
    ;consolewrite($iCols & @CRLF)
    For $i = 0 To UBound($avArray) - 1
    $aSplit = StringSplit($avArray[$i][0], "|", 2)
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringRight($aColformat[$j], 1)
    ; Case "X"

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

    ;#cs
    Case "N" ;numerisch
    $avArray[$i][$iCol] = StringStripWS($aSplit[$j], 1)
    ;consolewrite(" N: " & $avArray[$i][$iCol])
    Case "D" ;Datum JJJJ/MM/TT
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[2] & "." & $aDate[1] & "." & $aDate[3]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    ;#ce
    Case Else
    $avArray[$i][$iCol] = $aSplit[$j]
    ;consolewrite(" : " & $avArray[$i][$iCol])
    EndSwitch
    Next
    ;consolewrite(@CRLF)
    Next
    Return 1
    ;_ArrayDisplay($avArray)
    EndFunc ;==>_arraySort2D_MC

    [/autoit]
  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 18. November 2011 um 23:07
    Zitat von Ghostleader

    Ich muss zugeben das ich mit deiner Art des Skriptens (da ich es net kenne) gerade ziehmlich überfordert und Confused ?( bin!!!
    Das Problem dabei ist, das ich doch einiges ein wenig anders haben wöllte, jedoch anhand dieses Skriptes es selber nicht kann, denn ohne Durchsicht nichts machbar. Ausserdem sollte noch was dazu kommen, wo ich aber nun selber nicht so einfach Hand anlegen kann, da ich wie gesagt gerade überfordert bin und net durchsehe. ;(


    Der Durchblick kommt mit dem Durcharbeiten der dir unbekannten Befehle, ausserdem hab ich jetzt zusätzliche Kommentare eingefügt somit sollte es auch leichter zu verstehen sein.

    zu

    • "Woher hast du die ganzen Verkaufspreise oder sind die ausgedacht?" die CSV's die ich einlese habe ich aus der warenhandel.xls mit OpenOffice Calc (da kein Excel installiert) erzeugt, eine Zipdatei mit diesen CSV's ist auch in meinem vorigen Post angehängt. Es sind also Originaldaten zuletzt geändert am 25.10.201117:59 der Author heist mit Vorname Michael Nachname D*******. Die Exceldatei hattest du in einem anderen Thema eingestellt.
    • "Die waren stimmen nicht immer mit den Städten wo es sie gibt überein. "siehe 1." oder ich habe die For-Schleifenlaufvariable falsch gesetzt (syncron zu deinen erzeugten Labels) dann müsste aber bei allen Städten die 1. angezeigte Ware mit EK 0 erscheinen
    • "Die Ware Bernstein wird zwar im skript wiedergegeben, jedoch ist sie weder in der VK noch EK liste aufgeführt" siehe 1. Bernstein ist in deiner XLS sowohl in der EK als auch VK-Liste enthalten
    • "Kann man die Städte nicht auch wie in der VK Übersicht auch in der EK Übersicht anzeigen lassen?" Diese Übersichten sind eigentlich nur eine Hilfe während des Programmierens, sie können mit dem Schalter $bDebug (Zeile 8) an und ausgestellt werden, würden aber im normalen Programmablauf nur stören wie du ja selbst schon bemerkt hast
    • "Kann man das nicht abstellen das diese Übersichten immer kommen wenn man eine stadt auswählt und die lieber über 2 Buttons auswählen lassen wenn man diese sehen möchte" siehe vorhergehenden Punkt. Falls du sie über Buttons einblendest, solltest du das Array $aEK vorher sortieren:[autoit]_ArraySort($aEK) [/autoit]da sonst die Spaltenüberschrift eine Unterschrift ist also immer als letztes kommt, dies hat aber den Vorteil, dass die Preise für die Stadt aufsteigend sortiert sind
    • hier stand was mit VK-Preisen bei Start = Zielhier ist nichts unmöglich aber ich habe jetzt nicht genau verstanden was du genau möchtest, du kannst es ja selbst ändern (Zeile 226)
    • ist erledigt
    • "6. Bei der Berechnung haut was net hin, obwohl überall ek und vk preise da sind statt 0 wird bei manchen N/A ausgegeben!
      " sollte im aktuellen Stand nicht mehr vorkommen. Diesen solltest du unbedingt alsGrundlage nehmen, da ich einige kleine Änderungen und vor allem Kommentierungen vorgenommen habe und ich dies nicht noch einmal tun möchte.

    Hier mein aktueller Stand die beiden Buttons für die _ArrayDisplays habe ich von dir übernommen:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <ComboConstants.au3>
    #include <file.au3>
    #include <Array.au3>

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

    Global $bDebug = False
    Global $sStart, $sZiel

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

    Local $aTmp

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

    #Region ;Waren.CSV einlesen und in 2D-Array speichern
    _FileReadToArray(@ScriptDir & "\Waren.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "Waren.CSV")

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

    $aSplit = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    $iCols = $aSplit[0]
    If $bDebug Then _ArrayDisplay($aSplit, "Waren Colheader")

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

    Global $aWaren[$iRows][$iCols]
    ;Warenbezeichnung Gewicht und Stufe in Waren-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aWaren[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    If $bDebug Then _ArrayDisplay($aWaren, "Waren")
    #EndRegion
    #Region ;Verkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\VK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "VK.CSV")

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

    $aOrte = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    If $bDebug Then _ArrayDisplay($aOrte, "Orte aus VK.CSV")
    $iCols = $aOrte[0]

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

    Global $aVK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in VK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aVK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aVK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise")
    #EndRegion

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

    #Region ;Einkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\EK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "EK.CSV")
    $iCols = $aOrte[0]

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

    Global $aEK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in EK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aEK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aEK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise")
    #EndRegion

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

    $Form1 = GUICreate("Stadtwaren Rechner", 1000, 520, 380, 230)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Form1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Alex Sindy Amy\Desktop/Handel.jpg", 0, 0, 1000, 520)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Local $sPleaseSelect = " Wähle Stadt"
    Local $sComboText = ""
    For $i = 1 To $aOrte[0]
    $sComboText &= $aOrte[$i] & "|"
    Next
    $sComboText &= $sPleaseSelect
    $Startstadt = GUICtrlCreateCombo("", 85, 75, 110, 130, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    $Zielstadt = GUICtrlCreateCombo("", 212, 75, 110, 25, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    GUISetState(@SW_SHOW)

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

    Local $Ergebnis[8], $Ware[8], $Stufe[8], $Gewicht[8], $EK[8], $VK[8], $test[8], $iHeight = 200 ;war 230
    For $i = 1 To 7
    $Ware[$i] = GUICtrlCreateLabel("", 30, $iHeight, 190, 40)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe[$i] = GUICtrlCreateLabel("", 240, $iHeight, 25, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht[$i] = GUICtrlCreateLabel("", 300, $iHeight, 80, 20, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK[$i] = GUICtrlCreateLabel("", 435, $iHeight, 50, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK[$i] = GUICtrlCreateLabel("", 540, $iHeight, 60, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis[$i] = GUICtrlCreateLabel("", 610, $iHeight, 100, 35, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #cs
    $test[$i] = GUICtrlCreateLabel("", 645, 190, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #ce
    $iHeight += 45 ;war 30
    Next

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

    #Region Übersicht Überschriften Labels
    $Warenname = GUICtrlCreateLabel("Ware", 80, 160, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Warenstufe = GUICtrlCreateLabel("Stufe", 225, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Einkauf = GUICtrlCreateLabel("EK-Preis", 415, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Verkauf = GUICtrlCreateLabel("VK-Preis", 530, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewin = GUICtrlCreateLabel("Gewinn", 645, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewichtname = GUICtrlCreateLabel("Gewicht", 310, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Von = GUICtrlCreateLabel("Von", 110, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Nach = GUICtrlCreateLabel("Nach", 237, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladung = GUICtrlCreateLabel("Max-Lade-Kapazität", 345, 50, 160, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladungbelegt = GUICtrlCreateLabel("Belegter-Laderaum", 540, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Berechnung = GUICtrlCreateLabel("Berechnung starten", 730, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    #Region Buttons
    $BerechnungStart = GUICtrlCreateButton("Berechnung &Starten", 745, 75, 130, 20) ;eigentlich unnötig geworden
    ;GUICtrlSetState($BerechnungStart, $GUI_DISABLE)
    $ListeEK = GUICtrlCreateButton("Liste Einkaufspreise", 745, 105, 130, 20)
    $ListeVK = GUICtrlCreateButton("Liste Verkaufspreise", 745, 135, 130, 20)
    #EndRegion Buttons

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

    $InputLadung = GUICtrlCreateInput("1000", 360, 75, 130, 21)
    $InputLadungbelegt = GUICtrlCreateInput("0", 553, 75, 130, 21)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Startstadt, $Zielstadt, $BerechnungStart
    _Berechnung($nMsg)
    Case $ListeEK
    _ArraySort($aEK)
    _ArrayDisplay($aEK, "Einkaufspreise sortiert nach Warenbezeichnung ")
    Case $ListeVK
    _ArrayDisplay($aVK, "Verkaufspreise sortiert nach Warenbezeichnung")
    EndSwitch
    WEnd

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

    Func _Berechnung($nArt)
    If $nArt = $Startstadt Then
    $sStart = GUICtrlRead($Startstadt)
    If $sStart = $sPleaseSelect Then Return ;keine StartStadt ausgwählt also zurück
    $iStart = _ArraySearch($aOrte, $sStart) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite("Startiindex: " & $iStart & @TAB & $aEK[0][$iStart] & @CRLF)
    If $iStart < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Einkaufsarray gefunden!")
    Return
    EndIf
    ;_ArraySort($aEK, 1, 0, 0, $iStart) ;umgestellt auf arraySort2D_MC

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

    ;============ nötig für arraySort2D_MC
    ;es wird ein String gebildet in dem die Reihenfolge und Art der Sortierung festgelegt wird
    ;Sortierung ist notwendig damit die Waren einer Stadt hinereinander kommen die Standardsortierung ginge auch dann sind aber die Preise nicht korrekt aufsteigend sortiert
    $sColSortOrder = $iStart & "%N|0"
    For $i = 1 To UBound($aEK, 2) - 1
    If $i <> $iStart Then $sColSortOrder &= "|" & $i
    Next
    ;================
    _arraySort2D_MC($aEK, $sColSortOrder) ;sortiert Preise aufsteigend bei gleichem Preis 2. Kriterium Warenname
    $iUBoundEK = UBound($aEK) - 9 ;7 für die Schleifendurchgänge +1 weil 0-baisert +1 weil danach letztes Element die Spaltenüberschrift enthält
    For $iRow = 1 To 7 ;für Label(-Zeilen) 1 - 7
    $iEK = $aEK[$iUBoundEK + $iRow][$iStart] ;Einkaufspreis aus Array holen
    $sWare = $aEK[$iUBoundEK + $iRow][0] ;Warenbezeichnung aus Array holen
    GUICtrlSetData($Ware[$iRow], $sWare) ;Warenbezeichnung in Label eintragen
    GUICtrlSetData($EK[$iRow], $iEK) ;Einkaufspreis eintragen
    $iWare = _ArraySearch($aWaren, $aEK[$iUBoundEK + $iRow][0]) ;Ware im Array WAREN suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aWaren[$iWare][1] & @CRLF)
    If $iWare < 0 Then
    ;Fehler im Array WAREN kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", $aEK[$iUBoundEK + $iRow] & " nicht im Warenarray gefunden!")
    GUICtrlSetData($Gewicht[$iRow], "") ;Gewicht leeren
    GUICtrlSetData($Stufe[$iRow], "") ;Stufe leeren
    Else
    ;das ist der Normalfall
    GUICtrlSetData($Gewicht[$iRow], $aWaren[$iWare][1]) ;Gewicht eintragen
    GUICtrlSetData($Stufe[$iRow], $aWaren[$iWare][2]) ;Stufe eintragen
    EndIf
    GUICtrlSetData($VK[$iRow], "") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "") ;Gewinn leeren
    Next
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise sortiert für " & $aEK[0][$iStart])
    EndIf
    ;==================
    If $nArt = $Zielstadt Then
    $sZiel = GUICtrlRead($Zielstadt)
    If $sZiel = $sStart Or $sZiel = "" Or $sZiel = $sPleaseSelect Then
    For $iRow = 1 To 7 ;für Label(-zeilen) 1-7
    GUICtrlSetData($VK[$iRow], "---") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "---") ;Gewinn leeren
    Next
    Return ;keine ZielStadt ausgwählt also zurück
    EndIf
    $iZiel = _ArraySearch($aOrte, $sZiel) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite($iZiel & @TAB & $aVK[0][$iZiel] & @CRLF)
    If $iZiel < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Verkaufsarray gefunden!")
    Return
    EndIf
    For $iRow = 1 To 7 ;für Label(-zeilen) 1-7
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label lesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $iWare < 0 Then
    ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    GUICtrlSetData($VK[$iRow], "") ;VK leeren
    Else
    ;das ist der Normalfall
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label auslesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aVK[$iWare][0] & @CRLF)
    GUICtrlSetData($VK[$iRow], $aVK[$iWare][$iZiel]) ;Verkaufspreis eintragen
    EndIf
    Next
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise sortiert nach Warenbezeichnung")
    EndIf
    ;====================
    $Laderaumfrei = GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)
    If Int($Laderaumfrei) <= 0 Then Return ;wenn kein Laderaum frei ist zurück
    For $iRow = 1 To 7 ;für Label(-Zeilen) 1-7
    $anzahl = Int($Laderaumfrei / GUICtrlRead($Gewicht[$iRow])) ;mögliche Anzahl für diese Ware ermitteln
    $iVK = Number(GUICtrlRead($VK[$iRow])) ;VK aus Label auslesen
    $iEK = Number(GUICtrlRead($EK[$iRow])) ;EK aus Label auslesen
    If $iVK > $iEK And $iEK > 0 Then
    ;VK-Preis muss grösser dem Einkaufspreis sein UND der Einkaufspreis muss auch grösser 0 sein (eher der Rgelfall)
    GUICtrlSetData($Ergebnis[$iRow], ($iVK - $iEK) * $anzahl) ;Gewinn berechnen und Label zuweisen
    Else
    ;Berechnung ist nicht möglich oder Verkauf unnsinnig
    GUICtrlSetData($Ergebnis[$iRow], "---") ;zeigen dass mit dieser Ware kein Gewinn gemacht werden kann
    EndIf
    If $bDebug Then ConsoleWrite(GUICtrlRead($Ware[$iRow]) & @TAB & "VK: " & $iVK & @TAB & "EK: " & GUICtrlRead($EK[$iRow]) & @TAB & "Anzahl: " & $anzahl & @CRLF)
    Next
    EndFunc ;==>_Berechnung

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

    Func _arraySort2D_MC(ByRef $avArray, $ColOrder = "")
    ;Parameterübergabe
    ;$avArray zu sorterendes Array
    ;$ColdOrder String mit den Sortieranweisungen, getrennt mit "|" für jede Spalte
    ; zulässige Angaben:
    ; nur Spaltenindex = normale Sortierung
    ; Spaltenindex%N = numerische Sortierung
    ; Spaltenindex%D = Sortierung nach Datum JJJJ/MM/TT
    ; Spaltenindex%G = Sortierung nach Geburtstag MM/TT/JJJJ
    ; z.B.: "1|2%N|3%D|0" die Reihenfolge für die Sortierung ist 1.,2., 3. 0. (0 basierend)
    ; die 1. Spalte wird Standard von _ArraySort verwendet
    ; die 2. Spalte (%N) wird bei der Sortierun numerisch behnadelt
    ; die 3. Spalte (%D) wird als Datum behandelt
    ;
    ; es müssen alle Spalten des Arrays in den Sortieranweisungen vorkommen
    ; =====================================================================
    ;Rückgabe: 0 Fehler (nicht alle Spalten in $ColOrder definert
    ; 1 Erfolg
    ;Autor: AutoBert 2010 https://autoit.de/index.php?page…1403#post141403
    ;==============================================================================================================

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

    $aCols = StringSplit($ColOrder, "|")
    ;consolewrite($aCols[0] & " " & UBound($array, 2) & @CRLF)
    If $aCols[0] <> UBound($avArray, 2) Then
    MsgBox(16, "Fehler:", "unterschiedliche Spaltenanzahl!")
    Return 0
    EndIf
    Local $aColformat = $aCols
    Local $sRow
    For $i = 1 To $aColformat[0]
    ;$aColformat[$i] = StringRight($aColformat[$i], 1)
    $aCols[$i] = StringReplace($aCols[$i], "N", "")
    $aCols[$i] = StringReplace($aCols[$i], "D", "")
    Next
    _ArrayDelete($aColformat, 0)
    _ArrayDelete($aCols, 0)
    Local $iCols = UBound($aColformat)
    For $i = 0 To UBound($avArray) - 1
    $sRow = ""
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringUpper(StringRight($aColformat[$j], 1))
    Case "N" ;numerisch
    $sRow &= StringFormat("%99s", $avArray[$i][$iCol])
    ;ConsoleWrite(StringFormat("%99s", $avArray[$i][$iCol]) & @CRLF)
    Case "D" ;Datum JJJJ/MM/TT
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= StringRight("0" & $aDate[2], 2) & "." & StringRight("0" & $aDate[1], 2) & "." & $aDate[3]
    Case Else
    $sRow &= $avArray[$i][$iCol]
    EndSwitch
    If $j <> $iCols - 1 Then $sRow &= "|"
    Next
    $avArray[$i][0] = $sRow
    ;consolewrite($sRow & @CRLF)
    Next
    _ArraySort($avArray)
    ;_ArrayDisplay($avArray)
    ;_ArrayDisplay($aColformat, "FormatStrings")
    ;_ArrayDisplay($aCols, "Cols")
    ;consolewrite($iCols & @CRLF)
    For $i = 0 To UBound($avArray) - 1
    $aSplit = StringSplit($avArray[$i][0], "|", 2)
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringRight($aColformat[$j], 1)
    ; Case "X"

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

    ;#cs
    Case "N" ;numerisch
    $avArray[$i][$iCol] = StringStripWS($aSplit[$j], 1)
    ;consolewrite(" N: " & $avArray[$i][$iCol])
    Case "D" ;Datum JJJJ/MM/TT
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[2] & "." & $aDate[1] & "." & $aDate[3]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    ;#ce
    Case Else
    $avArray[$i][$iCol] = $aSplit[$j]
    ;consolewrite(" : " & $avArray[$i][$iCol])
    EndSwitch
    Next
    ;consolewrite(@CRLF)
    Next
    Return 1
    ;_ArrayDisplay($avArray)
    EndFunc ;==>_arraySort2D_MC

    [/autoit]

    mfg autoBert

  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 18. November 2011 um 18:44

    Hallo Ghostleader,

    da hat BugFix Recht, allerdings habe ich ausgehend von der Exceltabelle (mit Excel wäre auch eine schöne Lösung möglich) mit O-Office Calc mir neue CSV's generiert. Ich habe mangels RegEx-Kenntnissen (1 mal angeschaut und beschlossen dass dies nichts für meinen alten Kopf ist) eine Lösung auf 2D-Array-Basis gebastelt. Die Arrays werden am Anfang eingelesen und dann alles damit gehandelt:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <ComboConstants.au3>
    #include <file.au3>
    #include <Array.au3>

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

    Global $bDebug = False
    Global $sStart, $sZiel

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

    Local $aTmp

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

    #Region ;Waren.CSV einlesen und in 2D-Array speichern
    _FileReadToArray(@ScriptDir & "\Waren.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "Waren.CSV")

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

    $aSplit = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    $iCols = $aSplit[0]
    If $bDebug Then _ArrayDisplay($aSplit, "Waren Colheader")

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

    Global $aWaren[$iRows][$iCols]
    ;Warenbezeichnung Gewicht und Stufe in Waren-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aWaren[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    If $bDebug Then _ArrayDisplay($aWaren, "Waren")
    #EndRegion
    #Region ;Verkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\VK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "VK.CSV")

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

    $aOrte = StringSplit(StringReplace($aTmp[0], '"', ''), ";")
    If $bDebug Then _ArrayDisplay($aOrte, "Orte aus VK.CSV")
    $iCols = $aOrte[0]

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

    Global $aVK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in VK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aVK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aVK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise")
    #EndRegion

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

    #Region ;Einkauspreise einlesen und in 2D-Array eintragen
    _FileReadToArray(@ScriptDir & "\EK.csv", $aTmp)
    $iRows = $aTmp[0]
    _ArrayDelete($aTmp, 0)
    If $bDebug Then _ArrayDisplay($aTmp, "EK.CSV")
    $iCols = $aOrte[0]

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

    Global $aEK[$iRows][$iCols]

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

    ;Orte Warenbezeichnung und Preise in EK-Array eintragen
    For $iRow = 0 To $iRows - 1
    $aSplit = StringSplit(StringReplace($aTmp[$iRow], '"', ''), ";")
    For $iCol = 1 To $iCols
    $aEK[$iRow][$iCol - 1] = $aSplit[$iCol]
    Next
    Next
    $aEK[0][0]=" Waren/Städte"
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise")
    #EndRegion

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

    $Form1 = GUICreate("Stadtwaren Rechner", 1000, 520, 380, 230)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Form1 = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Alex Sindy Amy\Desktop/Handel.jpg", 0, 0, 1000, 520)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Local $sPleaseSelect = " Wähle Stadt"
    Local $sComboText = ""
    For $i = 1 To $aOrte[0]
    $sComboText &= $aOrte[$i] & "|"
    Next
    $sComboText &= $sPleaseSelect
    $Startstadt = GUICtrlCreateCombo("", 85, 75, 110, 130, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    $Zielstadt = GUICtrlCreateCombo("", 212, 75, 110, 25, BitOR($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL, $WS_TABSTOP))
    GUICtrlSetData(-1, $sComboText, $sPleaseSelect)
    GUISetState(@SW_SHOW)

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

    Local $Ergebnis[8], $Ware[8], $Stufe[8], $Gewicht[8], $EK[8], $VK[8], $test[8], $iHeight = 200 ;war 230
    For $i = 1 To 7
    $Ware[$i] = GUICtrlCreateLabel("", 30, $iHeight, 190, 40)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe[$i] = GUICtrlCreateLabel("", 240, $iHeight, 25, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht[$i] = GUICtrlCreateLabel("", 300, $iHeight, 80, 20, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK[$i] = GUICtrlCreateLabel("", 435, $iHeight, 50, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK[$i] = GUICtrlCreateLabel("", 540, $iHeight, 60, 25, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis[$i] = GUICtrlCreateLabel("", 610, $iHeight, 100, 35, $SS_Right)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #cs
    $test[$i] = GUICtrlCreateLabel("", 645, 190, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #ce
    $iHeight += 45 ;war 30
    Next

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

    #Region Übersicht Überschriften Labels
    $Warenname = GUICtrlCreateLabel("Ware", 80, 160, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Warenstufe = GUICtrlCreateLabel("Stufe", 225, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Einkauf = GUICtrlCreateLabel("EK-Preis", 415, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Verkauf = GUICtrlCreateLabel("VK-Preis", 530, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewin = GUICtrlCreateLabel("Gewinn", 645, 160, 80, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewichtname = GUICtrlCreateLabel("Gewicht", 310, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Von = GUICtrlCreateLabel("Von", 110, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Nach = GUICtrlCreateLabel("Nach", 237, 50, 81, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladung = GUICtrlCreateLabel("Max-Lade-Kapazität", 345, 50, 160, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ladungbelegt = GUICtrlCreateLabel("Belegter-Laderaum", 540, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Berechnung = GUICtrlCreateLabel("Berechnung starten", 730, 50, 180, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    #Region Buttons
    $BerechnungStart = GUICtrlCreateButton("Berechnung &Starten", 745, 75, 130, 20) ;eigentlich unnötig geworden
    ;GUICtrlSetState($BerechnungStart, $GUI_DISABLE)
    #EndRegion Buttons

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

    $InputLadung = GUICtrlCreateInput("1000", 360, 75, 130, 21)
    $InputLadungbelegt = GUICtrlCreateInput("0", 553, 75, 130, 21)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Startstadt, $Zielstadt, $BerechnungStart
    _Berechnung($nMsg)
    EndSwitch
    WEnd

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

    Func _Berechnung($nArt)
    If $nArt = $Startstadt Then
    $sStart = GUICtrlRead($Startstadt)
    If $sStart = $sPleaseSelect Then Return ;keine StartStadt ausgwählt also zurück
    $iStart = _ArraySearch($aOrte, $sStart) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite("Startiindex: " & $iStart & @TAB & $aEK[0][$iStart] & @CRLF)
    If $iStart < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Einkaufsarray gefunden!")
    Return
    EndIf
    ;_ArraySort($aEK, 1, 0, 0, $iStart) ;umgestellt auf arraySort2D_MC

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

    ;============ nötig für arraySort2D_MC
    ;es wird ein String gebildet in dem die Reihenfolge und Art der Sortierung festgelegt wird
    ;Sortierung ist notwendig damit die Waren einer Stadt hinereinander kommen die Standardsortierung ginge auch dann sind aber die Preise nicht korrekt aufsteigend sortiert
    $sColSortOrder = $iStart & "%N|0"
    For $i = 1 To UBound($aEK, 2) - 1
    If $i <> $iStart Then $sColSortOrder &= "|" & $i
    Next
    ;================
    _arraySort2D_MC($aEK, $sColSortOrder) ;sortiert Preise aufsteigend bei gleichem Preis 2. Kriterium Warenname
    $iUBoundEK = UBound($aEK) - 9 ;7 für die Schleifendurchgänge +1 weil 0-baisert +1 weil danach letztes Element die Spaltenüberschrift enthält
    For $iRow = 1 To 7 ;für Label(-Zeilen) 1 - 7
    $iEK = $aEK[$iUBoundEK + $iRow][$iStart] ;Einkaufspreis aus Array holen
    $sWare = $aEK[$iUBoundEK + $iRow][0] ;Warenbezeichnung aus Array holen
    GUICtrlSetData($Ware[$iRow], $sWare) ;Warenbezeichnung in Label eintragen
    GUICtrlSetData($EK[$iRow], $iEK) ;Einkaufspreis eintragen
    $iWare = _ArraySearch($aWaren, $aEK[$iUBoundEK + $iRow][0]) ;Ware im Array WAREN suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aWaren[$iWare][1] & @CRLF)
    If $iWare < 0 Then
    ;Fehler im Array WAREN kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", $aEK[$iUBoundEK + $iRow] & " nicht im Warenarray gefunden!")
    GUICtrlSetData($Gewicht[$iRow], "") ;Gewicht leeren
    GUICtrlSetData($Stufe[$iRow], "") ;Stufe leeren
    Else
    ;das ist der Normalfall
    GUICtrlSetData($Gewicht[$iRow], $aWaren[$iWare][1]) ;Gewicht eintragen
    GUICtrlSetData($Stufe[$iRow], $aWaren[$iWare][2]) ;Stufe eintragen
    EndIf
    GUICtrlSetData($VK[$iRow], "") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "") ;Gewinn leeren
    Next
    If $bDebug Then _ArrayDisplay($aEK, "Einkaufspreise sortiert für " & $aEK[0][$iStart])
    EndIf
    ;==================
    If $nArt = $Zielstadt Then
    $sZiel = GUICtrlRead($Zielstadt)
    If $sZiel = $sStart Or $sZiel = "" Or $sZiel = $sPleaseSelect Then
    For $iRow = 1 To 7 ;für Label(-zeilen) 1-7
    GUICtrlSetData($VK[$iRow], "---") ;Verkaufspreis leeren
    GUICtrlSetData($Ergebnis[$iRow], "---") ;Gewinn leeren
    Next
    Return ;keine ZielStadt ausgwählt also zurück
    EndIf
    $iZiel = _ArraySearch($aOrte, $sZiel) - 1 ;dieses Element -1 im Array Ort = dem Spaltenindex im Array EK
    If $bDebug Then ConsoleWrite($iZiel & @TAB & $aVK[0][$iZiel] & @CRLF)
    If $iZiel < 0 Then ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    MsgBox(16, "Fehler:", "Ware nicht im Verkaufsarray gefunden!")
    Return
    EndIf
    For $iRow = 1 To 7 ;für Label(-zeilen) 1-7
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label lesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $iWare < 0 Then
    ;Fehler im Array kann nicht vorkommen ausser es wird Skriptcode eingefügt der Arrayelemente löscht
    GUICtrlSetData($VK[$iRow], "") ;VK leeren
    Else
    ;das ist der Normalfall
    $sWare = GUICtrlRead($Ware[$iRow]) ;Ware aus Label auslesen
    $iWare = _ArraySearch($aVK, $sWare) ;Ware im Array VK suchen
    If $bDebug Then ConsoleWrite($iWare & " " & $aVK[$iWare][0] & @CRLF)
    GUICtrlSetData($VK[$iRow], $aVK[$iWare][$iZiel]) ;Verkaufspreis eintragen
    EndIf
    Next
    If $bDebug Then _ArrayDisplay($aVK, "Verkaufspreise sortiert nach Warenbezeichnung")
    EndIf
    ;====================
    $Laderaumfrei = GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)
    If Int($Laderaumfrei) <= 0 Then Return ;wenn kein Laderaum frei ist zurück
    For $iRow = 1 To 7 ;für Label(-Zeilen) 1-7
    $anzahl = Int($Laderaumfrei / GUICtrlRead($Gewicht[$iRow])) ;mögliche Anzahl für diese Ware ermitteln
    $iVK = Number(GUICtrlRead($VK[$iRow])) ;VK aus Label auslesen
    $iEK = Number(GUICtrlRead($EK[$iRow])) ;EK aus Label auslesen
    If $iVK > $iEK And $iEK > 0 Then
    ;VK-Preis muss grösser dem Einkaufspreis sein UND der Einkaufspreis muss auch grösser 0 sein (eher der Rgelfall)
    GUICtrlSetData($Ergebnis[$iRow], ($iVK - $iEK) * $anzahl) ;Gewinn berechnen und Label zuweisen
    Else
    ;Berechnung ist nicht möglich
    GUICtrlSetData($Ergebnis[$iRow], "---") ;zeigen dass mit dieser Ware kein Gewinn gemacht werden kann
    EndIf
    If $bDebug Then ConsoleWrite(GUICtrlRead($Ware[$iRow]) & @TAB & "VK: " & $iVK & @TAB & "EK: " & GUICtrlRead($EK[$iRow]) & @TAB & "Anzahl: " & $anzahl & @CRLF)
    Next
    EndFunc ;==>_Berechnung

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

    Func _arraySort2D_MC(ByRef $avArray, $ColOrder = "")
    ;Parameterübergabe
    ;$avArray zu sorterendes Array
    ;$ColdOrder String mit den Sortieranweisungen, getrennt mit "|" für jede Spalte
    ; zulässige Angaben:
    ; nur Spaltenindex = normale Sortierung
    ; Spaltenindex%N = numerische Sortierung
    ; Spaltenindex%D = Sortierung nach Datum JJJJ/MM/TT
    ; Spaltenindex%G = Sortierung nach Geburtstag MM/TT/JJJJ
    ; z.B.: "1|2%N|3%D|0" die Reihenfolge für die Sortierung ist 1.,2., 3. 0. (0 basierend)
    ; die 1. Spalte wird Standard von _ArraySort verwendet
    ; die 2. Spalte (%N) wird bei der Sortierun numerisch behnadelt
    ; die 3. Spalte (%D) wird als Datum behandelt
    ;
    ; es müssen alle Spalten des Arrays in den Sortieranweisungen vorkommen
    ; =====================================================================
    ;Rückgabe: 0 Fehler (nicht alle Spalten in $ColOrder definert
    ; 1 Erfolg
    ;Autor: AutoBert 2010 https://autoit.de/index.php?page…1403#post141403
    ;==============================================================================================================

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

    $aCols = StringSplit($ColOrder, "|")
    ;consolewrite($aCols[0] & " " & UBound($array, 2) & @CRLF)
    If $aCols[0] <> UBound($avArray, 2) Then
    MsgBox(16, "Fehler:", "unterschiedliche Spaltenanzahl!")
    Return 0
    EndIf
    Local $aColformat = $aCols
    Local $sRow
    For $i = 1 To $aColformat[0]
    ;$aColformat[$i] = StringRight($aColformat[$i], 1)
    $aCols[$i] = StringReplace($aCols[$i], "N", "")
    $aCols[$i] = StringReplace($aCols[$i], "D", "")
    Next
    _ArrayDelete($aColformat, 0)
    _ArrayDelete($aCols, 0)
    Local $iCols = UBound($aColformat)
    For $i = 0 To UBound($avArray) - 1
    $sRow = ""
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringUpper(StringRight($aColformat[$j], 1))
    Case "N" ;numerisch
    $sRow &= StringFormat("%99s", $avArray[$i][$iCol])
    ;ConsoleWrite(StringFormat("%99s", $avArray[$i][$iCol]) & @CRLF)
    Case "D" ;Datum JJJJ/MM/TT
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    ;;consolewrite("D: " & $aColformat[$j] & " " & $avArray[$i][$iCols])
    $aDate = StringSplit($avArray[$i][$iCol], ".")
    $sRow &= StringRight("0" & $aDate[2], 2) & "." & StringRight("0" & $aDate[1], 2) & "." & $aDate[3]
    Case Else
    $sRow &= $avArray[$i][$iCol]
    EndSwitch
    If $j <> $iCols - 1 Then $sRow &= "|"
    Next
    $avArray[$i][0] = $sRow
    ;consolewrite($sRow & @CRLF)
    Next
    _ArraySort($avArray)
    ;_ArrayDisplay($avArray)
    ;_ArrayDisplay($aColformat, "FormatStrings")
    ;_ArrayDisplay($aCols, "Cols")
    ;consolewrite($iCols & @CRLF)
    For $i = 0 To UBound($avArray) - 1
    $aSplit = StringSplit($avArray[$i][0], "|", 2)
    For $j = 0 To $iCols - 1
    $iCol = $aCols[$j]
    Switch StringRight($aColformat[$j], 1)
    ; Case "X"

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

    ;#cs
    Case "N" ;numerisch
    $avArray[$i][$iCol] = StringStripWS($aSplit[$j], 1)
    ;consolewrite(" N: " & $avArray[$i][$iCol])
    Case "D" ;Datum JJJJ/MM/TT
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[3] & "." & $aDate[2] & "." & $aDate[1]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    Case "G" ;Geburtstags-Datum MM/TT/JJJJ
    $aDate = StringSplit($aSplit[$j], ".")
    $avArray[$i][$iCol] = $aDate[2] & "." & $aDate[1] & "." & $aDate[3]
    ;consolewrite(" D: " & $avArray[$i][$iCol])
    ;#ce
    Case Else
    $avArray[$i][$iCol] = $aSplit[$j]
    ;consolewrite(" : " & $avArray[$i][$iCol])
    EndSwitch
    Next
    ;consolewrite(@CRLF)
    Next
    Return 1
    ;_ArrayDisplay($avArray)
    EndFunc ;==>_arraySort2D_MC

    [/autoit]

    Ich war am überlegen ob ich anstelle der Labels eine LV verwende, war dann aber zu bequem und habe deine GUI verwendet (in diesem Teil sind sicher noch Optimierungen möglich). Zum Testen legst du am besten obiges Skript zusammen mit den CSV-Dateien in einen separtaten Ordner,

    Edits: Skript noch etwas optimiert und Fehlerbehandlungen eingebaut. Und das ganze besser kommentiert.

    PS.:spricht etwas dagegen wenn ich mit den Daten ein Beispielskript (SQLite) erstelle? Ist das Spiel kostenfrei?

    mfg autoBert

    Dateien

    WarenSim.zip 13,12 kB – 199 Downloads
  • Happy Birthday Techmix

    • autoBert
    • 18. November 2011 um 09:40

    Alle guten Wünsche zu deinem 33. besonders Gesundheit, Glück und Erfolg in allen Lebenslagen. Lass dich heute gross feiern :party:

    autoBert

  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 18. November 2011 um 09:36

    Hallo 'Ghostleader,

    das kannst du so lösen:

    [autoit]

    Case $BerechnungStart
    For $j = 0 To UBound($aRegExp) - 6 Step 1
    $Laderaumfrei = GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)
    $anzahl = Int($Laderaumfrei / GUICtrlRead($Gewicht[$j]))
    $iVK = GUICtrlRead($VK[$j])
    if $iVK > 0 Then
    GUICtrlSetData($Ergebnis[$j], ($iVK- GUICtrlRead($EK[$j]))* $anzahl)
    Else
    GUICtrlSetData($Ergebnis[$j], "N/A")
    EndIf
    Next

    [/autoit]

    mfg autoBert

  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 18. November 2011 um 08:32
    Zitat von Ghostleader

    Hallo,also aus der csv werden Zahlen ausgelesen und über ein Label wiedergegeben!Ich möchte nun mit diversen Zahlen eine Rechnung aufstellen, also muss ich diese ja zuvor auslesen.Mfg Ghostleader


    dazu musst du die ControlID kennen/ermitteln siehe dazu meinen vorhergehenden Post.

    mfg autoBert

  • GUICtrlSetData mit GUICtrlRead auslesen

    • autoBert
    • 18. November 2011 um 08:28

    Hallo Ghostleader,

    natürlich kann man auch Labels deren ID in einem Array gespeichert sind zur Laufzeit ändern und auch den Inhalt abfragen. Hier ein kleines Beispiel dazu:

    Spoiler anzeigen
    [autoit]

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

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

    ;Progrmmbeispiel um Labels zur Laufzeit zu erstellen, ändern und und abzufragen
    ;Author autoBert veröffentlicht in https://autoit.de/index.php?page…9633#post239633 am 18.11.11

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

    Dim $aNames[20][4]
    $aNames[0][0] = "Jürgen"
    $aNames[1][0] = "Peter"
    $aNames[2][0] = "Bert"
    $aNames[3][0] = "Christina"
    $aNames[4][0] = "Alex"
    $aNames[5][0] = "Astrid"
    $aNames[6][0] = "Roberto"
    $aNames[7][0] = "Heinz"
    $aNames[8][0] = "Iwan"
    $aNames[9][0] = "Robertina"
    $aNames[10][0] = "Hans"
    $aNames[11][0] = "Peter II."
    $aNames[12][0] = "Tina"
    $aNames[13][0] = "Michael"
    $aNames[14][0] = "Gunnar"
    $aNames[15][0] = "Kurt"
    $aNames[16][0] = "Gerald"
    $aNames[17][0] = "Alfred"
    $aNames[18][0] = "Stefanie"
    $aNames[19][0] = "Nicole"

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

    $msg = GUICreate("", 200, 450)
    for $i = 0 to 19
    $aNames[$i][2] = GUICtrlCreateLabel("",5,5+$i*22,140,20,$SS_NOTIFY)
    $aNames[$i][3] = GUICtrlCreateLabel("",150,5+$i*22,40,20,$SS_NOTIFY)
    Next
    $idFirst = $aNames[0][2]
    $idLast = $aNames[19][3]
    _RandomOnOff()

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

    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    case $idFirst to $idLast
    if IsInt(($msg-$idFirst)/2) Then ;nur Klick auf Namen zulassen
    MsgBox(64,"Label " & $msg - $idFirst,GUICtrlRead($msg) & @CRLF & "wurde angeklickt" & @CRLF & @CRLF & "zur Zeit " & GUICtrlRead($msg+1),5)
    EndIf
    EndSwitch
    WEnd

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

    Func _RandomOnOff()
    For $i = 0 To 19
    If Random(1, 3, 1) = 1 Then
    $aNames[$i][1]="Off"
    Else
    $aNames[$i][1]="On"
    EndIf
    Next
    _ArraySort($aNames,0,0,0,0)
    _ArraySort($aNames,0,0,0,1)
    For $i = 0 To 19
    If $aNames [$i][1] = "Off" Then
    GUICtrlSetData($idFirst+$i*2,$aNames[$i][0])
    GUICtrlSetBkColor($idFirst+$i*2, 0xAA0000)
    GUICtrlSetData($idFirst+$i*2+1,"Off")
    GUICtrlSetBkColor($idFirst+$i*2+1, 0xAA0000)
    Else
    GUICtrlSetData($idFirst+$i*2,$aNames[$i][0])
    GUICtrlSetBkColor($idFirst+$i*2, 0x22C21F)
    GUICtrlSetData($idFirst+$i*2+1, "On")
    GUICtrlSetBkColor($idFirst+$i*2+1, 0x22C21F)
    EndIf
    ConsoleWrite($idFirst+$i*2 & @TAB & $aNames[$i][0] & @CRLF)
    ;Sleep(1000)
    Next
    AdlibRegister("_RandomOnOff",Random(5000,10000,1))
    EndFunc ;==>_RandomOnOff

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

    solltest du damit immer noch nicht auf deine Problemlösung kommen solltest du dein komplettes (Beispiel-)Skript posten,

    Edit: Höhe der Gui angepasst
    mfg autoBert

  • Kontextmenü dynamisch

    • autoBert
    • 18. November 2011 um 05:33

    Hallo Kizum,

    wenn du den Text eines (Context)Menüeintrages auslesen willst musst du den erweiterten Paramter von GuiCtrlRead benutzen. Standardmässig wird der Status des Eintrags zurückgegeben.

    Du kannst es so machen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Array.au3>

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

    HotKeySet("{f1}", "CON")

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

    GUICreate("Döner mit alles", 200, 100)
    GUISetState(@SW_SHOW)

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

    Global $contextmenu
    Global $test[1]
    Con()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $test[1] to $test[UBound($test) -1]
    Consolewrite(GuiCtrlRead($msg,1) & " geklickt" & @CRLF)
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch

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

    WEnd

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

    Func CON()
    GUICtrlDelete($contextmenu)
    $contextmenu = GUICtrlCreateContextMenu()
    $rand = Random(5, 22, 1)
    For $i = 0 To $rand Step +1
    _ArrayAdd($test, GUICtrlCreateMenuItem("Eintrag-Nr" & $i, $contextmenu))
    Next
    ;_ArrayDisplay($test)
    EndFunc ;==>CON

    [/autoit]

    mfg autoBert

  • Kontextmenü dynamisch

    • autoBert
    • 17. November 2011 um 17:41

    Hallo Kizum,

    noch eine dringende Änderung damit es wirklich klappt (auch noch wenn weitere Controls in die Gui kommen):

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Array.au3>

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

    HotKeySet("{f1}", "CON")

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

    GUICreate("Döner mit alles", 200, 100)
    GUISetState(@SW_SHOW)

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

    Global $contextmenu
    Global $test[1]
    Con()

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

    While 1
    $msg = GUIGetMsg()

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

    Switch $msg
    Case $test[1] to $test[UBound($test) -1]
    Consolewrite($msg & " Contexteintrag für Eintrag: " & $msg - $test[1] & " geklickt" & @CRLF)
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch

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

    WEnd

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

    Func CON()

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

    GUICtrlDelete($contextmenu)

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

    Sleep(20)

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

    $contextmenu = GUICtrlCreateContextMenu()

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

    $rand = Random(5, 22, 1)
    For $i = 0 To $rand Step +1
    _ArrayAdd($test, GUICtrlCreateMenuItem("Eintrag-Nr" & $i, $contextmenu))

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

    Next
    _ArrayDisplay($test)
    EndFunc ;==>CON

    [/autoit]

    mfg autoBert

  • Kontextmenü dynamisch

    • autoBert
    • 17. November 2011 um 16:55

    Du musst deine Funktion CON auch aufrufen, ausserdem musst du das Array mit den ID's auswerten:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Array.au3>

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

    HotKeySet("{f1}", "CON")

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

    GUICreate("Döner mit alles", 200, 100)
    GUISetState(@SW_SHOW)

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

    Global $contextmenu
    Global $test[1]
    Con()

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

    While 1
    $msg = GUIGetMsg()

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

    Switch $msg
    Case $test[1] to UBound($test) -1
    Consolewrite("Contexteintrag für Eintrag: " & $msg - $test[1] & " geklickt" & @CRLF)
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch

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

    WEnd

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

    Func CON()

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

    GUICtrlDelete($contextmenu)

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

    Sleep(20)

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

    $contextmenu = GUICtrlCreateContextMenu()

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

    $rand = Random(5, 22, 1)
    For $i = 0 To $rand Step +1
    _ArrayAdd($test, GUICtrlCreateMenuItem("Eintrag-Nr" & $i, $contextmenu))

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

    Next
    _ArrayDisplay($test)
    EndFunc ;==>CON

    [/autoit]

    mfg autoBert

  • Inhalt eines Editfeldes Drucken lassen

    • autoBert
    • 17. November 2011 um 13:54

    Schau dir in der Hilfe

    [autoit]

    WinWaitActive

    [/autoit]

    an,

    mfg autoBert

  • Aus Exceltabelle Daten kopieren, in I-Seite suchen und Preise in Excel zurückscheiben

    • autoBert
    • 15. November 2011 um 16:18

    Hallo hexpirator,

    die Variable $Exceldatei ist auch doppelt belegt:

    [autoit]

    Func _execute()

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

    $sExceldatei = GUICtrlRead($Exceldatei)
    $iZeilen = GUICtrlRead($Zeilen)
    $xls = StringRight($sExceldatei, 3) ;speichert die letzten 3 Zeichen der Variable $Exceldatei in $xls
    If $xls = "xls" Then ;Wenn $xls = "xls" dann versuche Exceldatei zu öffnen
    $oExcel = _ExcelBookOpen($sExceldatei)
    If @error = 1 Then
    MsgBox(48, "Fehler!", "Das Excel-Objekt konnte nicht erstellt werden") ;Versteht sich von selbst
    Return
    ElseIf @error = 2 Then
    MsgBox(48, "Fehler!", "Die Datei existiert nicht!") ;Versteht sich von selbst
    Return
    EndIf
    Else
    MsgBox(48, "Fehler", "Bitte Dateipfad überprüfen", 3)
    Return
    EndIf

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

    For $i = 1 To $iZeilen ; ich gehe jetzt mal von 10 Sachen aus
    $Cell = _ExcelReadCell($oExcel, $i, 2) ; erste Spalte in der Exceltabelle
    $Read = InetRead("http://www.geizhals.at/deutschland/?in=&fs=" & $Cell, 1) ;Download Internetseite + Zelleninhalt
    If @error <> 0 Then
    MsgBox(48, "Fehler", "Es ist ein Fehler mit dem Internet aufgetreten")
    EndIf
    $Read = BinaryToString($Read) ; gibt den HTML Quellcode der Suchseite aus
    ;-------------------------
    $avArray = _StringBetween($Read, "&euro;&nbsp;", "</a>") ; gibt String zwischen den angegebenen Strings zurück

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

    ;_ArrayDisplay($avArray) ; stellt den Inhalt eines Array in einem Fenster dar fürs Debug

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

    ;-------------------------
    _ExcelWriteCell($oExcel, $avArray[0], $i, 4) ; schreibt den Preis in die 2 Spalte der Exceldatei $avArray[0] enthält den 1. gefundenen Preis $avArray[1] den 2. usw.
    Next
    MsgBox(64, "Preisabruf", "Der Preisabruf war erfolgreich", 3)
    ;falls kein neuer Durchlauf dann hier exit
    EndFunc ;==>_execute

    [/autoit]
    Zitat von hexpirator

    Noch ein Problem: Wenn ich das Script auf der Arbeit ausführe, dann kommt die Fehlermeldung:
    Es ist ein Fehler mit dem Internet aufgetreten.
    was verständlich ist, weil der Internetzugang über einen Proxyserver gesperrt ist und durch Benutzername und Passwort freigeschaltet werden muss.

    Hat einer eine Idee, wie ich das bewerkstelligen kann?

    Ganz einfach freischalten lassen oder es nur zu Hause benutzen,

    mfg autoBert

  • UDF für login (pincode)

    • autoBert
    • 15. November 2011 um 14:31

    schau dir dazu PIN-Eingabefenster und GDI+ PIN Pad an,

    mfg autoBert

  • autoBert feiert

    • autoBert
    • 15. November 2011 um 12:34

    Danke für die vielen guten Wünsche.

    Zitat von Schnitzel

    Ich hoffe du hattest nen schönen Geburtstag ;)

    Na ja war ein (Formel1-) Sonntag wie jeder andere, die Feier kommt erst dieses Wochenende,

    mfg autoBert

  • Aufruf von Robocopy Syntax Problem

    • autoBert
    • 15. November 2011 um 12:25

    Dann hast du auch dass fehlende Leerzeichen hinter

    [autoit]

    @SystemDir & "\robocopy.exe D:\Laptop"

    [/autoit]

    eingefügt oder durch kopieren automatisch korrigiert. Denn dieses war imho der Auslöser,

    mfg autoBert

  • Problem mit File

    • autoBert
    • 15. November 2011 um 11:48

    In Zeile 77 überschreibst du deine ControlID des Buttons $McDir (Choose Directory). Nimm für den Button einen andere Variable,

    mfg autoBert

  • Aufruf von Robocopy Syntax Problem

    • autoBert
    • 15. November 2011 um 11:40

    Der Aufruf müsste so aussehen:

    [autoit]

    RunWait(@SystemDir & "\robocopy.exe D:\Laptop " & $cdeDrive & "\Laptop /MIR /XD D:\Laptop\Recycler D:\Laptop\Daten\Tools\Portable_Firefox\Profilordner\Cache d:\Laptop\Daten\Tools\google_chrom_portable\Profil\Default /R:2 /W:2 /LOG:bkp.log /NS /NC /TEE")
    ;falls $cdeDrive nur den Laufwerksbuchstaben aber nicht den Doppelpunkt enthält, musst du diesen noch einfügen.

    [/autoit][autoit]

    @ComSpec & " /c " &

    [/autoit]

    wird nur benötigt wenn es sich um Befehle des Komandointerpreters handelt, wie z.B.: copy, es schadet aber im allgemeinen nicht.

    mfg autoBert

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™