Suche Hilfe beim erstellen einer für mich Komplizierten Rechnung

  • Hallo zusammen,

    ich brauche heute mal wieder eure Hilfe.

    Zuerst das Script:

    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListviewConstants.au3>
    #include <GuiListView.au3>
    #include <StaticConstants.au3>
    #include <ButtonConstants.au3>
    #include <INet.au3>

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

    #Region START GUI
    $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)
    $Startstadt = GUICtrlCreateCombo("Wähle Stadt", 85, 75, 91, 130)
    GUICtrlSetData(-1, "Accra|Aden|Alexandria|Algier|Amsterdam|Athen|Barcelona|Basra|Beirut|Bordeaux|Dakar|Edo|Genua|Hamburg|Kappstadt|Konstantinopel|Las Palmas|Lissabon|London|Luanda|Madeira|Maskat|Melaka|Mogadischu|Mosambik|Mumbai|Nagasaki|Oslo|Quanzhou|Reykjavik|Semerang|Seoul|Sevilla|Sri Lanca|Stockholm|Suez|Tianjin|Tourane|Tripolis|Venedig")
    $Ziehlstadt = GUICtrlCreateCombo("Wähle Stadt", 212, 75, 91, 25)
    GUICtrlSetData(-1, "Accra|Aden|Alexandria|Algier|Amsterdam|Athen|Barcelona|Basra|Beirut|Bordeaux|Dakar|Edo|Genua|Hamburg|Kappstadt|Konstantinopel|Las Palmas|Lissabon|London|Luanda|Madeira|Maskat|Melaka|Mogadischu|Mosambik|Mumbai|Nagasaki|Oslo|Quanzhou|Reykjavik|Semerang|Seoul|Sevilla|Sri Lanca|Stockholm|Suez|Tianjin|Tourane|Tripolis|Venedig")
    GUISetState(@SW_SHOW)
    #comments-start
    $EndMenu = GUICtrlCreateMenu("Programm Beenden")
    $Ende = GUICtrlCreateMenuItem("Verlassen", $EndMenu)
    #comments-end
    #EndRegion END GUI
    ;---------------------------------------------------------------------------------
    ; Berechnungs Labels Anfang
    #region Berechnungs Labels
    $Ergebnis1 = GUICtrlCreateLabel("", 680, 230, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis2 = GUICtrlCreateLabel("", 680, 260, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis3 = GUICtrlCreateLabel("", 680, 290, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis4 = GUICtrlCreateLabel("", 680, 320, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis5 = GUICtrlCreateLabel("", 680, 350, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ergebnis6 = GUICtrlCreateLabel("", 680, 380, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Berechnungs Labels
    ; Berechnungs Labels Ende
    ;---------------------------------------------------------------------------------
    ; Buttons Start
    #region Buttons
    $BerechnungStart = GUICtrlCreateButton("Berechnung Starten", 745, 75, 130, 20)
    #endregion Buttons
    ; Buttons Ende
    ;---------------------------------------------------------------------------
    ; Übersicht Überschriften Labels beginn
    #region Übersicht Überschriften Labels
    $Ware = 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("Einkaufs-Preis", 415, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Verkauf = GUICtrlCreateLabel("Verkaufs-Preis", 570, 160, 120, 158)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht = 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)
    #endregion Übersicht Überschriften Labels
    ;Übersicht Überschriften Labels Ende
    ;-----------------------------------------------------------------------------
    ;Combo Waren Labels beginn
    #region Combo Waren Labels
    $Ware1 = GUICtrlCreateLabel("", 30, 230, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ware2 = GUICtrlCreateLabel("", 30, 260, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ware3= GUICtrlCreateLabel("", 30, 290, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ware4= GUICtrlCreateLabel("", 30, 320, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ware5= GUICtrlCreateLabel("", 30, 350, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Ware6= GUICtrlCreateLabel("", 30, 380, 150, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Combo Waren Labels
    ; Combo Waren Labels Ende
    ;--------------------------------------------------------------------------------
    ; Stufen Labels Start
    #region Stufen Labels
    $Stufe1= GUICtrlCreateLabel("", 240, 230, 25, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe2= GUICtrlCreateLabel("", 240, 260, 25, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe3= GUICtrlCreateLabel("", 240, 290, 25, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe4= GUICtrlCreateLabel("", 240, 320, 25, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe5= GUICtrlCreateLabel("", 240, 350, 25, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Stufe6= GUICtrlCreateLabel("", 240, 380, 25, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Stufen Labels
    ; Stufen Labels Ende
    ;------------------------------------------------------------------------------------
    ; Waren Gewicht Start
    #region Waren Gewicht
    $Gewicht1 = GUICtrlCreateLabel("", 340, 230, 80, 20)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht2 = GUICtrlCreateLabel("", 340, 260, 80, 20)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht3 = GUICtrlCreateLabel("", 340, 290, 80, 20)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht4 = GUICtrlCreateLabel("", 340, 320, 80, 20)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht5 = GUICtrlCreateLabel("", 340, 350, 80, 20)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Gewicht6 = GUICtrlCreateLabel("", 330, 380, 80, 20)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Waren Gewicht
    ; Waren Gewicht Ende
    ;----------------------------------------------------------------------------------------
    ; Einkaufspreis Labels Start
    #region Einkaufspreis Labels
    $EK1= GUICtrlCreateLabel("", 465, 230, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK2= GUICtrlCreateLabel("", 455, 260, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK3= GUICtrlCreateLabel("", 455, 290, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK4= GUICtrlCreateLabel("", 455, 320, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK5= GUICtrlCreateLabel("", 455, 350, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $EK6= GUICtrlCreateLabel("", 455, 380, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Einkaufs Labels
    ; Einkaufspreis Labels Ende
    ;-----------------------------------------------------------------------------------------
    ; Combo Verkaufspreis Labels VK beginn
    #region Combo Verkaufspreis Labels VK
    $VK1= GUICtrlCreateLabel("", 610, 230, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK2= GUICtrlCreateLabel("", 610, 260, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK3= GUICtrlCreateLabel("", 610, 290, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK4= GUICtrlCreateLabel("", 610, 320, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK5= GUICtrlCreateLabel("", 610, 350, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $VK6= GUICtrlCreateLabel("", 610, 380, 50, 25)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Verkaufspreis Lanca Labels VK
    ; Combo Verkaufspreis Labels VK Ende
    ;-------------------------------------------------------------------------------------------

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

    ; Input Felder beginn
    #region Input Felder
    $InputLadung = GUICtrlCreateInput("", 360, 75, 130, 21)
    $InputLadungbelegt = GUICtrlCreateInput("", 553, 75, 130, 21)
    #endregion Input Felder
    ; Input Felder Ende
    ;--------------------------------------------------------------------------------------
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    ; BEGINN START STÄDTE LABELS
    case $Startstadt
    If GUICtrlRead($Startstadt) = "Wähle Stadt" Then
    GUICtrlSetData($Ware1, "-")
    GUICtrlSetData($Ware2, "-")
    GUICtrlSetData($Ware3, "-")
    GUICtrlSetData($Ware4, "-")
    GUICtrlSetData($Ware5, "-")
    GUICtrlSetData($Ware6, "-")
    GUICtrlSetData($Stufe1, "-")
    GUICtrlSetData($Stufe2, "-")
    GUICtrlSetData($Stufe3, "-")
    GUICtrlSetData($Stufe4, "-")
    GUICtrlSetData($Stufe5, "-")
    GUICtrlSetData($Stufe6, "-")
    GUICtrlSetData($EK1, "-")
    GUICtrlSetData($EK2, "-")
    GUICtrlSetData($EK3, "-")
    GUICtrlSetData($EK4, "-")
    GUICtrlSetData($EK5, "-")
    GUICtrlSetData($EK6, "-")
    GUICtrlSetData($Gewicht1, "-")
    GUICtrlSetData($Gewicht2, "-")
    GUICtrlSetData($Gewicht3, "-")
    GUICtrlSetData($Gewicht4, "-")
    GUICtrlSetData($Gewicht5, "-")
    GUICtrlSetData($Gewicht6, "-")
    EndIf
    If GUICtrlRead($Startstadt) = "Accra" Then
    GUICtrlSetData($Ware1, "Datteln")
    GUICtrlSetData($Ware2, "Zitronen")
    GUICtrlSetData($Ware3, "Pfeffer")
    GUICtrlSetData($Ware4, "Skorpionsgift")
    GUICtrlSetData($Ware5, "Schlangengalle")
    GUICtrlSetData($Ware6, "Bernstein")
    GUICtrlSetData($Stufe1, "1")
    GUICtrlSetData($Stufe2, "2")
    GUICtrlSetData($Stufe3, "3")
    GUICtrlSetData($Stufe4, "4")
    GUICtrlSetData($Stufe5, "5")
    GUICtrlSetData($Stufe6, "7")
    GUICtrlSetData($EK1, "28")
    GUICtrlSetData($EK2, "117")
    GUICtrlSetData($EK3, "111")
    GUICtrlSetData($EK4, "226")
    GUICtrlSetData($EK5, "248")
    GUICtrlSetData($EK6, "791")
    GUICtrlSetData($Gewicht1, "25")
    GUICtrlSetData($Gewicht2, "25")
    GUICtrlSetData($Gewicht3, "20")
    GUICtrlSetData($Gewicht4, "35")
    GUICtrlSetData($Gewicht5, "35")
    GUICtrlSetData($Gewicht6, "100")
    EndIf
    ; ENDE START STÄDTE LABELS
    ;----------------------------------------------------------------
    ; BEGINN ZIEHL STÄDTE LABELS
    EndIf
    case $Ziehlstadt
    If GUICtrlRead($Ziehlstadt) = "Wähle Stadt" Then
    GUICtrlSetData($VK1, "-")
    GUICtrlSetData($VK2, "-")
    GUICtrlSetData($VK3, "-")
    GUICtrlSetData($VK4, "-")
    GUICtrlSetData($VK5, "-")
    GUICtrlSetData($VK6, "-")
    EndIf
    If GUICtrlRead($Ziehlstadt) = "Sri Lanca" Then
    GUICtrlSetData($VK1, "162")
    GUICtrlSetData($VK2, "294")
    GUICtrlSetData($VK3, "1160")
    GUICtrlSetData($VK4, "2022")
    GUICtrlSetData($VK5, "2584")
    GUICtrlSetData($VK6, "8244")
    EndIf
    ; ENDE ZIEHL STÄDTE LABELS
    ;-----------------------------------------------------------------
    ; BEGINN BERECHNUNGEN
    Case $BerechnungStart
    berechnen()
    ; ENDE BERECHNUNGEN
    EndSwitch
    WEnd

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

    ; Funktion berechnen start
    Func berechnen($aufgabe=1)
    if $aufgabe=1 Then
    GUICtrlSetData($Ergebnis1, (GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)) * GUICtrlRead($VK1))
    GUICtrlSetData($Ergebnis2, (GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)) * GUICtrlRead($VK2))
    GUICtrlSetData($Ergebnis3, (GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)) * GUICtrlRead($VK3))
    GUICtrlSetData($Ergebnis4, (GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)) * GUICtrlRead($VK4))
    GUICtrlSetData($Ergebnis5, (GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)) * GUICtrlRead($VK5))
    GUICtrlSetData($Ergebnis6, (GUICtrlRead($InputLadung) - GUICtrlRead($InputLadungbelegt)) * GUICtrlRead($VK6))
    EndIf
    EndFunc
    ; Funktion berechnen Ende

    [/autoit]

    Nun zu dem Eigendlichem Problem.

    Also wie ihr ja seht giebt es in diesem Skript 40 Städte zur Auswahl in den Comboboxen.
    Jede dieser Städte hat 6 Waren im Angebot mit jeweiligen Einkaufs/Verkaufspreisen.
    Ich möchte nun errechnen wieviel man Gewinn macht wenn man den Laderaum mal den Verkaufspreis nimmt. (siehe Rechnung im Skript)

    Nun ist aber das Problem das jede Stadt andere Verkaufspreise hat, dh. Wenn ich jetzt Zb. von Accra nach Srilanca fahre so wie es eingebaut ist kommen diese im Script eingegebenen Verkaufspreise dabei raus.
    Fahre ich nun von Accra zb. nach Konstantinopel sind da wieder andere Verkaufspreise. Wie kann ich das nun machen das ich alle Verkaufspreise rein bekomme und der immer dann die richtigen aussliest, also wenn ich in der Startstadt Combobox Accra auswähle und in der Ziehlstadt Konstantinopel errechnet?

    Was noch erschwährend hinzu kommt ist das man von jeder dieser 40 Städte in die anderen 39 reisen kann und da immer für eine Ware ander Preise sind?

    Beispiel:

    Pfeffer von:
    Accra nach Srilanca aber
    Verkaufspreis - 455
    aber von
    Accra nach Konstantinopel
    Verkaufspreis - 892
    und so geht es immer weiter mit den anderen Städten.

    Ich hoffe ihr versteht wie ich das meine und wenn doch nicht einfach schreiben bitte und sagen was ihr nicht versteht!

    Als helfende Erklährung noch ein Anhang wo ihr in exel seht um was es geht.

    Mfg Ghostleader

  • Ohne mir da jetzt lange gedanken drüber zu machen - pack die Städte und die dazugehörigen Daten(Preise etc.) in ein Array. Damit hast du per Index immer und überall Zugriff auf die entsprechenden Daten der ausgewählten Stadt. Die ganzen Labes und Combos lassen sich dann ebenfalls durch FOR Schleifen befüllen. Dürfte das ganze deutlich übersichtlicher und haändlicher machen.

  • Hallo i2c,

    danke für deine super schnelle Antwort.

    Nur sehe ich da gerade das Problem das ich mit Arrys noch nicht viel zu tun hatte, ebenso wie mit For Schleifen. Ich bin noch net solange bei Auto IT das ich das schon ausprobiert habe leider :whistling: .

    Wenn du vielleicht ein Beispiel für mich hättest wäre das nicht schlecht dann könnte ich es mir zumindest mal ansehen und schauen ob ich es gleich verstehe!

    Mfg Ghostleader

  • http://www.bug-fix.info/array_tut.htm
    Zum Thema FOR Schleife hilft die Hilfe (toller Satz).

    Beispiel kann ich grad nicht machen, bin am Arbeiten.

    Es heist übrigens nicht Auto IT. Dann kommt bald wieder einer und registriert sich hier, weil er denkt es ginge um Informationtechnik in der Automobilwelt.

  • Danke wieder für deine schnelle Antwort,

    jedoch muss ich erstmal sehen ob ich das so hin bekomme denn sieht für mich(für dich net) ganz schön kompliziert aus.

    Etwas einfacher wäre es vielleicht wenn ich ein Beispiel zu meinem Skript hätte um es da zu sehen. Wenn vielleicht jemand mal zeit hat und das machen könnte wäre das echt super!

    Mfg Ghostleader

  • Es heist übrigens nicht Auto IT. Dann kommt bald wieder einer und registriert sich hier, weil er denkt es ginge um Informationtechnik in der Automobilwelt.


    ist mir am Anfang als alter IT'ler auch passiert ;)

    BLinz

  • Sind denn die Ein- und Verkaufspriese überhaupt fix. Ich könnte mir vorstellen das auch in einem Spiel die Preise Schwankungen unterliegen, sei es wegen einer Missernte oder nach einem Schiffsverlust.
    Wenn sie fix sind kannst du ja Funktionen aus der Excel.au3 verwenden, z.B.:

    [autoit]

    _ExcelReadSheetToArray

    [/autoit]

    . Auch solltest du dir überlegen dies evtl. in https://autoit.de/index.php?page=Board&amp;boardID=51 zu posten.

    mfg autoBert

  • jedoch wollte ich es schon gerne selber machen wenn ich denn nur ein bsp. habe, denn wenn es wer für mich kommplett macht lerne ich ja auch nix für die Zukunft!

    nur wenn du gar nicht weiter weist:

    Spoiler anzeigen
    INIaufbau EK

    [Accra]
    Aloe=2146
    Amber=2511
    Amerikanischer Ginseng=822
    [Aden]
    Aloe=1184
    Amber=1434
    Amerikanischer Ginseng=2600
    [Alexandria]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=794
    [Algier]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=307
    [Amsterdam]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=512
    [Sevilla]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0
    [Sri Lanka]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0

    Iniaufbau VK

    [Accra]
    Aloe=2146
    Amber=2511
    Amerikanischer Ginseng=822
    [Aden]
    Aloe=1184
    Amber=1434
    Amerikanischer Ginseng=2600
    [Alexandria]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=794
    [Algier]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=307
    [Amsterdam]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=512
    [Sevilla]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0
    [Sri Lanka]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0

    Spoiler anzeigen

    1. Skriptansatz:

    [autoit]

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

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

    Global $aEK, $aVK, $aStadtVon, $aStadtEK, $aStadtVK, $aWare[1][3], $sIniDir = @ScriptDir & "\", $hlblEK, $hlblVK, $hlblRohertrag
    Const $sElect = "bitte auswählen"

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

    $hGui = GUICreate("Warenhandel ", 420, 150, 302, 218)
    GUICtrlCreateLabel("Einkauf in", 8, 5, 200, 25)
    $hcboStadtEK = GUICtrlCreateCombo("", 8, 20, 200, 25)
    $aStadtVon = IniReadSectionNames($sIniDir & "EK.ini")
    If IsArray($aStadtVon) Then
    For $i = 1 To $aStadtVon[0]
    GUICtrlSetData($hcboStadtEK, $aStadtVon[$i])
    Next
    _GUICtrlComboBox_InsertString($hcboStadtEK, $sElect, 0)
    _GUICtrlComboBox_SetCurSel($hcboStadtEK, 0)
    EndIf

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

    GUICtrlCreateLabel("Verkauf in", 218, 5, 200, 25)
    $hcboStadtVK = GUICtrlCreateCombo("", 218, 20, 200, 25)
    If IsArray($aStadtVon) Then
    For $i = 1 To $aStadtVon[0]
    GUICtrlSetData($hcboStadtVK, $aStadtVon[$i])
    Next
    _GUICtrlComboBox_InsertString($hcboStadtVK, $sElect, 0)
    _GUICtrlComboBox_SetCurSel($hcboStadtVK, 0)
    EndIf

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

    GUICtrlCreateLabel("handelbare Waren", 8, 55, 200, 25)
    $hcboWare = GUICtrlCreateCombo("", 8, 70, 200, 25)
    readIniEKandVK("", "")

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

    $hlblEK = GUICtrlCreateLabel("EK-Preis: ", 213, 45, 200, 20)
    $hlblVK = GUICtrlCreateLabel("VK-Preis. ", 213, 65, 200, 20)
    $hlblRohertrag = GUICtrlCreateLabel("Diff.: ", 213, 85, 200, 20)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hcboStadtEK, $hcboStadtVK
    readIniEKandVK(GUICtrlRead($hcboStadtEK), GUICtrlRead($hcboStadtVK))
    Case $hcboWare
    _ArrayDisplay($aWare)
    $i = _ArraySearch($aWare, GUICtrlRead($hcboWare), 1)
    ConsoleWrite($i & @CRLF)
    GUICtrlSetData($hlblEK, "EK-Preis: " & $aWare[$i][1])
    GUICtrlSetData($hlblVK, "VK-Preis: " & $aWare[$i][2])
    GUICtrlSetData($hlblRohertrag, "Diff.: " & $aWare[$i][2] - $aWare[$i][1])

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

    EndSwitch
    WEnd

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

    Func readIniEKandVK($sStadtEK, $sStadtVK)
    $aStadtEK = IniReadSection($sIniDir & "\EK.INI", $sStadtEK)
    $aStadtVK = IniReadSection($sIniDir & "\VK.INI", $sStadtVK)
    ;_ArrayDisplay($aStadtVK)
    If IsArray($aStadtEK) And IsArray($aStadtVK) Then
    For $i = 1 To $aStadtEK[0][0]
    If $i = 1 Then
    GUICtrlSetData($hcboWare, "", "")
    GUICtrlSetData($hlblEK, "EK-Preis: ")
    GUICtrlSetData($hlblVK, "VK-Preis: ")
    GUICtrlSetData($hlblRohertrag, "Diff.: ")
    ReDim $aWare[1][3]
    $aWare[0][0] = 0
    EndIf
    If $aStadtEK[$i][1] <> 0 Then
    $nVK = IniRead($sIniDir & "\VK.ini", $sStadtVK, $aStadtVK[$i][0], 0)
    ConsoleWrite($aStadtEK[$i][1] & @TAB & $nVK & @CRLF)
    If $nVK <> 0 Then
    $aWare[0][0] += 1
    $j = $aWare[0][0]
    ConsoleWrite("Elemente: " & $j & @CRLF)
    ReDim $aWare[$j + 1][3]
    $aWare[$j][0] = $aStadtEK[$i][0]
    $aWare[$j][1] = $aStadtEK[$i][1]
    $aWare[$j][2] = $nVK
    GUICtrlSetData($hcboWare, $aStadtEK[$i][0])
    EndIf
    EndIf
    Next
    EndIf
    _GUICtrlComboBox_InsertString($hcboWare, $sElect, 0)
    _GUICtrlComboBox_SetCurSel($hcboWare, 0)
    EndFunc ;==>readIniEKandVK

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

    #cs

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

    #ce

    [/autoit]

    dieser ist nur rudimentär gelöst damit man die Technik erkennen kann

    mfg autoBert

  • Hallo autoBert,

    vielen lieben Dank erstmal das du dir die Mühe gemacht hast dieses Bsp. für mich zu erstellen!

    Ich werder versuchen es erstmal im Groben für mich umzubauen und anzupassen. Ich hoffe ich verstehe alles soweit :rolleyes:

    Eins weis ich jedoch jetzt schon und zwar das ich irgendwie noch versuchen muss die Rechnung aus meinem Skript mit einzubringen denn das gewicht spielt eine grosse Rolle, da das Schiff ja nur soviel mit nehmen kann wie es noch platz hat und dies muss ebenfals mit dem berechnen Button errechnet werden.

    Aber wir werden sehen ;)

    Vielen dank auf jedenfall erstmal!

    Mfg Ghostleader

  • Hallo nochmal,

    Sorry schonmal für den doppel Post, aber gibt es vielleicht die Möglichkeit statt:

    [autoit]

    GUICtrlCreateLabel("handelbare Waren", 8, 55, 200, 25)
    $hcboWare = GUICtrlCreateCombo("", 8, 70, 200, 25)
    readIniEKandVK("", "")

    [/autoit]

    es so zu machen das gleich alle Waren berechnet und angezeigt werden, ohne das man eine spezielle Ware auswählen muss? Ich blicke die ganze zeit drauf aber ich weiss net wie ich das Bsp. von autoBert so umstellen kann das es eben funktioniert, denn die genante Combo muss ja raus aber ich weiss net wie ich es dann weiter unten in der Funktion dann umbauen muss!!

    Vielen Dank schonmal im Voraus!

    Mfg Ghostleader

    PS:
    Ebenfalls ist mir noch ein Problem aufgefallen, was scheinbar nicht bedacht wurde. Ich stelle jetzt nochmal die Bsp. Inis und geänderte von mir rein und erläutere dann.

    EK alt:

    Spoiler anzeigen

    [Accra]
    Aloe=2146
    Amber=2511
    Amerikanischer Ginseng=822
    [Aden]
    Aloe=1184
    Amber=1434
    Amerikanischer Ginseng=2600
    [Alexandria]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=794
    [Algier]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=307
    [Amsterdam]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=512
    [Sevilla]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0
    [Sri Lanka]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0


    EK neu:

    Spoiler anzeigen

    [Accra]
    Aloe=2146
    Amber=2511
    Amerikanischer Ginseng=822
    [Aden]
    Oliven=1184
    Zimmt=1434
    Kaffe=2600
    [Alexandria]
    Duftstoffe=0
    Tabak=0
    Säbelschmuck=794
    [Algier]
    Weizen=0
    Lammfleisch=0
    Farbstoffe=307
    [Amsterdam]
    Marmor=0
    Eisenwaren=0
    Antiquitäten=512
    [Sevilla]
    Trauben=0
    Sojabohnen=0
    Baumwollstoffe=0
    [Sri Lanka]
    Ölgemälde=0
    Velours=0
    Elfenbein=0


    VK alt = neu

    Spoiler anzeigen

    [Accra]
    Aloe=2146
    Amber=2511
    Amerikanischer Ginseng=822
    [Aden]
    Aloe=1184
    Amber=1434
    Amerikanischer Ginseng=2600
    [Alexandria]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=794
    [Algier]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=307
    [Amsterdam]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=512
    [Sevilla]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0
    [Sri Lanka]
    Aloe=0
    Amber=0
    Amerikanischer Ginseng=0

    So, wie man sieht ist die ek neu anders, denn jede Stadt hat ja andere Waren (in der EK alt nicht so), die allerdings in jeder Stadt verkauft werden können zu dem entsprechend anderen Preisen.

    Mann müste nun in der VK.INI nach Namen auslesen lassen um das zu beheben, die Frage ist nur ob dies so möglich ist.
    Also das heisst wenn wir von Accra ausgehen weil es im bsp so ist dann sieht man ja das die VK für Accra so richtig ist, jedoch fehlen ja dann alle anderen sachen für die anderen städte!

    Bsp wie es für die VK.INI aussehen müsste wenn wir nun in Aden (von der EKneu.INI ausgehend) kaufen und in Accra verkaufen:

    Spoiler anzeigen

    [Accra]
    Aloe=2146
    Amber=2511
    Amerikanischer Ginseng=822
    Oliven=1184
    Zimmt=1434
    Kaffe=2600


    Bedeutet man müsste in der VK.INI eigentlich pro Stadt alle Waren mit den dazugehörigen vk Preisen eintragen und dann via Namen der Ware auslesen lassen um Welche es nun geht also quasi mit der gewälten EK der Stadt abgleichen insofern das überhaupt geht was ich hoffe.

    Sorry ist bissel umständlich und lang aber ich hoffe ihr wisst was ich meine und habt eine Lösung dafür!

    Mfg Ghostleader

    Einmal editiert, zuletzt von Ghostleader (9. November 2011 um 17:45) aus folgendem Grund: PS:

  • Hab den Thread jetzt nur überflogen und das Script im Startpost garnicht angesehen, aber ich würde in deinem Fall keine ini Dateien verwenden, da du da extreme Redundanz hast. So wie ich das ganze verstanden habe bietet sich eine CSV Datei als Datenquelle an (könntest du dann deine Excel Tabelle auch gleich exportieren und musst die Daten nicht neu strukturieren) und im Script wird dann mit einem 2-Dimensionalen Array gearbeitet.

    Hier mal ein Beispiel wie die csv ausschaun könnte:

    VK pro stadt CSV:

    Code
    Stadt,Ware1,Ware2,Ware3
    Berlin,100,50,30
    Stuttgart,60,70,20

    Ich bin mir jetzt nicht sicher ob du nur die VK Preise pro Stadt brauchst oder ob die EK Preise auch je Stadt aufgenommen werden müssen. Da hast du dann die Wahl, ob du alles in die selbe CSV schreibst oder getrennte Dateien verwenden möchtest. Beides in einer ist etwas unübersichtlich wenn man die Daten später vllt. ändern möchte, dafür ist es aber praktischer beim Einlesen ins Array. Ich tendiere aber eher zu 2 seperaten CSV Dateien und zugehörigen Arrays.

    Wenn du mit getrennten Dateien arbeitest und die EK Preise nicht von den Städten abhhängig sind kannst du diese auch per ini verwalten:

    EK ini:

    Code
    [EK-Preise]
    Ware1=10
    Ware2=20
    Ware3=15


    Einlesen der CSV:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    #include <file.au3>

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

    Global $VKfile=@ScriptDir & "\vk.csv"
    Global $warenAnzahl = 3

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

    $aVKpreise=readCSV($VKfile)
    _ArrayDisplay($aVKpreise)

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

    Func readCSV($file)
    Local $aTemp
    _FileReadToArray($file,$aTemp)
    Local $aReturn[$atemp[0]][$warenAnzahl+1]

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

    for $i=1 to $aTemp[0]
    $aSplit=StringSplit($atemp[$i],",",2)
    for $j=0 to UBound($aSplit)-1
    $aReturn[$i-1][$j]=$aSplit[$j]
    Next
    Next

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

    Return $aReturn
    EndFunc

    [/autoit]

    Wie du siehst hast du nun im Array alle VK Preise die zu den Städten gehören. Bist du nun in Stadt xyz musst du zunächst das Array mit _arraySearch nach der Stadt (in Spalte 0) absuchen. Der Trefferindex entspricht dann der Zeile des Arrays welche dich interessiert. Nun musst du noch wissen in welcher Spalte der Preis der Ware steht um die es gerade geht. Den Preis auslesen kannst du dann so:

    [autoit]


    ; stuttgart preis ware3:
    $trefferindex=_arraysearch($aVKpreise,"stuttgart",1,0,0,0,1,0)
    $warenspalte=3
    $vkpreis=$aVKPreise[$Trefferindex][$warenspalte]
    MsgBox(0,"",$vkpreis)

    [/autoit]

    3 Mal editiert, zuletzt von misterspeed (9. November 2011 um 22:37)

  • Hallo misterspeed,

    danke erstmal für deine Antwort.

    Ist es dir vielleicht möglich und hättest du Lust mir anhand eines Beispiels ähnlich wie autoBert das getan hat etwas zu erstellen wo ich sehen kann wie genau der Ablauf ist um dies dann besser zu Verstehen und umzusetzen?
    Ich wäre dir echt verbunden, denn momentan wenn ich es mir gerade so ansehe weiss ich nicht so recht wie ich das dann in meinem Skript umsetzen kann!

    Mfg Ghostleader