Anzeige langer Bindestrich in Edit

  • Hello Peoples,

    ich habe ein kleines Proggi geschrieben um in einem Edit ein Satz mit einem drehenden Balken dahinter anzuzeigen. Das würde ich als kleine Animation in einem anderen Proggi benutzen um dort eine
    Wartezeit zu überbrücken, solange bestimmte Dinge im Hintergrund ausgeführt werden.

    Es ist mir beinahe peinlich aber ich bekomme es nicht hin, statt dem normalen Bindestrich (sieht echt doof aus), den langen Bindestrich (ASCII-Code 151) in dem Edit anzeigen zu lassen. Geht der Code gar nicht
    oder brauche ich eine andere Schrift? Achja, in einer MsgBox wird Chr(151) richtig angezeigt...

    Spoiler anzeigen

    Einmal editiert, zuletzt von SOLVE-SMART (16. Februar 2023 um 13:48)

  • Du hast doch im Kommentar schon die richtigen Unicode-Nummern der Zeichen mit angegeben.
    Nur im Code selbst verwendest du hingegen nur die Zeichen aus dem ANSI-Bereich.

    Ändere mal deinen Switch-Teil folgendermaßen und verwende unten ChrW() anstatt Chr():

  • Hallo Aspirinjunkie,

    vielen lieben Dank für den Tipp. :klatschen:

    Ich hatte keine Ahnung, dass das nur mit den Hex-Zahlen geht. Ich probierte es mit den DEZ zahlen und da kam nur Murks.
    So sieht das Super aus...

    Vielleicht hast du mir noch einen Tipp:

    In meiner Funktion Ftsstat(), würde ich gerne den Satz
    "GUICtrlSetData($Edit1, "Please be patient until preparations are done...!" & @CRLF & @CRLF, 1)"
    gegen Eintrag mit dem drehenden Balken austauschen.

    Wie gehe ich da am besten vor? Die Funktion _Balken an der Stelle aufrufen wird wohl das Proramm so lange anhalten bis die wieder beendet ist oder ?

    Spoiler anzeigen

    2 Mal editiert, zuletzt von SOLVE-SMART (16. Februar 2023 um 13:54)

  • Eine kleine Bitte hipfzwirgel:
    Kannst du wenn du Code postest, den </> Code-Block dazu nutzen (mit Auswahl "AutoIt" als Syntax-Highlighting). Denn somit kann man besser erfassen was du meinst.
    Außerdem geht so auch deine Formatierung/Einrückung nicht verloren. Ich habe das bei post #1 und #3 mal schnell nachgezogen, also nicht wundern 😇 .

    Viele Grüße
    Sven

  • Ich hatte keine Ahnung, dass das nur mit den Hex-Zahlen geht. Ich probierte es mit den DEZ zahlen und da kam nur Murks.

    Natürlich geht das auch mit Dezimalzahlen.
    Die hast du aber nicht genommen. Ich habe die Unicode-Codes der Zeichen angegeben.
    Du hingegen hast die ASCII-Codes 124, 47, 45 und 92 verwendet.
    Die dezimalen Unicode-Codes für diese Zeichen, welche so nicht im ASCII-Bereich existieren lauten hingegen 9474 (0x2502), 9585 (0x2571), 9472 (0x2500), 9586 (0x2572)

  • Hallo Solve-Smart,

    Da hast du natürlich recht. bitte entschuldigt dass ich da im Hurra nicht dran dachte. :saint:

    @ Aspirinjunkie:

    nur das kein Missverständnis im Raum steht: Ich hatte bevor ich den Code hier postete es auch mit z.B. Chrw(02502) probiert
    aber wie gesagt kam nur Murks. Egal ist ja gelöst.

    Habt ihr mir einen Tipp bzgl. der Implementation in die andere Func, wie in meinem letzten Eintrag skizziert?

  • Ich hatte keine Ahnung, dass das nur mit den Hex-Zahlen geht. Ich probierte es mit den DEZ zahlen und da kam nur Murks.

    Hexadezimal und Dezimal oder auch Binär sind nur unterschiedliche Darstellungsformen für ein- und dieselbe Zahl!

    Ob du nun $n=0x2571 schreibst oder $n=9585 ist unerheblich! Leider unterstützt AutoIt nicht nativ das Binärformat, sonst könnte man diese Zahl auch als 0b10010101110001 schreiben.

    In meiner Funktion Ftsstat(), würde ich gerne den Satz
    "GUICtrlSetData($Edit1, "Please be patient until preparations are done...!" & @CRLF & @CRLF, 1)"
    gegen Eintrag mit dem drehenden Balken austauschen.

    Wie gehe ich da am besten vor?

    So?

  • Hallo Andy,

    also vielen lieben Dank für den Tipp mit dem Adlibregister. Funktioniert super.

    Aber dennoch habe ich noch eine Frage:

    AutoIt
    Func Ftsstat()
    
        FileWriteLine($sFilepath, $Date & ", " & $sTime & " 1353 Func Ftsstat started" & @CRLF & @CRLF)
        If $CmdLine[0] > "0" And $CmdLine[1] <> "" Then
            _WinAPI_WriteConsole($hConsole, " Please be patient until preparations are done...!" & @CRLF & @CRLF)
            Sleep(3000)
        Else
            ;GUICtrlSetData($Edit1, "Please be patient until preparations are done... " & @CRLF & @CRLF, 1) ; Das war der ursprüngliche Eintrag ohne Drehbalken.
            AdlibRegister("_Balken", 300) ; Die Zeile überschreibt das Edit aber komplett !!!
        EndIf

    ich habe die Adlib-Anweisung wie oben dargestellt implementiert (die Funktion _Balken natürlich auch).
    Jetzt kommt zwar die Zeile mit dem drehenden Balken, aber das überschreibt mir das Edit komplett. Das Edit sollte aber so aussehen wie im Anhang(das ist
    noch die Darstellung mit dem Ursprungseintrag) d.h. die anderen Informationen (aus anderen Funktionen des Programms) müssen erhalten bleiben. Geht das irgendwie?

  • Ja, pack die letzte Zeile und auch den restlichen Text der notifications einfach in Variablen:

    $Notification_Text=$Fileversion & @crlf & $Vendor & @crlf & $Model & blablub

    Wenn du weitere Infos nacheinander anzeigen willst, dann musst du nur die Variable $Notifications entsprechend erweitern mit zusätzlichem Text