Hinteres Zeichen aus Label entfernen

  • Morgen zusammen

    Da ich erst gestern mit AutoIT angefangen habe fehlt mir noch das entsprechende Knowhow.
    Daher wollteich fragen, wie ich über Buttonklick das das letzte Zeichen aus einem Label entfernen kann.
    Im Grunde fehlt mir nur der Weg, das zeichen zu entfernen, den Rest habe ich schon.

    Danke im Voraus

    110022

  • So müsste es ungetestet am besten gehen:

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

    $str='DeinString'
    $str2=StringLeft($str,StringLen($str)-1)

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

    ;oder als längere Version
    $str='DeinString'
    $str_len=StringLen($str)-1 ;Git die Länge des Textes aus minus 1, da der Buchstabe letzte entfernt wird
    $str2=StringLeft($str,$str_len);Gibt alle Zeichen des Strings von Links aus an, außer dem letzten Buchstaben

    [/autoit]

    Und wahrscheinlich werden hier nachher alle mit ihren Regulären Ausdrücken kommen, was aber zu schwierig & in dem Fall auch unnötig ist :P

  • Kann es sein, dass es ein Problem ist, wenn das Label Zahlen enthält?
    Denn wenn ich str2 im Label anzeigen lasse, ist es leer.


    EDIT:
    Ah, hatte nen Fehler drinnen. Anstatt

    Code
    $str=guictrlread($label1)


    hatte ich nur

    Code
    $str=$label1

    Danke für die Hilfe!!

  • ich habe es mal kurz getestet und keine Bugs gefunden :)
    Aber ich würde das Label durch eine Inputbox ersetzten, damit man auch einfach die Rechnung eintippen kann

    mfg Yellow

    §1 Ich kann nicht für meine scripts inhaftiert werden, auch wenn bereits 3 Menschen erblindeten an den Folgen der Korrekturlesung.  8o

  • ich habe es mal kurz getestet und keine Bugs gefunden :)
    Aber ich würde das Label durch eine Inputbox ersetzten, damit man auch einfach die Rechnung eintippen kann

    mfg Yellow

    Okay, die Idee ist nicht schlecht, an sich hätte ich da auch drauf kommen können. Schließlich kann man mit nem Input das selbe anstellen wie mit dem label. Danke ^^

    Eines stört mich noch ziemlich. Damit ich sowohl die Operatoren über Tastatur eingeben kann, als auch Berechnen und die einzelnen Zahlen, habe ich das ganze so umgesetzt.

    Code
    HotKeySet("{/}", "dividieren")

    Problem daran ist leider, dass die ganzen Tasten global vom Programm angenommen werden, wenn das Programm offen ist. Weiß aber nicht wie ich das fixen soll.

  • Die simpelste Lösung würde folgendermaßen aussehen:

    [autoit]

    Func dividieren ()
    If Not WinActive ($h_GUI) Then Return 0 ; $h_GUI entspricht dem Handle deiner GUI... :P
    ; Rest deiner Funktion
    EndFunc

    [/autoit]
  • Hi, einige Sachen sind doppelt in Deinem Script. Ich habe mal Anpassungen vorgenommen. 8)

    Jo, danke :D

    Die simpelste Lösung würde folgendermaßen aussehen:

    [...]

    Bekomme da die ganze Zeit einen Fehler ausgegeben.

    Code
    C:\[......]\rechner1.1a.au3(205,25) : WARNING: $h_GUI: possibly used before declaration.
    	If Not WinActive($h_GUI)
    	~~~~~~~~~~~~~~~~~~~~~~~^
    C:\[......]\rechner1.1a.au3(205,25) : ERROR: $h_GUI: undeclared global variable.
    	If Not WinActive($h_GUI)
    	~~~~~~~~~~~~~~~~~~~~~~~^
    C:\[......]\rechner1.1a.au3 - 1 error(s), 1 warning(s)
  • Error


    C:\[......]\rechner1.1a.au3(205,25) : WARNING: $h_GUI: possibly used before declaration.
    If Not WinActive($h_GUI)
    ~~~~~~~~~~~~~~~~~~~~~~~^
    C:\[......]\rechner1.1a.au3(205,25) : ERROR: $h_GUI: undeclared global variable.
    If Not WinActive($h_GUI)
    ~~~~~~~~~~~~~~~~~~~~~~~^
    C:\[......]\rechner1.1a.au3 - 1 error(s), 1 warning(s)


    Der Fehler sagt doch alles? ;)

    lg chess

  • Okay, das Problem ist behoben und das zeichen wird nur eingefügt, wenn das programm aktiv ist. Aber das eigendliche Problem besteht immernoch. Die Eingaben werden abgefangen und alle eingaben die vom programm verwendet werden, kommen immer nur dort an.

  • Das Programm soll die EIngaben nicht global abfangen. Wenn es offen ist, kann ich weder Zahlen, noch +-*/ im Browser oder Chat benutzen.