Wo liegt der Fehler?

  • Hallo Leute!

    Ich habe mir für ein Onlinegame folgendes Progrämmchen gebastelt, jedoch hakt es beim GuiCtrlSetData ziemlich am Ende der Scripts! In der davor liegenden MsgBox wird der Wert korrekt angezeigt, jedoch dann im Feld selber steht nur die erste Zahl, testet mal dann wisst ihr was ich meine!

    Kann jemand dazu etwas sagen, bzw. gibts dafür eine Erklärung und Lösung?

    Danke im voraus!!!

    [autoit]

    #include <GUIConstants.au3>
    #include <String.au3>
    #include <misc.au3>

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

    HotKeySet("{F1}", "_beenden")

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

    ;GUI anlegen
    $GUI = GUICreate("Ogame Berechnung", 500, 500, 193, 125)
    GUICtrlCreateLabel("Stunden", 125, 20)
    GUICtrlCreateLabel("Tage", 225, 20)
    GUICtrlCreateLabel("Wochen", 325, 20)

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

    ;Eingabe wieviel Stunden, Tage, Wochen
    $Stunde = GUICtrlCreateInput("", 125, 50, 25, 20)
    $Tag = GUICtrlCreateInput("", 225, 50, 25, 20)
    $Woche = GUICtrlCreateInput("", 325, 50, 25, 20)

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

    GUICtrlCreateLabel("Metall:", 25, 175)
    GUICtrlCreateLabel("Kristall:", 25, 200)
    GUICtrlCreateLabel("Deuterium:", 25, 225)

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

    $MetallproStunde = GUICtrlCreateLabel("", 125, 175)
    $KristallproStunde = GUICtrlCreateLabel("", 125, 200)
    $DeuteriumproStunde = GUICtrlCreateLabel("", 125, 225)

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

    $MetallproTag = GUICtrlCreateLabel("", 225, 175)
    $KristallproTag = GUICtrlCreateLabel("", 225, 200)
    $DeuteriumproTag = GUICtrlCreateLabel("", 225, 225)

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

    $MetallproWoche = GUICtrlCreateLabel("", 325, 175)
    $KristallproWoche = GUICtrlCreateLabel("", 325, 200)
    $DeuteriumproWoche = GUICtrlCreateLabel("", 325, 225)

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

    $Rechne = GUICtrlCreateButton("Berechnen", 175, 95, 145, 20)
    GUISetState()

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

    Dim $Metall1 = 17870, $Metall2 = 5392, $Metall3 = 12133, $Metall4 = 13820, $Metall5 = 15724, $Metall6 = 961, $Metall7 = 10639, $Metall8 = 3506, $Metall9 = 15724
    Dim $Kristall1 = 8085, $Kristall2 = 2011, $Kristall3 = 6207, $Kristall4 = 6207, $Kristall5 = 6207, $Kristall6 = 763, $Kristall7 = 4128, $Kristall8 = 1728, $Kristall9 = 7089
    Dim $Deuterium1 = 3826, $Deuterium2 = 759, $Deuterium3 = 2185, $Deuterium4 = 2977, $Deuterium5 = 3643, $Deuterium6 = 438, $Deuterium7 = 1526, $Deuterium8 = 838, $Deuterium9 = 2082

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    CASE $Rechne
    $Metall = $Metall1 + $Metall2 + $Metall3 + $Metall4 + $Metall5 + $Metall6 + $Metall7 + $Metall8 + $Metall9
    $Kristall = $Kristall1 + $Kristall2 + $Kristall3 + $Kristall4 + $Kristall5 + $Kristall6 + $Kristall7 + $Kristall8 + $Kristall9
    $Deuterium = $Deuterium1 + $Deuterium2 + $Deuterium3 + $Deuterium4 + $Deuterium5 + $Deuterium6 + $Deuterium7 + $Deuterium8 + $Deuterium9

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

    $Metall = _StringAddComma($Metall)
    $Metall = StringReplace(($Metall), "," , ".")

    $Kristall = _StringAddComma($Kristall)
    $Kristall = StringReplace(($Kristall), "," , ".")

    $Deuterium = _StringAddComma($Deuterium)
    $Deuterium = StringReplace(($Deuterium), "," , ".")

    $Ende1 = GuiCtrlREad($Stunde)

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

    $Ende1ges = ($Ende1 * $Metall)
    msgBox(0,"",$Ende1ges)
    GUICtrlSetData($MetallproStunde, $Ende1ges, "")

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

    EndSwitch
    WEnd

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

    Func _beenden()
    Winclose("","")
    Exit
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von Volumeman (25. März 2008 um 10:42)

  • is ja einfach :D
    Da du beim erstellen des Labels kein Inhalt ("") angibst, ist das Label sehr schmal, dies wird auch nach dem setzten der Daten nicht größer.
    Deshalb mußt du beim erstellen des Labels die Länge mit angeben

    [autoit]

    $MetallproStunde = GUICtrlCreateLabel("", 125, 175, 100)

    [/autoit]
  • ;( OMG, darüber habe ich garnicht nachgedacht, obwohl es ja nichts anderes hätte sein können..

    DANKE!!!

    Jetzt habe ich wohl noch eine Frage, ich mach ja den

    [autoit]

    $Metall = _StringAddComma($Metall)
    $Metall = StringReplace(($Metall), "," , ".")

    [/autoit]


    Natürlich ersetzt das Script auch das >>>,<<< durch einen >>>.<<<, aber wie schaffe ich es, dass er mir auch das tausender trennzeichen bastelt z.B. wenn die Zahl größer als 1 Million wird?

    Niemand eine Lösung für dieses "Problem"?

    Volumeman

    2 Mal editiert, zuletzt von Volumeman (26. März 2008 um 10:13)