Hallo ich habe mich heute mal hingesetzt unt einen Gleichungsrechner mit viel schnick-schnack zusammengecoded, doch wenn er startet dauert das schon ewig und 40mb groß ist er auch. Nu wollt ich fragen ob man die Geschwindigkeit etwas erhöhen kann durch andere Kommandos oder weis der Geier was auch immer
Hier mal der Code bin noch neuling daher nicht der Aufgeräumteste
Edit: Script verändert Schnickschnack entfernt.
Spoiler anzeigen
#include <Array.au3>
#include <String.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiListBox.au3>
#Region ### START Koda GUI section ### Form=
$Form1_2 = GUICreate("Gleichungsrechner v0.24", 792, 721, 202, 130)
$Button1 = GUICtrlCreateButton("Start", 520, 600, 163, 57)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("Die Gleichung", 376, 560, 84, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("", 464, 560, 265, 21)
$Label2 = GUICtrlCreateLabel("Dein Anneherungswert", 376, 16, 132, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 512, 16, 217, 21)
$Label3 = GUICtrlCreateLabel("Rechnungen: 0", 8, 696, 126, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$ListView1 = GUICtrlCreateListView("Gleichung |Lösung ", 0, 0, 370, 692)
$ListView1_0 = GUICtrlCreateListViewItem("Gleichung |Lösung ", $ListView1)
$Button2 = GUICtrlCreateButton("Clear", 376, 688, 75, 25)
$Button3 = GUICtrlCreateButton("Help", 456, 688, 75, 25)
$Button4 = GUICtrlCreateButton("Ergebnisse Speichern", 536, 688, 131, 25)
$Label5 = GUICtrlCreateLabel("Eine Gleichung wie etwa x+8=4*4", 464, 584, 194, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label6 = GUICtrlCreateLabel("Der Anneherungswer ist erst sinnvoll zu benutzen wenn deine Gleichung", 376, 80, 414, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label7 = GUICtrlCreateLabel("Werte oder ein Ergebniss mit mehr als 8 Nachkommastellen hat.", 376, 96, 365, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label8 = GUICtrlCreateLabel("Als Anneherungswert eignen sich alle Zahlen die kleiner als 1 sind", 376, 112, 380, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label9 = GUICtrlCreateLabel("Aberauch bei Zahlen die größer als 1 sind sollte es keinen Fehler gben", 376, 128, 405, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$zahl = 0
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Button4
$pfad = FileSaveDialog("Speichern unter...", @UserProfileDir, "Testdatein (*.txt)")
$ListViewLines = _GUICtrlListView_GetItemCount($ListView1) - 1
$File = FileOpen($pfad & ".txt", 2)
For $i = 0 To $ListViewLines
$ListViewZeile = _GUICtrlListView_GetItemTextString($ListView1, $i)
FileWriteLine($pfad & ".txt", $ListViewZeile)
Next
FileClose($pfad & ".txt")
WinSetState("Gleichungsrechner", "", @SW_RESTORE)
Case $Button2
_GUICtrlListView_DeleteAllItems($ListView1)
Case $Button1
gogo()
Case $GUI_EVENT_CLOSE
Exit
Case $Button3
MsgBox(0, "Help", "Beachte das du Kommas als Punkt (.) schreibst!")
EndSwitch
WEnd
Func gogo()
$expression1 = GUICtrlRead($Input1)
$expression = GUICtrlRead($Input1)
$x_guess = GUICtrlRead($Input2)
Local $expression
[/autoit] [autoit][/autoit] [autoit]$expression = "&" & $expression & "&"
$right_side = _StringBetween($expression, "=", "&")
$left_side = _StringBetween($expression, "&", "=")
$expression = $left_side[0] & " - (" & $right_side[0] & ")"
Local $x_guesses_array[2]
$c = 0
While 1
$x_guess = $x_guess - (_Fx($expression, $x_guess) / _SlopeOfTangent($expression, $x_guess))
$c += 1
If IsInt($c / 1000) = 1 And IsInt($c / 2000) = 0 Then
$x_guesses_array[0] = $x_guess
$x_guesses_array[1] = 0
EndIf
If IsInt($c / 2000) Then
$x_guesses_array[1] = $x_guess
If Abs($x_guesses_array[1] - $x_guesses_array[0]) < 0.001 Then ExitLoop
EndIf
If $c >= 10000 Then
MsgBox(0, "Ergebniss", "Leider konnte deine Formel nicht errechnet werden.")
ExitLoop
EndIf
WEnd
GUICtrlCreateListViewItem($expression1 & " |" & Round($x_guess, 4), $ListView1)
$zahl = $zahl + 1
GUICtrlSetData($Label3, "Rechnungen: " & $zahl)
EndFunc ;==>gogo
Func Terminate()
Exit
EndFunc ;==>Terminate
Func _SlopeOfTangent($expr, $at_point, $var = "x", $places = 4)
Local $dx = 0.00000001
Local $x = $at_point
Local $y = $x + $dx
Local $slope = Execute(StringReplace($expr, $var, "$y")) - Execute(StringReplace($expr, $var, "$x"))
Return Round($slope / $dx, $places)
EndFunc ;==>_SlopeOfTangent
Func _Fx($expr, $at_point)
Return Execute(StringReplace($expr, "x", "$at_point"))
EndFunc ;==>_Fx