INI Write Read problematik

  • [autoit]

    Func _safe()
    $sname = GUICtrlRead($name)
    $sxist = GUICtrlRead($xist)
    $syist = GUICtrlRead($yist)
    $sfarbe = GUICtrlRead($farbe)
    If $sfarbe = "Ich" Then
    $Xfarbe = "0x009900"
    EndIf
    If $sfarbe = "Viper" Then
    $Xfarbe = "0x0000CC"
    EndIf
    If $sfarbe = "Bündnisse" Then
    $Xfarbe = "0x0066FF"
    EndIf
    If $sfarbe = "Feind1" Then
    $Xfarbe = "0xFF0000"
    EndIf
    If $sfarbe = "Feind2" Then
    $Xfarbe = "0xFF3300"
    EndIf
    If $sfarbe = "Feind3" Then
    $Xfarbe = "0xCC0000"
    EndIf
    If $sfarbe = "Feind4" Then
    $Xfarbe = "0xCC3300"
    EndIf
    If $sfarbe = "Feind5" Then
    $Xfarbe = "0x990000"
    EndIf
    If $sfarbe = "Neutral" Then
    $Xfarbe = "0xFFFF00"
    EndIf
    $datei = @ScriptDir & "\Datei.ini"
    $anzahl = IniReadSectionNames($datei +1)
    IniWriteSection($datei,$anzahl,"Farbe="&$Xfarbe)
    IniWriteSection($datei,$anzahl,"Name="&$sname)
    IniWriteSection($datei,$anzahl,"x="&$sxist)
    IniWriteSection($datei,$anzahl,"y="&$syist)
    $sxist = ($sxist +400)
    $syist = ($syist +350)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    EndFunc
    Func _open()
    $datei = @ScriptDir & "\Datei.ini"

    $sname = IniRead($datei,"Daten","Name","kein eintrag")
    $sxist = IniRead($datei,"Daten","x","kein eintrag")
    $syist = IniRead($datei,"Daten","y","kein eintrag")
    $Xfarbe = IniRead($datei,"Daten","Farbe","kein eintrag")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    EndIf
    EndFunc

    [/autoit]

    UNd bitte schickt mich nun nicht in irgendwelche tutorials wenn es 3 Pros nicht schaffen das das klappt wird ein tutorial das auch nicht erklären

    Nun was will ich genau mit diesem Scrippt

    [autoit]

    $datei = @ScriptDir & "\Datei.ini"
    $anzahl = IniReadSectionNames($datei +1)
    IniWriteSection($datei,$anzahl,"Farbe="&$Xfarbe)
    IniWriteSection($datei,$anzahl,"Name="&$sname)
    IniWriteSection($datei,$anzahl,"x="&$sxist)
    IniWriteSection($datei,$anzahl,"y="&$syist)

    [/autoit]

    Es soll jeder eintrag so gespeichert werden dass vorhandene ID´s gelesen werden
    es sind also ID´s 0 -17 vorhanden (als section definiert)
    nun muss also die $anzahl =18 sein ( schaft niemand das er mit das erklärt)

    2tes problem

    [autoit]

    Func _open()
    $datei = @ScriptDir & "\Datei.ini"

    $sname = IniRead($datei,"???weis der guckkuck 1- open end?????","Name","kein eintrag")
    $sxist = IniRead($datei,"???weis der guckkuck 1- open end?????","x","kein eintrag")
    $syist = IniRead($datei,"???weis der guckkuck 0- open end?????","y","kein eintrag")
    $Xfarbe = IniRead($datei,"???weis der guckkuck 0- open end?????","Farbe","kein eintrag")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    EndIf
    EndFunc

    [/autoit]

    Hier werden alle ID´s ausgelesen (0- offenes ende)
    wie muss ich die unboundschleiffe setzen das er mit das scrippt

    [autoit]

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)

    [/autoit]


    für jede Section einmal wiederholt bis er sagen wir bei section 59 die letzte erreicht hat

    Ich bin am ende seit nun 8 std. bin ich am basteln baun fragen flennen fast schon weinen

    hab sowiel input nun gelesen das echt nix mehr reinpast

    PLZ HELP

    • Offizieller Beitrag

    Zu Problem 1:

    Spoiler anzeigen
    [autoit]

    $datei = @ScriptDir & "\Datei.ini"
    $Selektions = IniReadSectionNames($datei)
    $Anzahl = $Selektions[0] + 1
    IniWriteSection($datei,$anzahl,"Farbe="&$Xfarbe)
    IniWriteSection($datei,$anzahl,"Name="&$sname)
    IniWriteSection($datei,$anzahl,"x="&$sxist)
    IniWriteSection($datei,$anzahl,"y="&$syist)

    [/autoit]


    Das mit dem SelectionID 0 würde ich mir aber abhaken, beginne bei 1 .

    • Offizieller Beitrag

    Also ich würde dir gern helfen, aber ehrlich gesagt habe ich nicht ansatzweise verstanden, was du möchtest. :huh:
    Du sprichst von ID's - woher stammen diese bzw. was sollen sie darstellen?
    Vielleicht kannst du das mal als Pseudocode darstellen? (Also der Programmablauf in Stichworten)

  • Das Ganze scrippt ist bei Diagramme

    Ich will über ein Gui ein Diagramm zeichnen was ich per eingabe im Gui mit einen punkt erweitern kann

    wenn ich es beende und neu starte soll es dort öffnen wo ichs beendet hatte

    das will ich mit dem teil^^

    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    HotkeySet("{Esc}", "GetPos")
    $IDC = 0
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Koordinatentool Alpha", 990, 700, 0, 0)
    $name = GUICtrlCreateInput("Name", 800, 38, 121, 21)
    $xist = GUICtrlCreateInput("X", 800, 62, 57, 21)
    $yist = GUICtrlCreateInput("Y", 864, 62, 57, 21)
    $farbe = GUICtrlCreateCombo("Ich", 800, 86, 121, 25)
    GUICtrlSetData(-1,"Viper|Bündnisse|Feind1|Feind2|Feind3|Feind4|Feind5|Neutral","Ich")
    $safe = GUICtrlCreateButton("Eintragen", 800, 110, 123, 25, 0)
    $Group1 = GUICtrlCreateGroup("Group1", 800, 142, 121, 361)
    $x=GUICtrlCreateLabel ("0", 10, 10,50)
    $y=GUICtrlCreateLabel ("0", 10, 30,50)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $a = GUICtrlCreateGraphic(20, 50, 760, 600)
    GUICtrlSetBkColor(-1, 0xFFDEAD); Hintergrundfarbe
    $y1 = 25
    Do
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xF5F5F5) ; waagrecht
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 20, $y1)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 740, $y1)
    $y1 = ($y1 + 25)
    Until $y1 > 580 ; Gitter
    $x1 = 30
    Do
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xF5F5F5) ; senkrecht
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, $x1, 20)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, $x1, 580)
    $x1 = ($x1 + 25)
    Until $x1 > 740 ; Gitter
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x000000) ; x und y achsenfarbe
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 380, 10)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 380, 590)
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 10, 300)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 750, 300)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    _open()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $safe
    _safe()

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func GetPos()
    $a=GUIGetCursorInfo()
    $a[0] = ($a[0] -400)
    $a[1] = ($a[1] -350)
    $a[0] = ("x= "&$a[0])
    $a[1] = ("y= "&$a[1])
    GUIctrlSetData($x,$a[0])
    GUIctrlSetData($y,$a[1])
    EndFunc
    Func _safe()
    $sname = GUICtrlRead($name)
    $sxist = GUICtrlRead($xist)
    $syist = GUICtrlRead($yist)
    $sfarbe = GUICtrlRead($farbe)
    If $sfarbe = "Ich" Then
    $Xfarbe = "0x009900"
    EndIf
    If $sfarbe = "Viper" Then
    $Xfarbe = "0x0000CC"
    EndIf
    If $sfarbe = "Bündnisse" Then
    $Xfarbe = "0x0066FF"
    EndIf
    If $sfarbe = "Feind1" Then
    $Xfarbe = "0xFF0000"
    EndIf
    If $sfarbe = "Feind2" Then
    $Xfarbe = "0xFF3300"
    EndIf
    If $sfarbe = "Feind3" Then
    $Xfarbe = "0xCC0000"
    EndIf
    If $sfarbe = "Feind4" Then
    $Xfarbe = "0xCC3300"
    EndIf
    If $sfarbe = "Feind5" Then
    $Xfarbe = "0x990000"
    EndIf
    If $sfarbe = "Neutral" Then
    $Xfarbe = "0xFFFF00"
    EndIf
    $datei = @ScriptDir & "\Datei.ini"
    $anzahl = IniReadSectionNames($datei[0] +1)
    IniWrite($datei,$anzahl,"Farbe",$Xfarbe)
    IniWrite($datei,$anzahl,"Name",$sname)
    IniWrite($datei,$anzahl,"x",$sxist)
    IniWrite($datei,$anzahl,"y",$syist)
    $sxist = ($sxist +400)
    $syist = ($syist +350)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    EndFunc
    Func _open()
    $datei = @ScriptDir & "\Datei.ini"

    $sname = IniRead($datei,"Daten","Name","kein eintrag")
    $sxist = IniRead($datei,"Daten","x","kein eintrag")
    $syist = IniRead($datei,"Daten","y","kein eintrag")
    $Xfarbe = IniRead($datei,"Daten","Farbe","kein eintrag")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    EndIf
    EndFunc

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    $datei = @ScriptDir & "\Datei.ini"
    $Selektions = IniReadSectionNames($datei)
    If Not IsArray($Selektions) Then
    $Anzahl = 1
    Else
    $Anzahl = $Selektions[0] + 1
    EndIf
    IniWrite($datei, $Anzahl, "Farbe", $Xfarbe)
    IniWrite($datei, $Anzahl, "Name", $sname)
    IniWrite($datei, $Anzahl, "x", $sxist)
    IniWrite($datei, $Anzahl, "y", $syist)

    [/autoit]
    • Offizieller Beitrag

    blubbstar :Stimmt hatte ich vollkommen vergessen , das die INI Datei ja leer sein kann .

    @Lexxar wenn du willst das man auch dein _Open Problem löst solltest du auch mal schreiben wohin du die gelesenen Werte haben willst . Du mußt die Ini-Datei in einer Schleife einlesen .


  • Ja danke Problem 1 wurde gelöst habe es nun auch genauso drinnendanke

    Problem 2 wie kann ich nun alle vorhandenen auslesen wenn die Func _open() aufgerufen wird ?

    danke schonmal

    Zitat

    @Lexxar wenn du willst das man auch dein _Open Problem löst solltest du
    auch mal schreiben wohin du die gelesenen Werte haben willst . Du mußt
    die Ini-Datei in einer Schleife einlesen .

    Ja es soll im Gui usgeführt werden
    UNd zwar bei jedem mal wenn die Open Aufgerufen wird
    UNd wie soll sie ausgeführt werden???

    [autoit]

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)

    [/autoit]


    so und das mit jedem der einzellnen selektions

    danke leute ihr seit hammer

    :cursing: das nächste mal kommt ihr früher on^^

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    Func _open()
    $datei = @ScriptDir & "\Datei.ini"
    $Selektions = IniReadSectionNames($datei)
    If Not IsArray ($Selektions) Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Return
    EndIf
    $Anzahl = $Selektions[0]
    for $i=1 to $Anzahl
    $sname = IniRead($datei,"Daten","Name","kein eintrag")
    $sxist = IniRead($datei,"Daten","x","kein eintrag")
    $syist = IniRead($datei,"Daten","y","kein eintrag")
    $Xfarbe = IniRead($datei,"Daten","Farbe","kein eintrag")
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    Next
    EndFunc

    [/autoit]

    Edit Shit hatte 2 Klammern vergessen .

  • [autoit]

    Func _open()
    $datei = @ScriptDir & "\Datei.ini"
    $Selektions = IniReadSectionNames($datei)
    If Not IsArray ($Selektions) Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Return
    EndIf
    $Anzahl = $Selektions[0]
    for $i=1 to $Anzahl
    $sname = IniRead($datei,$i,"Name","kein eintrag")
    $sxist = IniRead($datei,$i,"x","kein eintrag")
    $syist = IniRead($datei,$i,"y","kein eintrag")
    $Xfarbe = IniRead($datei,$i,"Farbe","kein eintrag")
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    Next
    EndFunc

    [/autoit]


    OMG es klappt

    IHR SEIT HELDEN

    danke leute

    ICH LIEBE EUCH^^

    • Offizieller Beitrag

    Dein Script funktioniert zwar trotz allen Änderungen bei mir nicht, liegt eventuell an Vista . Aber wenn es bei dir läuft, dann hat sich´s ja gelohnt.

  • Nach start oder änderrung minimieren und wieder maximieren dann hast du dei neu eingetragenen wertê

    danke nochmals

    • Offizieller Beitrag

    Du machst es dir aber umständlich .

    [autoit]

    _WinAPI_RedrawWindow($Form1)

    [/autoit]


    Diesen Code einfach nach dem

    [autoit]

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)

    [/autoit]


    bei den Funktionen _save und _open einfügen und das Programm macht dein Update ohne minimieren, maximieren .

    Ach ja und am Anfang des Scriptes nicht

    [autoit]

    #include <WinAPI.au3>

    [/autoit]


    vergessen ;)

  • #include <WinAPI.au3>

    <Du bist echt der beste ^^

    wennst mir nun noch ein ding leisten kannst bist mein perönlicher "gott"

    [autoit]

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $Xfarbe)
    $punkt = GUICtrlSetGraphic(-1, $GUI_GR_DOT, $sxist, $syist)
    _WinAPI_RedrawWindow($Form1)

    [/autoit]

    mit einem Toltip versehen ( beim erstellen mit $name )