Kommentar wird mit eingelesen!? Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Kommentar wird mit eingelesen!?

Post by BoBo » 23 May 2022, 10:20

Hallo Leuts,
seltsames Phänomen. Aus für mich nicht nachvollziehbaren Gründen erfolgt die Ausgabe wie folgt...

key1=value1
key2=value2
*/


... obwohl a) der Kommentar nicht teil des strings werden sollte,
... und b) auch nach dem mal auf Verdacht hinzugefügten 'Return' nicht erreichbar sein sollte.
Mit CRLF `r`n habe ich auch schon gespielt.
Nun, warum ist dem jetzt so? :think:

Code: Select all

#SingleInstance, Force

IniRead, sectionNames,% A_ScriptName
ini := StrSplit(sectionNames,"`n")
for item, keyLine in ini
   {  IniRead, section,% A_ScriptName,% keyLine
      MsgBox % lines .= section "`n"
   }
Return

/*
[section1]
   key1=value1
[section2]
   key2=value2
*/
...tatsächlich liegt es nicht an den Kommentaren, denn IniRead liest auch anderweitigen Text ein. Wird der auskommentierte "INI-Block" im code nach oben/an den Anfang kopiert, wird anschließend auch nachfolgender code in der Ausgabe angezeigt. Betrifft übrigens nur eine Spielart von IniRead. AHK's Hilfe dazu...
IniRead - OutputVarSection
[v1.0.90+]: Omit the Key parameter to read an entire section. Comments and empty lines are omitted. Only the first 65,533 characters of the section are retrieved
Also (INI)Kommentare sollten demnach für die Ausgabe unberücksichtigt bleiben, doch alles außer Leerzeilen wird seltsamerweise angezeigt. Es wird demnach von standardisierten Ini-Datei-Verhältnissen ausgegangen wo kein zusätzlicher Text vorhanden ist. Ich finds irgendwie fishy.

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

Re: Kommentar wird mit eingelesen!?  Topic is solved

Post by gregster » 23 May 2022, 21:02

Als Kommentar fungiert /*...*/ nur im Skript, aber nicht in einer Ini-Datei, imo. Die ini-Standards variieren etwas, aber in keinem kommen wohl solche Kommentare vor.
Die Skript-Datei gleichzeitig als ini-Datei zu verwenden, kam mir immer etwas hackish vor - daher würde ich da jetzt auch kein besonderes Zuvorkommen der AHK-Ini-Funktionen erwarten. IniRead sucht hier einfach nach etwas, das wie ein [Sektionsname] aussieht. Dem ist es vollkommen egal, ob über dem ein /* (oder was auch immer) steht - das ist lediglich für den Skript-Interpreter von Bedeutung, da der sich an so einem Sektionsnamen verschlucken würde.

Wie dem auch sei, ein */ am AHK-Skriptende kann man ja eh folgenlos weglassen - würde auch hier helfen.
(Ich meine, lexikos hat mal erwähnt, dass dieses Feature insbesondere zum schnellen Auskommentieren in Testsituationen gedacht wäre.)

Afaics sieht IniRead die Zeilen in ini-Dateien, die mit ; beginnen, als zu ignorierende Kommentarzeilen (was einem gängigen Standard entspricht).

Code: Select all

; Skript...

/*
; comment
[section1]
   key1=value1 
; another comment
[section2]
   key2=value2 
; Dateiende

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Kommentar wird mit eingelesen!?

Post by BoBo » 23 May 2022, 21:13

Die Skript-Datei gleichzeitig als ini-Datei zu verwenden, kam mir immer etwas hackish vor - daher würde ich da jetzt auch kein besonderes Zuvorkommen der AHK-Ini-Funktionen erwarten
Yep, war im Prinzip auch so gedacht, als bequemer hack um das Erstellen einer separaten INI zu umgehen. Und yep, AHK-Kommentar und INI-Kommentar sind (nun auch mir) offenbar "zwei paar Schuhe". Gerade gelernt. :)

just me
Posts: 9425
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Kommentar wird mit eingelesen!?

Post by just me » 29 May 2022, 06:42

Moin,

das scheint zu helfen (leere Section):

Code: Select all

/*
[section1]
   key1=value1
[section2]
   key2=value2
[]
*/

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Kommentar wird mit eingelesen!?

Post by BoBo » 29 May 2022, 08:44

:thumbup:

Post Reply

Return to “Ich brauche Hilfe”