Ini-Datei - Sektion entfernen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

lujanw
Posts: 9
Joined: 18 Jan 2015, 14:46

Ini-Datei - Sektion entfernen

14 Feb 2015, 10:28

Hallo guys,
ich habe vor Sachen von einer .ini in eine andere zu kopieren aber die Sektions-"Blöcke" sollen nicht mitgenommen werden.
Bin leider ratlos wie ich diese entfernen soll.

Das was ich bisher habe funktioniert nicht

Code: Select all

Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegner.ini
{
StringSplit, text, A_LoopReadLine, =
if(text != [Aztecas] AND text != [Yakuza] AND text != [Cali Kartell])
IniWrite, Offline, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini, Gegner, %text1%
}
in der .ini Datei wird immer die Sektion mit rein geschrieben, was aber nicht der Fall sein soll

z.B.

Code: Select all

[Gegner]
[Cali Kartell]=Offline
Es soll aber wie gesagt alles andere dort rein aber nicht die Sektionen.
Hoffentlich hilft jemand

Gruß
Johnny R
Posts: 303
Joined: 03 Oct 2013, 02:07

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 02:03

in der .ini Datei wird immer die Sektion mit rein geschrieben...
Das ist ja der Sinn einer ini-Datei, andernfalls es keine ini-Datei, sondern eine sonstige Textdatei wäre.
...was aber nicht der Fall sein soll
Dann darfst Du nicht in eine ini-Datei schreiben, sondern mit FileAppend in eine einfache Textdatei.
lujanw
Posts: 9
Joined: 18 Jan 2015, 14:46

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 07:41

Johnny R wrote:
in der .ini Datei wird immer die Sektion mit rein geschrieben...
Das ist ja der Sinn einer ini-Datei, andernfalls es keine ini-Datei, sondern eine sonstige Textdatei wäre.
...was aber nicht der Fall sein soll
Dann darfst Du nicht in eine ini-Datei schreiben, sondern mit FileAppend in eine einfache Textdatei.
Das ist mir alles bewusst.
Ich will aber auch bewusst für diese eine Funktion den kompletten Inhalt in die "Gegnerlisten.ini" kopierten BIS auf die Sektionen, aber auch nur in diesem fall.
Sonst benötige ich diese ja auch.

gruß
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 08:06

Code: Select all

InputFile  = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegner.ini
OutputFile = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini

Loop, Read, %InputFile%, %OutputFile%
    If !SubStr(A_LoopReadLine, 1, 1) = "["
        FileAppend, %A_LoopReadLine%
Kein IniWrite benutzen! Johnny R hat's schon gesagt.
lujanw
Posts: 9
Joined: 18 Jan 2015, 14:46

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 08:55

wolf_II wrote:

Code: Select all

InputFile  = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegner.ini
OutputFile = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini

Loop, Read, %InputFile%, %OutputFile%
    If !SubStr(A_LoopReadLine, 1, 1) = "["
        FileAppend, %A_LoopReadLine%
Kein IniWrite benutzen! Johnny R hat's schon gesagt.
Danke für deine Hilfe, jedoch wird nichts in die Gegnerlisten.ini eingetragen.
Also das beim Loop Read das richtig erkannt wird, also die Datein, klappt.
Bei der weiteren Funktion mit dem SubString habe ich mich noch nie mit befasst, also habe keine Ahnung was dort nicht funktioniert.
Hilfe bei google habe ich nicht gefunden...

gruß
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 09:05

Gib mal bitte ein Beispiel für Inputfile (zB. Input.ini) und den von Dir gewollten OutputFile (zB. Output.ini). Vielleicht sehe ich dann wo das Problem ist? Sind da Zeilen drin, die unkonventionell sind?
SubStr(A_LoopReadLine, 1, 1) gibt Dir das erste Zeichen aus der Zeichenkette A_LoopReadLine zurück.
lujanw
Posts: 9
Joined: 18 Jan 2015, 14:46

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 09:25

wolf_II wrote:Gib mal bitte ein Beispiel für Inputfile (zB. Input.ini) und den von Dir gewollten OutputFile (zB. Output.ini). Vielleicht sehe ich dann wo das Problem ist? Sind da Zeilen drin, die unkonventionell sind?
SubStr(A_LoopReadLine, 1, 1) gibt Dir das erste Zeichen aus der Zeichenkette A_LoopReadLine zurück.
Also in der Ausgangs-Datein steht z.B. das hier:

