Moinsen,
ich bin ziemlicher Frischling und habe gleich mal eine Frage, weil ich trotz Suche nicht wirklich fündig und schlau werde ...
Also, ich bekomme von einem Bekannten eine Ini-Datei (ohne Sektion), in der gleich lautende Keys, aber mit fortlaufender Nummer enthalten sind.
Beispiel
Fleisch1:Putenbrust
Gemüse1:Kohlrabi
Frucht1:F; Erdbeer
Frucht2:Banane
Frucht3:Mango
Fleisch2:Hähnchen
Ich möchte jetzt die Ini durchsuchen lassen (z.B. nach "Frucht") und nur die Ergebnisse als Ausgabevariable erhalten, in der Form:
Erdbeer
Banane
Mango
1) Kann ich für die Key-Nummer einen Platzhalter verwenden, damit "Frucht" richtig interpretiert und gefunden wird? Oder geht das viel einfacher?
2) Im Key "Frucht1" steht am Anfang des Werts ein "F;". Dieses soll anzeigen, das diese Zeile in der Ausgabe fett formatiert werden soll. Geht das überhaupt?
Kann mir jemand auf die Sprünge helfen bitte?
Gruß vom Filzfrosch
Ini-Key mit Folgenummer auslesen
Moderator: jNizM
-
- Posts: 64
- Joined: 18 Feb 2017, 08:39
- Location: Hamburg / Germany
Ini-Key mit Folgenummer auslesen
Merry Crisis and a happy new fear
Re: Ini-Key mit Folgenummer auslesen
Moin,
Dann will ich mal versuchen, Dir auf die Sprünge zu helfen.... weil ich trotz Suche nicht wirklich fündig und schlau werde ...
- Ein Datei ohne [Sektionen] ist für AHK eine normale Textdatei, keine INI.
- Für das zeilenweise Einlesen von Textdateien gibt es die Schleifenanweisung Loop (Dateiinhalt lesen).
- Für das Auftrennen von Zeichenfolgen (Zeilen) anhand fester Zeichen (z.B. :) gibt es die Anweisung StringSplit. Die könntest Du auch verwenden, um F; im zweiten Teil zu verarbeiten.
Alternativ geht das auch mit einer Kombination von InStr() und SubStr() - Für das Entfernen von variablen Zeichen (z.B. Ziffern) aus einer Zeichenkette gibt es die Anweisung RegExReplace.
- Für die Darstellung einer Auswahlliste in einem Fenster eignen sich die Steuerelemente DropDownList oder ListBox.
- Für die Ausgabe von Werten in normaler oder fetter Schrift eignet sich das Steuerelement TreeView, obwohl sich das auf den ersten Blick nicht unbedingt aufdrängt.
-
- Posts: 64
- Joined: 18 Feb 2017, 08:39
- Location: Hamburg / Germany
Re: Ini-Key mit Folgenummer auslesen
Hallo just me,
danke für die Hinweise!
Mit Loop, IfInString und dem Tipp RegExReplace (kannte ich noch nicht, bin wie gesagt noch sehr frisch in der Marterie) klappt das auslesen jetzt super
An TreeView habe ich mich bisher noch nicht heran getraut, dass scheint mir recht komplex und die oben genannten hilfreichen Tipps hatten mich bisher schon ausreichend beschäftigt
danke für die Hinweise!
Mit Loop, IfInString und dem Tipp RegExReplace (kannte ich noch nicht, bin wie gesagt noch sehr frisch in der Marterie) klappt das auslesen jetzt super
An TreeView habe ich mich bisher noch nicht heran getraut, dass scheint mir recht komplex und die oben genannten hilfreichen Tipps hatten mich bisher schon ausreichend beschäftigt
Merry Crisis and a happy new fear
Re: Ini-Key mit Folgenummer auslesen
Moin Filzfrosch,
freut mich, dass Du weitergekommen bist.
Das Problem mit dem TreeView-Control kenne ich. Als ich mit AHK angefangen habe, hat es auch eine Weile gedauert, bis ich mich an ListView und TreeView herangetraut habe.
In Deinem Fall sollte die Umsetzung aber nicht allzu komplex sein, weil das Control nur für eine zeilenweise Ausgabe benutzt werden soll. Alle Elemente liegen deshalb auf derselben Hierarchiestufe und können mithinzugefügt werden. Die zurückgegebene Element-ID brauchst Du nicht.
Beispiel:
freut mich, dass Du weitergekommen bist.
Das Problem mit dem TreeView-Control kenne ich. Als ich mit AHK angefangen habe, hat es auch eine Weile gedauert, bis ich mich an ListView und TreeView herangetraut habe.
In Deinem Fall sollte die Umsetzung aber nicht allzu komplex sein, weil das Control nur für eine zeilenweise Ausgabe benutzt werden soll. Alle Elemente liegen deshalb auf derselben Hierarchiestufe und können mit
Code: Select all
TV_Add(VariableMitText, 0, "leer oder Bold")
Beispiel:
Code: Select all
#NoEnv
; https://ahkde.github.io/docs/commands/TreeView.htm
Elemente := "
(
Erstes Element
Zweites Element (fett)
Drittes Element
)"
Gui, Add, TreeView, w400 r10 -Lines
Loop, Parse, Elemente, `n
{
If InStr(A_LoopField, "(fett)")
Option := "Bold"
Else
Option := ""
TV_Add(A_LoopField, 0, Option)
}
Gui, Show, , TreeView
Return
GuiClose:
ExitApp
-
- Posts: 64
- Joined: 18 Feb 2017, 08:39
- Location: Hamburg / Germany
Re: Ini-Key mit Folgenummer auslesen
Hallo just me,
nochmal vielen Dank, ich war leider 3 Wochen im Krankenhaus, daher bin ich erst jetzt die Tage dazu gekommen, sorry.
Auch das funzt wieder sehr gut, trotzdem habe ich ein paar Fragen.
Meine Vorlage hat jetzt zusätzlich noch Formatzeichen bekommen die anzeigen, dass die Zeile zentriert werden soll
1.
Wie kann ich einen zusätzlichen Loop an Dein Beispiel anhängen, welcher dann nach "(zentriert)" sucht und aktiv wird?
Ich hab ein wenig herum getestet, aber ich verstehe anscheinend noch nicht so recht, an welche Stelle ich den einbauen muss.
Bzw. oder ob ich das Ergebnis vom ersten Loop vorerst in eine Variable zwischenspeichern kann/muss, mit der ich dann weiterarbeite.
2.
Ich finde in den Optionen von TV_Add keine zentrierte Formatierung. Die macht darin ja eigentlich auch nicht wirklich Sinn.
Siehst Du dafür überhaupt eine Möglichkeit?
Grüße
Filzfrosch
... noch viel lernen er muss
nochmal vielen Dank, ich war leider 3 Wochen im Krankenhaus, daher bin ich erst jetzt die Tage dazu gekommen, sorry.
Auch das funzt wieder sehr gut, trotzdem habe ich ein paar Fragen.
Meine Vorlage hat jetzt zusätzlich noch Formatzeichen bekommen die anzeigen, dass die Zeile zentriert werden soll
1.
Wie kann ich einen zusätzlichen Loop an Dein Beispiel anhängen, welcher dann nach "(zentriert)" sucht und aktiv wird?
Ich hab ein wenig herum getestet, aber ich verstehe anscheinend noch nicht so recht, an welche Stelle ich den einbauen muss.
Bzw. oder ob ich das Ergebnis vom ersten Loop vorerst in eine Variable zwischenspeichern kann/muss, mit der ich dann weiterarbeite.
2.
Ich finde in den Optionen von TV_Add keine zentrierte Formatierung. Die macht darin ja eigentlich auch nicht wirklich Sinn.
Siehst Du dafür überhaupt eine Möglichkeit?
Grüße
Filzfrosch
... noch viel lernen er muss
Merry Crisis and a happy new fear
Re: Ini-Key mit Folgenummer auslesen
Moin,
'3 Wochen im Krankenhaus' hört sich nach 'mehr als nur eine Kleinigkeit' an. Ich hoffe, Du hast Dich gut und vollständig erholt.
Du siehst das ganz richtig, das TreeView unterstützt keine zentrierte Darstellung. Man könnte da vielleicht noch etwas 'rumtricksen', indem man dem Text Leerzeichen voranstellt, aber das wäre nur ein sehr bescheidener Notnagel. Und wenn dann wieder eine neue Textauszeichnung dazu kommt, ist Schluss.
Kennst Du Dich ein bisschen mit HTML aus (ich leider nicht wirklich)? Dann gibt es als Alternative für die reine Darstellung noch das IE-Steuerelement (ActiveX):
Du müsstest dafür Deine Vorlagendatei in HTML übersetzen. Ich habe das 'obsolete' <center> Tag für die zentrierte Ausgabe benutzt. Es funktioniert bei mir noch recht gut.
'3 Wochen im Krankenhaus' hört sich nach 'mehr als nur eine Kleinigkeit' an. Ich hoffe, Du hast Dich gut und vollständig erholt.
Du siehst das ganz richtig, das TreeView unterstützt keine zentrierte Darstellung. Man könnte da vielleicht noch etwas 'rumtricksen', indem man dem Text Leerzeichen voranstellt, aber das wäre nur ein sehr bescheidener Notnagel. Und wenn dann wieder eine neue Textauszeichnung dazu kommt, ist Schluss.
Kennst Du Dich ein bisschen mit HTML aus (ich leider nicht wirklich)? Dann gibt es als Alternative für die reine Darstellung noch das IE-Steuerelement (ActiveX):
Code: Select all
#SingleInstance, Force
HTML =
(
<html>
<body style='font: 12px;font-family: sans-serif'>
Normaler text<br>
<b>Fetter text</b><br>
<center>Zentrierter text</center><br>
Normaler text<br>
<b>Fetter text</b><br>
<center>Zentrierter text</center><br>
Normaler text<br>
<b>Fetter text</b><br>
<center>Zentrierter text</center><br>
Normaler text<br>
<b>Fetter text</b><br>
<center>Zentrierter text</center><br>
Normaler text<br>
<b>Fetter text</b><br>
<center>Zentrierter text</center><br>
Normaler text<br>
<b>Fetter text</b><br>
<center>Zentrierter text</center><br>
Normaler text<br>
<b>Fetter text</b><br>
<center>Zentrierter text</center>
</body>
</html>
)
Gui Add, ActiveX, w400 h400 vWB, Shell.Explorer
Gui, Add, Edit, w400 r4
Gui, Add, Button, gGuiClose, Testbutton
WB.Navigate("about:blank")
WB.Document.Write(HTML)
Gui Show
Return
GuiClose:
ExitApp
Who is online
Users browsing this forum: No registered users and 37 guests