Kalkulator mit festen Variablen

  • Hallo AutoIT Forum,

    obwohl ich schon Erfahrung in verschiedenen Programmiersprachen wie Java, C++, PHP, HTML & CSS gesammelt habe, bin ich neu in der Programmiersprache AutoIT.

    Mein Ziel ist es, eine .exe-Datei zu erstellen, die Zahlen addiert und multipliziert. Ich benötige jedoch Unterstützung, da ich mich mit AutoIT nicht auskenne.

    Das Programm soll folgendermaßen aussehen:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Es sollte eine Seite geben, auf der die Preise von "Text1" angezeigt werden, wobei die Preise fest in einer Variablen auf der zweiten Seite stehen. In der Gesamtspalte soll die Anzahl der Einheiten mit dem Preis multipliziert werden.

    Am Ende soll die Summe der Gesamtpreise berechnet werden.

    Wie aufwändig wäre dieses Projekt? Ich benötige zuerst eine Einschätzung mit 5 "Punkten".

    Ich wäre sehr dankbar für eure Hilfe.

  • Aufwandseinschätzung (von jemandem der sich mit AutoIt ein wenig auskennt):
    - <15 Minuten (für das was bei dir im Screenshot angezeigt wird)
    - ~1-5h (wenn man ein ordentliches UI haben will, ggf. mit Interaktionsmöglichkeiten wie "Spalte hinzufügen", "Items editieren", "Laden & Speichern", etc.. Aufwand abhängig davon wie viel man haben will)

    Startpunkt sollte sein: Verwende Arrays (oder Maps)

    - Deine Items (also die Tupel aus "Name" und "Preis") -> In ein Array damit.
    - Deine UI-Elemente ("ein" möglicher Lösungsweg) -> Jede Zeile in eine Map mit ['Name'] = LabelFürName, ['Anzahl'] = InputboxFürAnzahl, ['Einzelpreis'] = LabelFürPreis, etc. Dann ein Array (oder Map) für alle Zeilen anlegen, sodass man Zeilen dynamisch hinzufügen und entfernen kann.

    Ich weiß nicht wie versiert du im Programmieren im Allgemeinen bist, aber sehr viele AutoIt-Anfänger geben jedem UI-Element und allen anderen Sachen eigene Variablen (z.B. $LabelItem1Links, $LabelItem2Links, usw) und haben dann 500+ Zeilen an Copy&Paste um eine Tabelle anzuzeigen. Deshalb der Hinweis auf Arrays und Maps :S

    Edit: Ich glaube du bist hier im falschen Forenabschnitt. Vermutlich wolltest du "Hilfe und Unterstützung" ?

    lg

    M

  • Hallo Mars

    gibt es denn bei AutoIT ein UI Editor, wo ich mein Layout gestalten kann. Wenn das einmal steht, ist denke ich mal die Programmierung umso leichter.

    Ich möchte das Tool immer weiter umbauen und erweitern.

    Array sagt mir was, bin kein Typ von Copy&Past.

  • Ich frage mich, wo das Script it, das Du soweit ja schon fertig hast, oder?
    Auf welches gescripteten Zeilen sollen wir denn nach Fehler oder der Gleichen suchen????

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Es gibt mehrere Möglichkeiten zur UI Gestaltung. Vermutlich ist es am einfachsten das ISN-AutoItStudio zu verwenden, wenn man eine Grafische Benutzeroberfläche haben will (ISN AutoIt Studio). Da ist ein GUI-Editor dabei.

    Wenn man es via Code machen will (und sich schon etwas auskennt) habe ich dafür auch eine UDF: ([UIBB.au3] User Interface mit automatischer Anordnung der Ctrls - Vorschläge / Wünsche / Ideen). Die Beispiele dazu verwenden aber auch sehr viele Variablen wie "$hRightBot" etc. Das wurde dort so gemacht, damit man besser versteht wie die UDF arbeitet.

    Edit: "UDF" = "User Defined Functions". Im AutoIt-Kontext steht der Begriff stellvertretend für "Bibliothek mit ein paar praktischen Funktionen die man via #include verwenden kann".

    lg

    M

  • Ich lad mir das ISN AutoIT Studio heute Abend mal herunter und bastel mal was.

    Kann ich daraus direkt ein .exe Datei komprimieren?

    Ich baue erstmal die GUI auf, das coden wird sehr schwer werden (für mich in diesem Fall). Da bin ich etwas an euere Hilfe angewiesen. Nachdem ich die GUI fertig habe, würde ich mich nochmal im Thread hier melden. Dann schauen Wir mal, wie Wir was weitermachen können ggf. muss ich Geld in die Hand nehmen.

  • Ich denke, hiermit solltest du etwas anfangen können:

    Dabei nutze ich eine UDF, die ich vor ein paar Jahren erstellt habe: Listview edit subitems UDF
    Dort die ListviewEdit_v2.zip herunterladen und die Datei "ListViewEditInput.au3" in den selben Ordner kopieren, wie dieses Script.

    Den Code kannst du dir erstmal anschauen, dann solltest du die meisten Konzepte von AutoIt verstanden haben :)

    Viel Spaß damit :)

  • Eine Frage,..

    Ich habe folgendes:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Ich möchte gerne dort wo die "1" steht mit dem Preis, in diesem Fall "0,99€" multiplieren und bei Preis Gesamt anzeigen lassen. Wie mache ich das z.B.?

    Wenn das ganze PHP gewesen wäre, wäre ich wie folgt gegangen.

    Anstatt "1", eine Variable gesetzt und die Zahl in dem Feld gelesen hätte.

    Anstatt "0,99€" eine Variable gesetzt und die Zahl gespeichert hätte.

    beide Variable in einer anderen Variable multipliziert. Beispiel:

    var1=input1;

    var2=input2;

    vargesamt=var1*var2;

    Wie läuft das bei AutoIT?

  • Findet sich auch in dem Code von mir weiter oben:
    GuiCtrlReadData($iInputControl) zum Auslesen. Wenn du sichergehen willst, dass nur Zahlen drin stehen, solltest du noch z.B. mit RegExp prüfen: StringRegExp oder mit Int("5")/Number("1.24") umwandeln; Dabei können dann auch andere Werte rauskommen (keine Ahnung, was aus einem €-Zeichen wird. Aber du bekommst auf jedenfall ne Zahl.

    Das Eurozeichen würde ich nicht in das Inputfeld packen, sondern als Label rechts daneben => Man weiß, dass € gemeint sind, muss aber nicht filtern. Ansonsten auch noch das Ausgelesene mit StringRegExpReplace bearbeiten und z.B. mit "\d+\.d\+" checken. Müsstest dann auch noch für große Zahlen ggf. den (Im Deutschen) "." bei 1000er Stellen erkennen und das "," passend mit einem "." ersetzen.

    Danach kannst du die Werte mit Local $fNumber = Number(GuiCtrlReadData($iInputControl)) speichern und mit Local $fResult = $fPrice*$iAmount verrechnen.

  • Hallo Kanashius

    ich bin seit 1 Std dabei dein Code zu verstehen und etwas an einem Testumgebung umzusetzen aber leider. Ich verstehe nicht, wie ich die einzelne Funktionen bei AutoIt anwenden kann.

  • Hi Akr3p ,

    wenn ich dich richtig verstanden habe, stehst du mit AutoIt noch ganz am Anfang, richtig?
    Vielleicht ist es besser ein paar kleinere Skripte zu erstellen, die Teile deines Vorhabens wiederspiegeln, welche du dann zu einem Gesamtskript/Programm zusammen fügst. So lernst du die Basics ggf. zügiger oder einfacher - doch dies ist nur eine Idee 😇 .

    Warum empfehle ich dies?
    Die Arbeit mit GUIs (UI) kann ggf. etwas erschlagend sein, wenn man sich vorher mit HTML und CSS vertraut gemacht hat und weiß wie schnell eine Oberfläche im Web erstellt und designed werden kann.

    AutoIt ist PHP recht ähnlich (hoffentlich werde ich von Einigen hier für diese Aussage nicht gesteinigt 😂), daher kannst du mit Funktionen, wie in vielen anderen Sprachen (wie auch PHP), genauso umgehen. Gib gern weitere Details was du hiermit meinst:

    Ich verstehe nicht, wie ich die einzelne Funktionen bei AutoIt anwenden kann.

    Dann können wir sicherlich noch besser helfen.

    💡 Ansonsten kannst du über die Hilfe (F1 auf der jeweiligen Funktion) eine gute Beschreibung mit Beispiel(en) usw. finden. Damit lässt sich meist schon einiges machen 🤞 .

    Viele Grüße
    Sven

  • [...] Wenn das ganze PHP gewesen wäre, wäre ich wie folgt gegangen. [...]

    Hier mal ein einfaches Beispiel ohne Oberfläche (GUI). Vielleicht hilft es ein wenig.

    Viele Grüße
    Sven