Code: Select all

[Cali Kartell]
booba_Lunatic=Cali Kartell
Aber in die Gegnerliste soll nur das "booba_lunatic=Cali Kartell" stehen nicht das [Cali Kartell]


Meinste das mit Beispiel? ^^
Wenn nicht hier die ganze funktion:
Spoiler
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 09:40

Dümlicher Fehler meinerseits :oops: das ! ist an der falschen Stelle:

Code: Select all

Wrong: If !SubStr(A_LoopReadLine, 1, 1) = "["
Right: If SubStr(A_LoopReadLine, 1, 1) != "["
Auch bedenke dass Du am besten die Output-Datei immer erst löschen solltest, sonst wird die mit der Zeit immer länger.

Code: Select all

InputFile  = %A_ScriptDir%\Input.ini
OutputFile = %A_ScriptDir%\Output.ini
FileDelete, %OutputFile%

Loop, Read, %InputFile%, %OutputFile%
    If SubStr(A_LoopReadLine, 1, 1) != "["
        FileAppend, %A_LoopReadLine%`n
Last edited by wolf_II on 15 Feb 2015, 09:44, edited 1 time in total.
Johnny R
Posts: 303
Joined: 03 Oct 2013, 02:07

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 09:41

@lujanw, für Euch Zockerkids gibt es eine eigene Sektion, wo Ihr ungestört seid. Warum postet Du nicht dort, wo Du mit Deinem Thema hingehörst?
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: Ini-Datei - Sektion entfernen

15 Feb 2015, 09:53

Warum postet Du nicht dort, wo Du mit Deinem Thema hingehörst?
IHMO, das Thema hat hier seinen richtigen Platz. Aber das ist nur eine zweite Meinung.
lujanw
Posts: 9
Joined: 18 Jan 2015, 14:46

Re: Ini-Datei - Sektion entfernen

21 Feb 2015, 09:40

Ich habe es nun so gemacht, was auch eigentlich meinen Wünschen entspricht (danke nochmal)
Jedoch wird aus der Gegner.ini nur der letzte Eintrag übernommen (in dem Fall Name=Fraktion). Es sollen aber logischerweise alle übernommen werden.

Hiermal der Inhalt der .ini und das Script.

Code: Select all

[Yakuza]
traviS_smitH=Yakuza
Jones_Moran=Yakuza
mR.TraubenzuckeR=Yakuza
JaN.JacksoN=Yakuza
Leo2201=Yakuza
harun_jones=Yakuza
mARcus.ALmeida=Yakuza
Jayson_MiLLER=Yakuza
[Aztecas]
DarK_BlizZarD77=Aztecas
LioN_Murray=Aztecas
AizeN_MuRRay=Aztecas

Es wird nur "Aizen_Murray" übernommen nicht der rest.

Code: Select all

FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini

InputFile  = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegner.ini
OutputFile = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini
Loop, Read, %InputFile%, %OutputFile%
If SubStr(A_LoopReadLine, 1, 1) != "["
 StringSplit, text, A_LoopReadLine, =
IniWrite, Offline, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini, Gegner, %text1%
FileAppend, %A_LoopReadLine%`n
strobo
Posts: 125
Joined: 30 Sep 2013, 15:24

Re: Ini-Datei - Sektion entfernen

23 Feb 2015, 09:28

Probiers mit

Code: Select all

if ...
{
...
}
; und
loop ...
{
...
}
lujanw
Posts: 9
Joined: 18 Jan 2015, 14:46

Re: Ini-Datei - Sektion entfernen

23 Feb 2015, 13:49

Danke habs nun so klappt soweit wie ich es getestet habe :D

Code: Select all

FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini

InputFile  = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegner.ini
OutputFile = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini
{
Loop, Read, %InputFile%, %OutputFile% 
If SubStr(A_LoopReadLine, 1, 1) != "["
{
StringSplit, text, A_LoopReadLine, =

IniWrite, Offline, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Cekretus Keybinder\Gegnerlisten\Gegnerlisten.ini, Gegner, %text1%
;FileAppend, %A_LoopReadLine%`n
}
}

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: Bing [Bot] and 8 guests