ListView füllen mit Ini Datei

  • Hallo Leute,

    kleines Problem, dass evtl. nur besteht weil ich ein weinig "faul" programmieren möchte, aber nicht genau weis wie ich dass anstellen soll ^^

    Also folgendes:

    Ich habe eine ListView, die sich die daten aus INI-Dateien list, die so angelegt werden:

    [autoit]

    $Pfad_Auftragserfassung_Archiviert = @ScriptDir&"\Daten\Archiv\Aufragserfassung"&@YEAR&""&@MON

    [/autoit]

    halt jeden Tag eine neue Ini-Datei.

    Nun ist das Problem, dass die ListView sich so nach diesem Schema füllt:

    [autoit]

    $SectionsCount2 = IniReadSectionNames($Pfad_Ende&"\Ende.ini")

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

    If NOT @error Then
    $Count2 = $SectionsCount2[0]
    For $b = 1 To $Count2
    $ArrayEndeName = IniReadSection ($Pfad_Ende&"\Ende.ini", $SectionsCount2[$b])
    $NameE = $ArrayEndeName[1][1]
    $SpoolE = $ArrayEndeName[2][1]
    $StoppE = $ArrayEndeName[3][1]
    $TimeE = $ArrayEndeName[4][1]
    $DateE = $ArrayEndeName[5][1]

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

    $StartTime = IniRead($Pfad_Start&"\Start.ini", $SpoolE ,"Uhrzeit","")
    $StartDate = IniRead($Pfad_Start&"\Start.ini", $SpoolE ,"Datum","")
    $Kom2 = IniRead($Pfad_Auftragserfassung_Archiviert&""&@MDAY&".ini", $SpoolE ,"Kom","")
    $Bemerkung2 = IniRead($Pfad_Auftragserfassung_Archiviert&""&@MDAY&".ini", $SpoolE ,"Bemerkung","Fehler")
    $Express2 = IniRead($Pfad_Auftragserfassung_Archiviert&""&@MDAY&".ini", $SpoolE ,"Express","Fehler")
    $StartGe = "-"

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

    GUICtrlCreateListViewItem($NameE&"|"&$Kom2&"|"&$SpoolE&"|"&$StartGe&"|"&$StartGe&"|"&$TimeE&"|"&$DateE&"|"&$StartGe&"|"&$StartGe&"|"&$Bemerkung2&"|"&$Express2,$Voll_Uebersicht_List)
    If $Express2 = "Ja" Then GUICtrlSetBkColor(-1,0xFF4500)
    Next
    EndIf

    [/autoit]

    heißt ja auf gut deutsch, dass immer die die Datensätze die nicht mehr @MDay sind die Meldung "Fehler" haben.
    Wie kann ich jetzt dafür sorgen dass, alle Daten eingelsen werden, die auch ein anderes Datum haben, ohne @MDay-1,@Mday+1 usw. schreiben muss.
    Geht dass mit eeiner For-schleife oder lässt sich das auch mit einer While-Schleife sinnvoll umsetzten?

  • Hallo.

    So, dann lasse ich Dich kurz meinen Gedanken teil haben.

    Es wäre leichter, wenn die Quelldatei, in Deinem Fall eine INI_Datei, eine CSV-Datei wäre. Dann ist jeder Datensatz eine Zeile und wenn die Daten dann durch "|"getrennt sind, kann man sich das was Du oben als "Problem" darstellst blendend lösen.
    Nur die Frage wäre, ob Du es beeinflussen kannst, was es für eine Quelldatei ist. Also ob Du der Datei, die die INI erstellt irgendwie "mitteilen" kannst, das die Daten als "CSV-Datei" gespeichert werden sollen.

    Habe ich mich verständlich ausgedrückt? Ich habe derzeitig echt Probleme "Deutsch" zu denken. Gerade mit meiner Ma in Dänemark gesprochen und dann hier english und am PC deutsch. Hirn-Wirr-Warr.

    Bin weg. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Wieviele INI-Sätze sind das denn täglich? Ist es eine gleichbleibende Anzahl? Okay, die Anzahl könnte man ja auslesen. Müßte gehen.
    Mich würde mal der INI-Aufbau interessieren? Auch ggf. mit Fake-Daten. Aber so das man es nachvollziehen kann. Nicht unbedingt
    100 INI-Sätze, aber schon so 5-10 Stück.

    Evtl. durch ein ersten Script oder im ersten Sprichtteil die Daten aus der INI-Datei einlesen in eine CSV-Datei. Deshalb wäre für eine Prüfung es sinnvoll, wenn man o. g. Fragen beantwortet bekommt. ;)

    Ich denke ab und an "verrückt", das weiß ich selber, aber ich habe bis heute zu fast allem eine Lösung gefunden (AutoIt bezogen). Zum Teil über Umwege, zum Teil über das lernen von Funktionen, die
    mir aber immer durch die User hier im Forum verständlich erklärt wurden. Macht echt Spaß.

    So, melde mich gegen Abend wieder, wenn das kleine Männchen auf meiner Schulter mich läßt. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Lösungen sind immer erwünscht, besonders wenn es um Sachen geht wie Deine.
    Wäre lieb von Dir, wenn Du die Lösung posten würdest.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Lösung für das beschriebene Problem:

    [autoit]

    ;~ -------ListView Übersicht komplett füllen---------------------------------------
    Func ListView_Uebersicht_fuellen()
    $Tag=@MDAY
    $Tag2=$Tag-5
    For $x= $Tag To $Tag2 step -1
    ListViewLaden($Pfad_Start&"\Start.ini",0,$x)
    ListViewLaden($Pfad_Stopp&"\Stopp.ini",1,$x)
    ListViewLaden($Pfad_Ende&"\Ende.ini",2,$x)
    next
    EndFunc

    [/autoit]

    Und hier die Funktion in der Funktion:

    [autoit]

    ;~ -------ListView Übersicht Komplett füllen Func----------------------------------
    Func ListViewLaden($Pfad_ListViewLaden,$Auswahl,$h)
    $SectionsCount = IniReadSectionNames($Pfad_ListViewLaden)

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

    If NOT @error Then
    $Count = $SectionsCount[0]
    For $e = 1 To $Count
    $ArrayStartName = IniReadSection($Pfad_ListViewLaden, $SectionsCount[$e]) ;$SectionsCount auslesen Array[][] geht nicht
    $Name = $ArrayStartName[1][1]
    $Spool = $ArrayStartName[2][1]
    $Stopp = $ArrayStartName[3][1]
    $Time = $ArrayStartName[4][1]
    $Date = $ArrayStartName[5][1]

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

    $Kom = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Kom","")
    $Bemerkung = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Bemerkung","Fehler")
    $Express = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Express","Fehler")
    $EndGe = "-"

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

    If $Bemerkung <> "Fehler" AND $Express <> "Fehler" Then
    If $Auswahl = 0 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$Time&"|"&$Date&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Start
    ElseIf $Auswahl = 1 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$Time&"|"&$Date&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Stopp
    ElseIf $Auswahl = 2 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$EndGe&"|"&$EndGe&"|"&$Time&"|"&$Date&"|"&$EndGe&"|"&$EndGe&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Ende
    EndIf
    EndIf
    If $Express = "Ja" Then GUICtrlSetBkColor(-1,0xFF0000)
    Next
    EndIf
    EndFunc

    [/autoit]


    Das ist dann auch schon alles gewesen =)

    Der Quelltext vom Eingangstext zum Thema war nur ein kleiner Ausschnitt von dem, was ich vor hatte.