Page 1 of 1

Datei Kodierung unter AHK v2

Posted: 03 Apr 2024, 17:12
by vergessen
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

Re: Datei Kodierung unter AHK v2  Topic is solved

Posted: 03 Apr 2024, 17:29
by gregster
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 325 times

Re: Datei Kodierung unter AHK v2

Posted: 04 Apr 2024, 05:54
by vergessen
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

Re: Datei Kodierung unter AHK v2

Posted: 04 Apr 2024, 08:44
by gregster
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.

Re: Datei Kodierung unter AHK v2

Posted: 04 Apr 2024, 10:28
by vergessen
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 "$")

Re: Datei Kodierung unter AHK v2

Posted: 04 Apr 2024, 12:39
by gregster
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.)