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

Beiträge von teh_hahn

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 19. Oktober 2007 um 16:35

    Nein, Problem wird hier die Dateiendung (lnk) sein. Was gibt er denn bei Run aus? Versuch die Verknüpfung mal mit der rundll32.exe (PrinterDialog usw.) zu öffnen, wenn das möglich ist.

  • Problem zwischen 2 Scriptversionen

    • teh_hahn
    • 19. Oktober 2007 um 16:27

    Array $ports_A wird voher nicht initalisiert / es wird nicht vergrößert!

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 19. Oktober 2007 um 16:22

    Ja, dann läuft doch alles. Dann liegt es nur am ShellExecute. Versuch mal:

    [autoit]

    ShellExecute($s_path & "\" & $as_files[$i], "", "", "open")

    [/autoit]

    oder mit Run!

    EDIT: Jetzt sag nicht, da sind Leerzeichen in deinem Pfad!

  • gui skins

    • teh_hahn
    • 19. Oktober 2007 um 16:12

    Hi,

    sorry das ich schon wieder meckern muss, aber:
    1. Bitte Spoiler-AutoIt Tags benutzen!
    2. Bitte Code posten, der zumindest durch den Compiler läuft!

    Hier mal ein funktionierendes Beispiel:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>

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

    main()

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

    Func main()
    Local $h_quitbt = 0, $h_stylebt = 0

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

    GUICreate("TestGUI", 100, 100)

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

    $h_quitbt = GUICtrlCreateButton("Quit", 10, 10, 55, 25)
    GUICtrlSetBkColor(-1, 0xF4F4F0)
    GUICtrlSetColor(-1, 0x000080)
    $h_stylebt = GUICtrlCreateButton("Style", 10, 50, 55, 25)

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

    GUISetBkColor(0x000080)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $h_quitbt
    Exit
    Case $h_stylebt
    GUISetStyle($WS_POPUPWINDOW)
    EndSwitch
    WEnd
    EndFunc ;==>main

    [/autoit]
  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 19. Oktober 2007 um 15:55

    Hi,
    mit FilePattern halt die Endung: ("*.lnk")

    Nim mal folgendes Skript und passe in der Zeile 79 den Pfad einmal fix an. Es funktioniert bei mir zu 100% mit Verknüpfungen:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <Array.au3>
    #include <File.au3>
    #include <GUIConstants.au3>

    main()

    Func OnAutoItStart()
    Opt("GUICoordMode", 2)
    Opt("MustDeclareVars", 1)
    EndFunc ;==>OnAutoItStart

    Func main()
    Local $ah_ogbts[2], $as_files = 0
    Local $h_zensbt = 0, $h_filemenu = 0, $h_exitmitem = 0, $h_msg = 0
    Local $s_path = "", $s_ogtext = ""
    Local $j = 1, $i_tmpog = 0, $i_og = 0

    GUICreate("Stockwerk", 320, 240)
    GUISetCoord(10, -20, 100, 20)
    For $i = 1 To 6
    ReDim $ah_ogbts[$j + 1]
    $ah_ogbts[$j] = GUICtrlCreateButton("Obergeschoss " & $i, -1, 10)
    $j += 1
    Next
    $ah_ogbts[0] = $j - 1

    $h_zensbt = GUICtrlCreateButton("&Zens", -1, 10)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_filemenu = GUICtrlCreateMenu("&File")
    $h_exitmitem = GUICtrlCreateMenuItem("E&xit", $h_filemenu)
    GUISetState()

    While 1
    $h_msg = GUIGetMsg()
    Switch $h_msg
    Case $GUI_EVENT_CLOSE, $h_exitmitem
    Exit
    Case $h_zensbt
    GUISetState(@SW_DISABLE)
    SplashTextOn("NOTICE", "Please wait...", 120, 60)
    $as_files = _FileListToArray($s_path, ("*.lnk"), 1)
    If @error = 1 Then
    MsgBox(16 + 262144, "ERROR", $s_path & " not found or invalid!")
    Exit (1)
    ElseIf @error = 4 Then
    MsgBox(16 + 262144, "ERROR", "No file(s) found in " & $s_path & "!")
    Exit (2)
    EndIf
    SplashOff()
    GUISetState(@SW_ENABLE)

    For $i = 1 To $as_files[0]
    ShellExecute($s_path & "\" & $as_files[$i])
    Next

    Switch $i_og
    Case 1
    $s_ogtext = "ers"
    Case 2
    $s_ogtext = "zwei"
    Case 3
    $s_ogtext = "drit"
    Case 4
    $s_ogtext = "vier"
    Case 5
    $s_ogtext = "fünf"
    Case 6
    $s_ogtext = "sechs"
    EndSwitch

    MsgBox(64, "Zens Drucker", "Die Drucker des " & $s_ogtext & "ten Stockes an der Zens wurden eingerichtet.")
    Exit
    EndSwitch

    $i_tmpog = _ArraySearch($ah_ogbts, $h_msg)
    If $i_tmpog <> -1 Then
    $i_og = $i_tmpog
    $s_path = "\\Delphi\NETLOGON"
    For $i = 1 To $ah_ogbts[0]
    GUICtrlSetState($ah_ogbts[$i], $GUI_DISABLE)
    Next
    GUICtrlSetState($h_zensbt, $GUI_ENABLE)
    GUICtrlCreatePic(@ScriptDir & "\system\Zens.bmp", 120, 10, 200, 240) ;~ To-Do: An aktuelle GUI-Begebenheiten anpassen!
    EndIf
    WEnd
    EndFunc ;==>main

    Func OnAutoItExit()
    GUIDelete()
    EndFunc ;==>OnAutoItExit

    [/autoit]


    Deine ErrorMeldung: (Meldung: parameter inkorrekt oder so) kommt in meinem Skript überhaupt nicht vor!
    Teste bitte einmal anhand meines Skriptes und baue das dann um. Bei mir funzt es wirklich.

    PS: Halte dich nicht für verrückt!

  • GUI-probleme...

    • teh_hahn
    • 19. Oktober 2007 um 15:35

    Zudem sind es keine GUI-Probleme, sondern Logik-Probleme!
    Schau, wenn Du überhaupt nicht mehr weiter kommst, unter der Foren-Suche nach (Taschenrechner gibt es wie Sand am Meer!).

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 19. Oktober 2007 um 15:33

    Hi,

    also meine Version funktioniert 100%. Bitte überprüfe noch einmal folgendes:
    1. Ist ein Pfad z.B. wirklich: \\Zens\Zens\Group\Public\Printers\1Obergeschoss\Zens? Versuch den Pfad mal (ohne Verbindungen zum Host Zens zu haben) genau so bei Start-Ausführen einzutippen. Kommt dann eine Verbindung zustande?
    2. Brauchst Du wirklich keine Anmeldung an den Host?
    3. Ist das FilePattern korrekt.

    Wie gesagt, bei mir funktioniert es einwandfrei! (Auch mit ShellExecute!)

  • Problem zwischen 2 Scriptversionen

    • teh_hahn
    • 18. Oktober 2007 um 23:19

    lol, wie bitte?! Was ist das denn für ein Testverfahren? Oder hab ich Dich nur falsch verstanden? Über eins müssen wir uns im Klaren sein: Du kannst nicht das Skript anstarten und jedesmal nachdem es durchgelaufen ist, schauen wie lange es gedauert hat. Da wird meine Version immer langsamer sein, da sie aus einer INI-Datei liest! Du musst vielmehr einen Timer vor dem Vergleichen starten und ihn danach wieder stoppen, also:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    main()

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

    Func main()
    Local $ai_ports[2]
    Local $j = 1, $n_timer = 0
    Local $s_tmpini = "", $s_fileline = ""
    Local $h_file = -1

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

    For $i = 1 To 15
    $s_tmpini = IniRead(@ScriptDir & "\port.ini", "Ports", "Port" & $i, "")
    If $s_tmpini <> "" Then
    ReDim $ai_ports[$j + 1]
    $ai_ports[$j] = $s_tmpini
    $j += 1
    EndIf
    Next
    $ai_ports[0] = $j - 1

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

    $h_file = FileOpen(@ScriptDir & "\scan.txt", 0)

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

    $n_timer = TimerInit()
    While 1
    $s_fileline = FileReadLine($h_file)
    If @error Then
    FileClose($h_file)
    FileDelete(@ScriptDir & "\default.txt") ;~ Kann dies hier hin?
    ExitLoop
    EndIf

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

    For $i = 1 To $ai_ports[0]
    If StringInStr($s_fileline, $ai_ports[$i]) Then FileWriteLine($ai_ports[$i] & ".txt", $s_fileline & @CRLF)
    Next
    WEnd
    MsgBox(64, "TimerDebug", Round((TimerDiff($n_timer) / 1000), 4) & " Sekunden!")
    EndFunc ;==>main

    [/autoit]


    Mir scheint, als wolltest Du, dass das Skript immer läuft. Dazu müsste es aber natürlich leicht modifiziert werden...
    Also, mach mal mehrere Durchläufe mit v1 und danach mit v2 (beides mit Timern!). Achte dabei darauf, dass die zu vergleichende Datei identisch ist und die Anzahl der Ports ebenfalls.
    Da dürften in Bezug auf das Vergleichen kaum Unterschiede zu verspüren sein!

    g8

  • Problem zwischen 2 Scriptversionen

    • teh_hahn
    • 18. Oktober 2007 um 22:31

    Hi,

    naja, das Auslesen aus der INI-Datei dauert eben und nimmt Zeit in Anspruch. Wie liest Du denn die Kb/s aus? Achso, Du solltest den Default-Wert beim IniRead auf "" setzten und noch dagegen prüfen:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    main()

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

    Func main()
    Local $ai_ports[2]
    Local $j = 1
    Local $s_tmpini = "", $s_fileline = ""
    Local $h_file = -1

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

    For $i = 1 To 15
    $s_tmpini = IniRead(@ScriptDir & "\port.ini", "Ports", "Port" & $i, "")
    If $s_tmpini <> "" Then
    ReDim $ai_ports[$j + 1]
    $ai_ports[$j] = $s_tmpini
    $j += 1
    EndIf
    Next
    $ai_ports[0] = $j - 1

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

    $h_file = FileOpen(@ScriptDir & "\scan.txt", 0)

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

    While 1
    $s_fileline = FileReadLine($h_file)
    If @error Then
    FileClose($h_file)
    ExitLoop
    EndIf

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

    For $i = 1 To $ai_ports[0]
    If StringInStr($s_fileline, $ai_ports[$i]) Then FileWriteLine($ai_ports[$i] & ".txt", $s_fileline & @CRLF)
    Next

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

    FileDelete(@ScriptDir & "\default.txt")
    WEnd
    EndFunc ;==>main

    [/autoit]

    Also viel eleganter geht es eigentlich nicht mehr!

  • Problem zwischen 2 Scriptversionen

    • teh_hahn
    • 18. Oktober 2007 um 22:12

    Hi,

    versuch dies:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon

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

    main()

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

    Func main()
    Local $ai_ports[2]
    Local $j = 1
    Local $s_fileline = ""
    Local $h_file = -1

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

    For $i = 1 To 15
    ReDim $ai_ports[$j + 1]
    $ai_ports[$j] = IniRead(@ScriptDir & "\port.ini", "Ports", "Port" & $i, "default")
    $j += 1
    Next
    $ai_ports[0] = $j - 1

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

    $h_file = FileOpen(@ScriptDir & "\scan.txt", 0)

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

    While 1
    $s_fileline = FileReadLine($h_file)
    If @error Then
    FileClose($h_file)
    ExitLoop
    EndIf

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

    For $i = 1 To $ai_ports[0]
    If StringInStr($s_fileline, $ai_ports[$i]) Then FileWriteLine($ai_ports[$i] & ".txt", $s_fileline & @CRLF)
    Next

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

    FileDelete(@ScriptDir & "\default.txt")
    WEnd
    EndFunc ;==>main

    [/autoit]
  • Popup speichern

    • teh_hahn
    • 18. Oktober 2007 um 21:54

    Mhh, die UDF _ClipPutFile sagt:

    Zitat

    To Retrive a list of Files stored in the Clipboard use ClipGet().


    Also müsste es gehen, ansonsten DLL-Calls!

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 18. Oktober 2007 um 21:47

    Ja, das stimmt schon. Dann halt "unnötig". Was mich am OnEvent einfach nervt, ist dass Funktionen, die durch ein Control aufgerufen werden, keine Parameter im Funktionskopf enthalten dürfen (es sei denn man bastelt sich eine Hilfsfunktion, Variablen bleiben aber immer Global).
    Ich gebe Dir aber Recht, das bei komplexen Skripten der OnEvent-Modus effizienter ist (speziell bei "Threads", die selbst in der main-While laufen müssen...)!

    EDIT: Das da oben sollte man natürlich auch in Funktionen kapseln. Hatte ich aber eben kein Bock zu und auf Globals steh ich wie gesagt überhaupt nicht...

  • Popup speichern

    • teh_hahn
    • 18. Oktober 2007 um 21:44

    Jo, ansonsten Send("!{PRINTSCREEN}") und dann ClipGet() und das Ganze als Grafik in einer Popup-GUI einbauen!

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 18. Oktober 2007 um 21:32

    Hi,

    mann, mann mann. Hab mich eben mal ran gesetzt und schnell folgendes gebastelt:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Include <Array.au3>
    #include <File.au3>
    #include <GUIConstants.au3>

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

    main()

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

    Func OnAutoItStart()
    Opt("GUICoordMode", 2)
    Opt("MustDeclareVars", 1)
    EndFunc ;==>OnAutoItStart

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

    Func main()
    Local $ah_ogbts[2], $as_files = 0
    Local $h_zensbt = 0, $h_filemenu = 0, $h_exitmitem = 0, $h_msg = 0
    Local $s_path = "", $s_ogtext = ""
    Local $j = 1, $i_tmpog = 0, $i_og = 0

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

    GUICreate("Stockwerk", 320, 240)
    GUISetCoord(10, -20, 100, 20)
    For $i = 1 To 6
    ReDim $ah_ogbts[$j + 1]
    $ah_ogbts[$j] = GUICtrlCreateButton("Obergeschoss " & $i, -1, 10)
    $j += 1
    Next
    $ah_ogbts[0] = $j - 1

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

    $h_zensbt = GUICtrlCreateButton("&Zens", -1, 10)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $h_filemenu = GUICtrlCreateMenu("&File")
    $h_exitmitem = GUICtrlCreateMenuItem("E&xit", $h_filemenu)
    GUISetState()

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

    While 1
    $h_msg = GUIGetMsg()
    Switch $h_msg
    Case $GUI_EVENT_CLOSE, $h_exitmitem
    Exit
    Case $h_zensbt
    GUISetState(@SW_DISABLE)
    SplashTextOn("NOTICE", "Please wait...", 120, 60)
    $as_files = _FileListToArray($s_path, ("*.exe"), 1) ;~ To-Do: Pattern an Extension anpassen!
    If @error = 1 Then
    MsgBox(16 + 262144, "ERROR", $s_path & " not found or invalid!")
    Exit (1)
    ElseIf @error = 4 Then
    MsgBox(16 + 262144, "ERROR", "No file(s) found in " & $s_path & "!")
    Exit (2)
    EndIf
    SplashOff()
    GUISetState(@SW_ENABLE)

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

    For $i = 1 To $as_files[0]
    ShellExecute($s_path & "\" & $as_files[$i])
    Next

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

    Switch $i_og
    Case 1
    $s_ogtext = "ers"
    Case 2
    $s_ogtext = "zwei"
    Case 3
    $s_ogtext = "drit"
    Case 4
    $s_ogtext = "vier"
    Case 5
    $s_ogtext = "fünf"
    Case 6
    $s_ogtext = "sechs"
    EndSwitch

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

    MsgBox(64, "Zens Drucker", "Die Drucker des " & $s_ogtext & "ten Stockes an der Zens wurden eingerichtet.")
    Exit
    EndSwitch

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

    $i_tmpog = _ArraySearch($ah_ogbts, $h_msg)
    If $i_tmpog <> -1 Then
    $i_og = $i_tmpog
    $s_path = "\\Zens\Zens\Group\Public\Printers\" & $i_og & "Obergeschoss\Zens"
    For $i = 1 To $ah_ogbts[0]
    GUICtrlSetState($ah_ogbts[$i], $GUI_DISABLE)
    Next
    GUICtrlSetState($h_zensbt, $GUI_ENABLE)
    GUICtrlCreatePic(@ScriptDir & "\system\Zens.bmp", 120, 10, 200, 240) ;~ To-Do: An aktuelle GUI-Begebenheiten anpassen!
    EndIf
    WEnd
    EndFunc ;==>main

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

    Func OnAutoItExit()
    GUIDelete()
    EndFunc ;==>OnAutoItExit

    [/autoit]

    CHANGES:
    1. GUI Message-Loop Modus (OnEvent ist völlig unangebracht bei den paar Controls!)
    2. Obergeschoss-Buttons werden in einer Schleife generiert.
    3. Es ist nur eine GUI notwendig. Sobald ein Obergeschoss ausgewählt wurde, wird der Zend-Button auf enabled gesetzt und die Obergeschoss-Buttons auf disabled.
    usw...

    Worauf ich bei Deinem Quellcode gar nicht klar komme ist folgendes:
    $Zens wird dreimal definiert, es befinden sich drei Zens-Funktionen in deinem Skript! WTF?!? Sind wird hier OO und überladen Funktionen oder was? DAS WIRD NIEMALS FUNKTIONIEREN!!!
    Schau Dir mal den String des Pfades an! Sicher das der stimmt? Jetzt hast Du zumindest mal eine Fehlermeldung als Rückgabe...

    Ich halte das Skript aber immer noch für relativ gehaltlos...

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 18. Oktober 2007 um 13:10

    Gut. Zwei Möglichkeiten:
    1. Kompletten Source-Code posten.
    2. Weiter probieren...

    Falls 1. Schau ich heute nachmittag mal drüber!

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 18. Oktober 2007 um 12:51

    Glaube ich nicht. Ausserdem wäre es nicht Autoit, sondern nur eine UDF. mach mal _ArrayDisplay zum debuggen und überprüf den Pfad erneut. Im Beispiel funktioniert es auch, könnte natürlich sein, dass er sich am UNC-Pfad verschluckt. Mapst du den Pfad vorher auch?

  • Netgear Router ReConnect

    • teh_hahn
    • 18. Oktober 2007 um 12:41

    Hi,
    Nettes Tool, hatte auch schon mal so was geschrieben (bloß ohne GUI). Ist bloß für den Anwendungszweck etwas überflüssig. Ich verweise dabei auf das Programm CryptLoad (siehe google...)!

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 18. Oktober 2007 um 12:34

    Hi,
    das bedeutet, dass die Zeile:

    [autoit]

    $Array = _FileListToArray ("\\zzzzzzz\zzzzzz\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort,(""),1)

    [/autoit]

    kein Array zurück gegeben hat, d.h. in dem Verzeichnis befinden sich keine Dateien. Danach einmal mit

    [autoit]

    IsArray($Array)

    [/autoit]

    prüfen und danach die For-Schleife...

  • Shellexecute und _FileListToArray Problem

    • teh_hahn
    • 18. Oktober 2007 um 08:35

    Hi,

    ja, der Index0 enthält die erste Datei. Du suchst aber sowohl nach Dateien als auch nach Ordnern (*.). Ausserdem solltest Du Dir noch den dritten Parameter der Funktion anschauen!
    Hilfe hilft!!!

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #Include <Array.au3>
    $FileList=_FileListToArray(@DesktopDir)
    If @Error=1 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
    EndIf
    _ArrayDisplay($FileList,"$FileList")

    [/autoit]
  • Plausibilitätsprüfung?

    • teh_hahn
    • 18. Oktober 2007 um 08:23

    Hi,

    hier mal das fertige Skript mit pees Überprüfung:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>

    main()

    Func OnAutoItStart()
    Opt("MustDeclareVars", 1)
    EndFunc ;==>OnAutoItStart

    Func main()
    Local $h_bruttoinp = -1, $h_mwstinp = -1, $h_ausgabelbl = -1, $h_rechnenbt = -1, $h_closebt = -1
    Local $n_brutto = "", $n_mwst = ""

    GUICreate("BNR v 1.0", 172, 263, 193, 117)
    $h_bruttoinp = GUICtrlCreateInput("", 16, 48, 137, 21)
    $h_mwstinp = GUICtrlCreateInput("19", 16, 112, 137, 21, $ES_NUMBER)
    $h_ausgabelbl = GUICtrlCreateLabel("", 16, 176, 136, 17)
    $h_rechnenbt = GUICtrlCreateButton("&Rechnen", 8, 208, 65, 25, 0)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $h_closebt = GUICtrlCreateButton("&Beenden", 88, 208, 65, 25, 0)
    GUICtrlCreateLabel("Brutto-Betrag :", 16, 24, 72, 17)
    GUICtrlCreateLabel("Mwst-Satz :", 16, 88, 59, 17)
    GUICtrlCreateLabel("Netto-Betrag :", 16, 152, 70, 17)
    GUICtrlCreateLabel("Brutto - Netto - Rechner", 24, 240, 119, 18)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlSetColor(-1, 0x808080)

    GUISetState()

    While 1
    Switch GUIGetMsg()
    Case $h_rechnenbt
    $n_brutto = GUICtrlRead($h_bruttoinp)
    $n_mwst = GUICtrlRead($h_mwstinp)

    If Not _IsGermanCurrency($n_brutto) Then
    MsgBox(64, $n_brutto, "Nur Zahlen und statt Punkt das Komma verwenden!" & @CR & "Bitte überprüfen Sie Ihre Eingaben!")
    ElseIf $n_mwst <> 7 And $n_mwst <> 16 And $n_mwst <> 0 And $n_mwst <> 19 Then
    MsgBox(64, $n_mwst, "Die MwSt kann nur 0, 7, 16, oder 19 Prozent betragen," & @CR & "Bitte überprüfen Sie Ihre Eingaben!")
    Else
    GUICtrlSetData($h_ausgabelbl, StringReplace(Round(StringReplace($n_brutto, ",", ".") / (100 + $n_mwst) * $n_mwst, 2), ".", ","))
    EndIf
    Case $GUI_EVENT_CLOSE, $h_closebt
    Exit
    EndSwitch
    WEnd
    EndFunc ;==>main

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

    ;~ by peethebee
    Func _IsGermanCurrency(Const $S_TEXT)
    Return (StringRegExp($S_TEXT, "^\d+(,\d{1,2})?$", 0))
    EndFunc ;==>_IsGermanCurrency

    [/autoit]

    Zur Erklärung:
    1. Es muss eine Kommazahl oder eine Zahl ohne Nachkommastellen eingegeben werden.
    2. Das Komma wird ersetzt durch einen Punkt, die Berechnung wird durchgeführt und beim Ergebnis wird der Punkt wieder durch das Komma ersetzt. (Macht meiner Meinung nach am meisten Sinn.

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™