Hallo,
wie bekommt man es hin das man doppelte Einträge in einer *.ini wieder löscht?
Im Beispielscript trägt man per Tag ein ob man übernachtet hat oder nicht.
Wenn man zB. am 01.12 versehentlich "Übernachtung" eingetragen hat und dies wieder ändern möchten in "keine Übernachtung"
muss zum einen der Eintrag "Übernachtung" in der *.ini gelöscht werden bei "keine Übernachtung" wieder eingetragen werden.
Das ganze soll dann auch noch korrekt in den Inputs angezeigt werden.
Beispiel:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 219, 438, 543, 159)
Global $Input1 = GUICtrlCreateInput("0", 48, 272, 121, 21)
Global $Input2 = GUICtrlCreateInput("0", 48, 328, 121, 21)
$Label1 = GUICtrlCreateLabel("Übernachtungen", 64, 248, 84, 17)
$Label2 = GUICtrlCreateLabel("Keine Übernachtungen", 56, 304, 114, 17)
Global $Button1 = GUICtrlCreateButton("Eintragen", 72, 360, 75, 25)
Global $Button2 = GUICtrlCreateButton("Beenden", 136, 408, 75, 25)
Global $MonthCal1 = GUICtrlCreateMonthCal("2014/12/28", 16, 8, 191, 164)
$Group1 = GUICtrlCreateGroup("Übernachtung", 48, 184, 129, 57)
Global $Radio1 = GUICtrlCreateRadio("Ja", 65, 210, 49, 17)
Global $Radio2 = GUICtrlCreateRadio("Nein", 120, 209, 49, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetState($Radio1, $GUI_CHECKED)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetOnEvent($Button1, "lesen_schreiben")
GUICtrlSetOnEvent($Button2, "Ende")
GUISetOnEvent($GUI_EVENT_CLOSE, "Ende")
Func Lesen_Schreiben()
$kalender_lesen = GUICtrlRead($MonthCal1)
$uebernachtungen = GUICtrlRead($Input1)
$keine_uebernachtungen = GUICtrlRead($Input2)
If BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) = $GUI_CHECKED Then
IniWrite(@ScriptDir & '\test.ini', 'Übernachtung', $kalender_lesen, '1')
GUICtrlSetData($Input1, $uebernachtungen +1)
EndIf
If BitAND(GUICtrlRead($Radio2), $GUI_CHECKED) = $GUI_CHECKED Then
IniWrite(@ScriptDir & '\test.ini', 'Keine Übernachtung', $kalender_lesen, '1')
GUICtrlSetData($Input2, $keine_uebernachtungen +1)
EndIf
EndFunc;==>lesen_schreiben
Func Ende()
Exit
EndFunc;==>Ende
While 1
Sleep(100)
WEnd
Hatte schon versucht das über Arrays zu machen, da bin ich aber immer dran gescheitert das diese bei Monatsanfang leer sind und
das Script zum absturz brachten.
zB so:
Local $uebernachtungen_vergleich = IniReadSection(@ScriptDir & '\test.ini', 'Hotel')
$suche_doppelt_eintrag = _ArraySearch($uebernachtungen_vergleich, $kalender_lesen)
Hoffe mal mich nicht zu umständlich ausgedrückt zu haben.
Das ganze ist nur ein sehr kleiner Teil eines größeren Scriptes, das ich hier aber nicht Posten kann/darf da dort realdaten stehen.
Schaut so aus:
autoit.de/wcf/attachment/25025/
Gruss
oh-ha-2