Datei Kodierung unter AHK v2 Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

vergessen

Datei Kodierung unter AHK v2

Post by vergessen » 03 Apr 2024, 17:12

Hallo,
Egal was ich mache mein MsgBox ist eine leere Rechteck.
Ein Datei ist mit UTF-8 mit BOM kodiert

Code: Select all

#Requires AutoHotkey v2.0+
FileEncoding("UTF-8-RAW")

MsgBox("`a")
Exitapp
Was muss ich noch beachten?
VG

gregster
Posts: 9036
Joined: 30 Sep 2013, 06:48

Re: Datei Kodierung unter AHK v2  Topic is solved

Post by gregster » 03 Apr 2024, 17:29

Naja, du schreibst nicht was du für ein Ergebnis erwartest. ;) Die FileEncoding-Funktion dürfte hier jedoch nicht das richtige Mittel sein, da wir nichts hiervon verwenden:
https://ahkde.github.io/docs/v2/lib/FileEncoding.htm wrote:Bestimmt die Standardkodierung für FileRead, Loop Read, FileAppend und FileOpen.
Es stimmt jedoch, für die Darstellung von Unicode-Zeichen ist es grundsätzlich sinnvoll, die Skriptdatei - im Editor - als UTF-8 (in v2 sollte BOM optional sein) zu speichern. Aber hier sollen gar keine besonderen Unicode-Zeichen dargestellt werden, afaics.

Ich nehme an, du willst einfach die Zeichenfolge `a in der msgbox darstellen. Nun hat der Grave-Akzent (aka backtick) aber eine besondere Funktion in AHK (v1 und v2) als sogenanntes Escape-Zeichen und `a erzeugt ein bestimmtes nicht-darstellbares Steuerzeichen - daher das leere Kästchen in der msgbox:
https://ahkde.github.io/docs/v2/misc/EscapeChar.htm wrote:`a
Tonsignalsteuerzeichen (Bell/Alert) -- entspricht dem ASCII-Wert 7. Dieses Steuerzeichen kann in einigen Anwendungen auch mit Strg+G erzeugt werden.
Für ein buchstäbliches ` in einer Zeichenkette musst du den Grave-Akzent daher selbst durch Verdopplung escapen:

Code: Select all

#Requires AutoHotkey v2.0+
MsgBox("``a")
escape accent.png
escape accent.png (9.4 KiB) Viewed 165 times

vergessen

Re: Datei Kodierung unter AHK v2

Post by vergessen » 04 Apr 2024, 05:54

Danke dir, ich habe meinen Fehler gefunden. Ich habe nur auf die hervorgehobene Zeile geschaut und dachte, die Kodierung sei falsch.


https://i.ibb.co/41FmMVN/irritiert.jpg

gregster
Posts: 9036
Joined: 30 Sep 2013, 06:48

Re: Datei Kodierung unter AHK v2

Post by gregster » 04 Apr 2024, 08:44

Okay... ich seh zwar nicht den Zusammenhang dieser Fehlermeldung zu deiner Frage oben, aber v2 wertet es als Fehler, wenn uninitialisierte Variablen verwendet werden. Vgl. https://ahkde.github.io/docs/v2/Concepts.htm#uninitialized-variables
AHK v1 war da deutlich gleichgültiger, insbesondere wenn nicht die #Warn-Direktive verwendet wurde.

vergessen

Re: Datei Kodierung unter AHK v2

Post by vergessen » 04 Apr 2024, 10:28

Hallo, mein Verständnis ist, dass der RegExMatch stattdessen ein leeres Rechteck anstelle von `a angezeigt hat. Daher ging ich davon aus, dass die Codierung der Datei möglicherweise falsch ist.

Code: Select all

006: If RegExMatch(Liste, "im)^" wert "$")

gregster
Posts: 9036
Joined: 30 Sep 2013, 06:48

Re: Datei Kodierung unter AHK v2

Post by gregster » 04 Apr 2024, 12:39

Anzeigen würde Zeile 6 ja sowieso nichts, sondern einen Ausdruck prüfen.
RegExMatch gibt ja immer eine Integerzahl (Position des ersten Vorkommens der Needle von links im Haystack bzw. 0) oder einen Leerstring (Edit, da nur in v1) zurück - und eine Outputvariable wird hier nicht verwendet, afaics.
Die Zeile msgbox("yes") dürfte daher keine Probleme machen. Ich wüsste jedenfall nichts wo `a hier herkommen sollte, zumal es in der Fehlermeldung so aussieht, als wäre Liste ein Leerstring und wert uninitialisiert - letzeres eben ursächlich für die Fehlermeldung. Oder ist bei der Befüllung von wert (an anderer Stelle) etwas schiefgelaufen?

Aber Code aufgrund einer Fehlermeldung nachvollziehen zu wollen, ist nur begrenzt möglich und sinnvoll.
(Ich bin wirklich kein RegEx-Experte, aber RegEx hat mWn nochmal eigene Escape-Regeln (da es aus Perl abgeleitet ist) - wobei die Frage `a vs ``a vermutlich davon nicht betroffen ist.)

Post Reply

Return to “Ich brauche Hilfe”