Ist ein 'char' ein 'char' oder vieleicht doch nicht? bzw. kann er es werden?

  • hallo,

    beim experimentieren stiess ich auf eine kleine sache, die ich irgendwie 'lustig' und 'seltsam' zugleich fand.

    AutoIt
    #include <MsgBoxConstants.au3>
    $char = "Chr(74)" ;hier ist der string ein text, der von der theorie her auch ein Char sein koennte
    ConsoleWrite($char)
    MsgBox(0,"",$char)
    $char2 = Chr(74) ;hier ist der Char, der eindeutig ein Char ist, ohne wenn und aber.
    ConsoleWrite($char2)
    MsgBox(0,"",$char2)


    mir ist klar, dass der string lediglich eine abfolge von buchstaben ist und der Chr() befehl ein AutoIT-Kommando ist.

    ich habe einige stunden damit herumexperimentiert ohne wirklich vom fleck zu kommen, also fragte ich mich letztendlich zwei dinge:

    1. ist es möglich aus einem String "Chr(74)" mit wenig aufwand ein Chr(74) zu machen?

    2. ist es möglich aus Zahlen in einem Array Chr() zu machen? - dabei hatte ich ein miniatur erfolgserlebnis...

    zunächst zahlen in ein 1D-Array und dann:

    AutoIt
    Global $nummern1[5] = ["72","65","76","76","79"] ;alle nummern sind ASCII code nummern = "HALLO"
    _ArrayDisplay($nummern1)
    $uebersetzung1 = StringFromASCIIArray($nummern1)
    MsgBox(0,"",$uebersetzung1) ;jetzt geben wir die ubersetung wieder als text-string aus.

    ich dachte: "das ist ja super, machen wir das mal "gross" und da waren sie wieder: die begrenzungen meines koennens, denn mit:

    AutoIt
    $nummern2[5][3] = [["72","87","84"],["69","79","79"],["76","82","68"],["76","76","65"],["79","68","89"]]
    oder 
    $nummern2[5][3] = [["072","087","084"],["069","079","079"],["076","082","068"],["076","076","065"],["079","068","089"]]

    geht es nicht. ... oder ich weiss nicht wie. mit for schleife(n) probiert und letztlich sogar mit ganz wilden versuchen wie:

    AutoIt
    If IsNumber($nummern2[0][0]) Then $nummern2[0][0] = Chr(0 & $nummern2[0][0] & "}")
    oder
    If IsNumber($nummern2[0][0]) Then $nummern2[0][0] = Send("{ASC 0" & $nummern2[0][0] & "}")

    Ich habe alles was irgendwie mit ASCII zu tun hatte mal probiert und ... wie soll es anders sein ... ohne erfolg.

    Bevor ich mich jetzt da zu sehr verlaufe: Sind diese Sachen überhaupt generell möglich (mit wenig aufwand)?

    klar kann ich das wohl machen wenn ich das $nummern2[5][3] komplett auseinandernehme und verschlanke auf ein 1D-Array, und dann wieder im anschluss auf ein 2D-Array umswitche, aber aleine dafür gibt es irgendwie keine sinnvollen AutoIT-Befehle. ... _SplitEachColumnIntoSeperateArray() und _MergeSeveralArraysIntoOneArrayWithManyColumns() gibt es leider nicht oder was auch noch toll waere waere ein _CopyAndPasteAnyDataWithinAnArrayOrString() ...

    na ja, zurück zum thema: möglich ohne viel aufwand?

    gruss


    PS: das ist hier in einem anderen bereich vom forum, weil es nicht wirklich eine coding frage ist. sondern wohl ehrer zu belustigung beitraegt.

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)

    Einmal editiert, zuletzt von SOLVE-SMART (15. April 2025 um 18:02)

  • Erste Frage: Was hat das Thema im Bereich " Übersetzung der Hilfe-Datei ins Deutsche - Fragen/Anregungen" zu suchen?

    1. ist es möglich aus einem String "Chr(74)" mit wenig aufwand ein Chr(74) zu machen?

    Ja - mit Execute(). Diese Funktion führt AutoIt-Code aus, der als String übergeben wird und gibt dessen Ergebnis zurück.

    2. ist es möglich aus Zahlen in einem Array Chr() zu machen?

    1. Du hast eigentlich keine Zahlen in deinem Array sondern Strings. Das klappt in dem Fall zwar, aber die Anführungszeichen solltest du dennoch entfernen wenn du StringFromASCIIArray() so nutzen möchtest wie es vorgesehen ist.

    2. Du versuchst ein 2D-Array an StringFromASCIIArray() zu übergeben. Dieses erwartet jedoch ein 1D-Array als Input.

    Wenn du also mehrere Wörter in einem Array als ASCII-Codes abgespeichert halten möchtest und diese alle in einen String konvertieren möchtest, dann musst du entsprechend deiner Datenstruktur handeln.
    Wenn du wie in deinem Beispiel die Wörter als 2D-Array vorliegen hast (was ich persönlich als ziemlich bescheiden ansehe, da sich die Anzahl der Spalten dann nach dem längsten Wort für alle richtet), dann musst du in einer For-To-Schleife die Zeilen (also die Wörter) durchgehen und in einer zweiten For-To-Schleife darin die einzelnen Buchstaben durchgehen, mit Chr() dekodieren und buchstabenweise das Wort wieder zusammensetzen

    Wenn du stattdesen ein Array-In-Array vorliegen hast - also ein 1D-Array dessen Elemente wiederrum 1D-Arrays sind, dann gehst du in einer For-To-Schleife die Zeilen des äußeren Arrays durch und kannst für die einzelnen SubArrays wieder StringFromASCIIArray() verwenden.

    aber aleine dafür gibt es irgendwie keine sinnvollen AutoIT-Befehle

    Es kann nicht für jeden bizarren Spezialfall vorgefertigte Funktionen geben.
    Wenn es wirklich notwendig ist (wofür ich hier bislang nicht den Anwendungsfall sehe), dann kannst du dir eine eigene Funktion für bessere Wiederverwendbarkeit schreiben.

  • hi,

    ja, eigentlich hast du recht mit der fehlplatzierung hier im forum. sorry.

    ich wollte da auch kein grosses fass aufmachen mit dem topic, denn es ist nicht eine reine coding frage gewesen und so ein off-topic bereich für 'unwichtige kleine sachen' fand ich jetzt nicht wirklich. also sorry wegen der schlechten auswahl des bereichs in der ich gepostet habe. ... zur not: verschieben wo es besser passt?

    ---

    abseits dessen ich stelle leider echt immer wieder fest das die For-To-Schleife ein echtes problem fuer mich ist. ich kann eine For-To-Schleife wirklich wort fuer wort abschreiben (mit neuen $Values) und trotzdem bekomme ich fehlermeldungen und jedes mal zerbreche ich mir daran den kopf warum, denn es sieht genau gleich aus wie ein anderes funktionierendes beispiel. das ist echt schwer fuer mich. ich denke wenn man es einmal verstanden hat, geht es vielleicht, aber an dem punkt bin ich noch nicht und stand heute komme ich da auch nicht so schnell hin.

    na ja, wie dem auch sei, ich bleibe am ball.

    Execute() klappt, danke.

    ich teste weiter.

    gruss

    ConsoleWrite("=====================>>> "&"About Me:"&" <<<=====================" & @CRLF)
    ConsoleWrite("Someday I will know how to do it but that day is not today!" & @CRLF)
    ConsoleWrite("===================>>> "&"bankesbusters"&" <<<===================" & @CRLF)