DVD Archiv

  • hiho,

    also wie der name schon sagt, möchte ich gern ein dvd archiv "basteln". da meine frau und ich mittlerweile eine sammelung von über 250 filmen haben, muß ich wohl auch eine datenbank erstellen.
    da ich im allgemeinen aber noch recht unerfahren hier bin, würd ich mich über hilfe oder begleitung zu diesem projekt freuen.

    ich hab mir halt vorgestellt, das man nach filmen, genre, staffel, darsteller ect sortieren kann und zu jedem film (wenn man hat) eine beschreibung.

    ich denke das die bibliothek von trallala hilfen wird, jedoch funktioniert sie bei mir nicht, ka wodran das liegt.

    falls mir jemand helfen würde, wäre es vielleicht nicht schlecht per icq, ts email oder so zu kommunizieren.

    also, grüße von mir

  • hab mir da schon alles (hoffe ich) runtergeladen.....aber weiß noch nicht so recht wie ich es verwenden kann....

  • so, ist zwar nur der anfang, aber besser als nichts.

    und hier häng ich auch schon fest....anfängerprobleme halt.

    Spoiler anzeigen

    #include <GUIConstants.au3>
    #Include <GuiListView.au3>

    $Form1 = GUICreate("DVD Archiv", 1034, 716, 195, 112)

    ;Auswahl
    $ListView1 = GUICtrlCreateListView("Film | Staffel | Genre | Darsteller | Beschreibung", 0, 54, 1033, 641)


    GUICtrlCreateListViewItem("", $ListView1)

    ;Menü
    $MenuItem1 = GUICtrlCreateMenu("Datei")
    $MenuItem3 = GUICtrlCreateMenuItem("Neuer eintrag", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenuItem("Suche", $MenuItem1)
    $MenuItem2 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem5 = GUICtrlCreateMenu("Hilfe")
    $MenuItem6 = GUICtrlCreateMenuItem("Hilfe", $MenuItem5)

    GUISetState(@SW_SHOW)


    While 1
    $Msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit

    ;Menü Neuer Eintrag
    If $Msg = $MenuItem3 Then

    $Form2 = GUICreate("Neuer Eintrag", 611, 544, 194, 118)

    $Label1 = GUICtrlCreateLabel("Film", 8, 32, 22, 17)
    $Label2 = GUICtrlCreateLabel("Staffel", 8, 64, 34, 20)
    $Label3 = GUICtrlCreateLabel("Genre", 8, 96, 33, 20)
    $Label4 = GUICtrlCreateLabel("Darsteller", 8, 128, 48, 20)
    $Label5 = GUICtrlCreateLabel("Beschreibung", 8, 160, 69, 20)

    $Input1 = GUICtrlCreateInput("", 96, 24, 449, 21)
    $Input2 = GUICtrlCreateInput("", 96, 56, 449, 21)
    $Input3 = GUICtrlCreateInput("", 96, 88, 449, 21)
    $Input4 = GUICtrlCreateInput("", 96, 120, 449, 21)

    $Edit1 = GUICtrlCreateEdit("", 96, 160, 449, 321)
    GUICtrlSetData(-1, "")

    $Button1 = GUICtrlCreateButton("Speichern", 136, 504, 113, 20, 0)
    $Button2 = GUICtrlCreateButton("Beenden", 8, 504, 113, 20, 0)

    GUISetState(@SW_SHOW)

    EndIf

    ;Menü Suche
    If $Msg = $MenuItem4 Then

    $Form3 = GUICreate("Suche", 479, 185, 193, 125)

    $Label1 = GUICtrlCreateLabel("Suche", 8, 56, 35, 20)

    GUICtrlCreateInput("", 72, 56, 305, 21)

    GUISetState(@SW_SHOW)

    EndIf

    ;Menü Beenden
    If $Msg = $MenuItem2 Then
    Exit
    EndIf

    WEnd

    egal wie ich den $button2 aktiviere.....es öffnet sich dann nur noch ganz kurz die gui und schließt direkt wieder.....
    was kann ich machen oder was mach ich falsch?

    • Offizieller Beitrag

    Ich habe Dein Script mal etwas angepasst:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GuiListView.au3>

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

    $Form1 = GUICreate("DVD Archiv", 1034, 716, 195, 112)

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

    ;Auswahl
    $ListView1 = GUICtrlCreateListView("Film | Staffel | Genre | Darsteller | Beschreibung", 0, 54, 1033, 641)

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

    GUICtrlCreateListViewItem("", $ListView1)

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

    ;Menü
    $MenuItem1 = GUICtrlCreateMenu("Datei")
    $MenuItem3 = GUICtrlCreateMenuItem("Neuer eintrag", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenuItem("Suche", $MenuItem1)
    $MenuItem2 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem5 = GUICtrlCreateMenu("Hilfe")
    $MenuItem6 = GUICtrlCreateMenuItem("Hilfe", $MenuItem5)

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

    ;Form2
    $Form2 = GUICreate("Neuer Eintrag", 611, 544, 194, 118)

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

    $Label1 = GUICtrlCreateLabel("Film", 8, 32, 22, 17)
    $Label2 = GUICtrlCreateLabel("Staffel", 8, 64, 34, 20)
    $Label3 = GUICtrlCreateLabel("Genre", 8, 96, 33, 20)
    $Label4 = GUICtrlCreateLabel("Darsteller", 8, 128, 48, 20)
    $Label5 = GUICtrlCreateLabel("Beschreibung", 8, 160, 69, 20)

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

    $Input1 = GUICtrlCreateInput("", 96, 24, 449, 21)
    $Input2 = GUICtrlCreateInput("", 96, 56, 449, 21)
    $Input3 = GUICtrlCreateInput("", 96, 88, 449, 21)
    $Input4 = GUICtrlCreateInput("", 96, 120, 449, 21)

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

    $Edit1 = GUICtrlCreateEdit("", 96, 160, 449, 321)
    GUICtrlSetData(-1, "")

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

    $Button1 = GUICtrlCreateButton("Speichern", 136, 504, 113, 20, 0)
    $Button2 = GUICtrlCreateButton("Beenden", 8, 504, 113, 20, 0)

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

    ;Form3
    $Form3 = GUICreate("Suche", 479, 185, 193, 125)

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

    $Label1 = GUICtrlCreateLabel("Suche", 8, 56, 35, 20)

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

    GUICtrlCreateInput("", 72, 56, 305, 21)

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

    GUISetState(@SW_SHOW, $Form1)

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

    While 1
    $Msg = GUIGetMsg(1)
    If $Msg[0] = $GUI_EVENT_CLOSE Then
    Switch $Msg[1]
    Case $Form1
    Exit
    Case $Form2
    GUISetState(@SW_HIDE, $Form2)
    Case $Form3
    GUISetState(@SW_HIDE, $Form3)
    EndSwitch
    EndIf

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

    ;Menü Neuer Eintrag
    If $Msg[0] = $MenuItem3 Then GUISetState(@SW_SHOW, $Form2)

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

    ;Menü Suche
    If $Msg[0] = $MenuItem4 Then GUISetState(@SW_SHOW, $Form3)

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

    ;Menü Beenden
    If $Msg[0] = $MenuItem2 Then Exit

    If $Msg[0] = $Button2 Then GUISetState(@SW_HIDE, $Form2)
    WEnd

    [/autoit]

    Die GUIs am besten immer am Anfang erstellen und dann mit @SW_SHOW und @SW_HIDE anzeigen/verstecken.

  • hiho,
    ich sag schon mal danke für den anfang, werd gleich weiter dran arbeiten....aber erstmal von der arbeit entspannen :)


    sieht ja schon sehr gut aus, funktioniert auch alles.

    denke jetzt gehts an langsam an die db. gibts da irgendwo ein tut für? ich weiß leider nicht wie ich damit anfangen könnte :S

    Einmal editiert, zuletzt von Emma-En (10. November 2008 um 15:45)

    • Offizieller Beitrag

    Man muss nicht unbedingt SQLite benutzen. Es geht auch mit einem 2D-Array und einer einfachen Datei. Ich habe Dein Script mal dahingehend ausgebaut:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GuiListView.au3>

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

    ;Form1
    $Form1 = GUICreate("DVD Archiv", 1034, 716, 195, 112)

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

    ;Auswahl
    $ListView1 = GUICtrlCreateListView("Film | Staffel | Genre | Darsteller | Beschreibung", 0, 54, 1033, 641)

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

    Global $aDVD[1][5] ;das Array, in dem das Archiv gespeichert wird
    Global $iDVDCounter = 0 ;Zähler, für die Anzahl der DVDs
    Global $sFilename = @ScriptDir & '\DVD-Archiv.txt' ;Dateiname der 'Datenbank'

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

    If FileExists($sFilename) Then _LoadDVDs()

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

    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen

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

    ;Menü
    $MenuItem1 = GUICtrlCreateMenu("Datei")
    $MenuItem3 = GUICtrlCreateMenuItem("Neuer eintrag", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenuItem("Suche", $MenuItem1)
    $MenuItem2 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem5 = GUICtrlCreateMenu("Hilfe")
    $MenuItem6 = GUICtrlCreateMenuItem("Hilfe", $MenuItem5)

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

    ;Form2
    $Form2 = GUICreate("Neuer Eintrag", 611, 544, 194, 118)

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

    $Label1 = GUICtrlCreateLabel("Film", 8, 32, 22, 17)
    $Label2 = GUICtrlCreateLabel("Staffel", 8, 64, 34, 20)
    $Label3 = GUICtrlCreateLabel("Genre", 8, 96, 33, 20)
    $Label4 = GUICtrlCreateLabel("Darsteller", 8, 128, 48, 20)
    $Label5 = GUICtrlCreateLabel("Beschreibung", 8, 160, 69, 20)

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

    Global $aInput[5]
    $aInput[0] = GUICtrlCreateInput("", 96, 24, 449, 21)
    $aInput[1] = GUICtrlCreateInput("", 96, 56, 449, 21)
    $aInput[2] = GUICtrlCreateInput("", 96, 88, 449, 21)
    $aInput[3] = GUICtrlCreateInput("", 96, 120, 449, 21)
    $aInput[4] = GUICtrlCreateEdit("", 96, 160, 449, 321)

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

    $Button1 = GUICtrlCreateButton("Speichern", 136, 504, 113, 20, 0)
    $Button2 = GUICtrlCreateButton("Beenden", 8, 504, 113, 20, 0)

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

    ;Form3
    $Form3 = GUICreate("Suche", 479, 185, 193, 125)

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

    $Label1 = GUICtrlCreateLabel("Suche", 8, 56, 35, 20)

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

    GUICtrlCreateInput("", 72, 56, 305, 21)

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

    GUISetState(@SW_SHOW, $Form1)

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

    While 1
    $Msg = GUIGetMsg(1)
    If $Msg[0] = $GUI_EVENT_CLOSE Then
    Switch $Msg[1]
    Case $Form1
    Exit
    Case $Form2
    GUISetState(@SW_HIDE, $Form2)
    Case $Form3
    GUISetState(@SW_HIDE, $Form3)
    EndSwitch
    EndIf

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

    ;Menü Neuer Eintrag
    If $Msg[0] = $MenuItem3 Then GUISetState(@SW_SHOW, $Form2)

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

    ;Menü Suche
    If $Msg[0] = $MenuItem4 Then GUISetState(@SW_SHOW, $Form3)

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

    ;Menü Beenden
    If $Msg[0] = $MenuItem2 Then Exit

    If $Msg[0] = $Button2 Then GUISetState(@SW_HIDE, $Form2); Fenster "Neuer Eintrag" schließen

    If $Msg[0] = $Button1 Then
    For $i = 0 To 4 ; Neue Einträge auslesen und ins Array übernehmen
    $aDVD[$iDVDCounter][$i] = GUICtrlRead($aInput[$i])
    GUICtrlSetData($aInput[$i], '')
    Next
    _SaveDVDs() ;Datenbank speichern
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1)) ;Listview löschen
    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen
    $iDVDCounter += 1 ;Zähler um 1 erhöhen
    ReDim $aDVD[$iDVDCounter + 1][5]
    EndIf
    WEnd

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

    Func _SaveDVDs()
    Local $sTemp
    Local $hFile = FileOpen($sFilename, 2+8)
    If $hFile <> -1 Then
    FileWriteLine($hFile, $iDVDCounter)
    For $i = 0 To $iDVDCounter
    $sTemp = ''
    For $j = 0 To 4
    $sTemp &= $aDVD[$i][$j] & '|'
    Next
    FileWriteLine($hFile, StringTrimRight($sTemp, 1))
    Next
    FileClose($hFile)
    EndIf
    EndFunc

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

    Func _LoadDVDs()
    Local $aTemp
    Local $hFile = FileOpen($sFilename, 0)
    If $hFile <> -1 Then
    $iDVDCounter = FileReadLine($hFile)
    ReDim $aDVD[$iDVDCounter + 1][5]
    For $i = 0 To $iDVDCounter
    $aTemp = StringSplit(FileReadLine($hFile), '|')
    For $j = 0 To 4
    $aDVD[$i][$j] = $aTemp[$j + 1]
    Next
    Next
    FileClose($hFile)
    EndIf
    EndFunc

    [/autoit]

    Ein paar Kommentare habe ich noch eingefügt, damit Du es leichter verstehen kannst. Die Suche kannst Du dann ja über _ArraySearch() realisieren.
    Falls Du noch Fragen hast, nur zu... :)

  • nochmal danke für die hilfe.

    und wieviel kann man über diese lösung speichern?

    mir ist noch eingefallen das ich auch etwas löschen muß....kann ja mal kaputt gehen, aber das bekomm ich irgendwie schon hin.

    ich werd mich jezt mal da durch büffeln um zu verstehen wies geht, danke ;)

  • ich geb zu, ich hab kein plan wie es geht, hab mir von bugfix seine udf's angesehen......aber es nützt nix, allein die suche war schon so lang das da irgendwie nix mehr stand (so wald vor lauter bäume nicht sehen).....

    die lösch funktion würd ich ja evtl noch hinbekommen....ich glaub da mach ich mich mal zuerst ran.....omg ?(

    • Offizieller Beitrag

    und wieviel kann man über diese lösung speichern?

    Also Arrays sind auf 2^24 (16.777.216) Einträge "begrenzt". Das dürfte somit wohl kein Problem darstellen. Bleibt noch die maximale Dateigröße, da es sich ja um nur eine Datei handelt. Kommt dann auf das Dateisystem an: Bei FAT32 ist die Dateigröße auf 4GB begrenzt. Ob die Datei aber wirklich so groß wird? Kannst Du ja mal durchrechnen, wieviel Bytes pro DVD benötigt werden und wie viele DVDs Du eingeben möchtest.

  • denke das sollte locker reichen.

    mal zum thema löschen wie ich mir das vorstelle.

    in der schleife

    if ;der markierte text, wenn das so geht then
    _Array2DDelete()
    endif


    funk __Array2DDelete()

    dann das script von bugfix einbauen

    aber was wäre in meinem fall die $ARRAY und die $iDEL?


    stell ich mir das so richtig vor oder ist das schon grundlegend falsch?

    grüße

    • Offizieller Beitrag

    Ohne Bugfixs UDF herabwürdigen zu wollen, aber in diesem Fall reichen auch die "Standard"-UDFs. :)

    Ich habe Dir mal einen "Löschen"-Button eingebaut:

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    #include<GUIConstantsEx.au3>
    #include<ListViewConstants.au3>
    #include <GUIConstants.au3>
    #include <GuiListView.au3>

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

    ;Form1
    $Form1 = GUICreate("DVD Archiv", 1034, 716, 195, 112)

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

    ;Auswahl
    $ListView1 = GUICtrlCreateListView("Film | Staffel | Genre | Darsteller | Beschreibung", 0, 54, 1033, 641, $LVS_SHOWSELALWAYS)

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

    Global $aDVD[1][5] ;das Array, in dem das Archiv gespeichert wird
    Global $iDVDCounter = 0 ;Zähler, für die Anzahl der DVDs
    Global $sFilename = @ScriptDir & '\DVD-Archiv.txt' ;Dateiname der 'Datenbank'

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

    If FileExists($sFilename) Then _LoadDVDs()

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

    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen
    $Button3 = GUICtrlCreateButton("Markierte Einträge löschen", 25, 25, 180, 20)

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

    ;Menü
    $MenuItem1 = GUICtrlCreateMenu("Datei")
    $MenuItem3 = GUICtrlCreateMenuItem("Neuer eintrag", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenuItem("Suche", $MenuItem1)
    $MenuItem2 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem5 = GUICtrlCreateMenu("Hilfe")
    $MenuItem6 = GUICtrlCreateMenuItem("Hilfe", $MenuItem5)

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

    ;Form2
    $Form2 = GUICreate("Neuer Eintrag", 611, 544, 194, 118)

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

    $Label1 = GUICtrlCreateLabel("Film", 8, 32, 22, 17)
    $Label2 = GUICtrlCreateLabel("Staffel", 8, 64, 34, 20)
    $Label3 = GUICtrlCreateLabel("Genre", 8, 96, 33, 20)
    $Label4 = GUICtrlCreateLabel("Darsteller", 8, 128, 48, 20)
    $Label5 = GUICtrlCreateLabel("Beschreibung", 8, 160, 69, 20)

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

    Global $aInput[5]
    $aInput[0] = GUICtrlCreateInput("", 96, 24, 449, 21)
    $aInput[1] = GUICtrlCreateInput("", 96, 56, 449, 21)
    $aInput[2] = GUICtrlCreateInput("", 96, 88, 449, 21)
    $aInput[3] = GUICtrlCreateInput("", 96, 120, 449, 21)
    $aInput[4] = GUICtrlCreateEdit("", 96, 160, 449, 321)

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

    $Button1 = GUICtrlCreateButton("Speichern", 136, 504, 113, 20)
    $Button2 = GUICtrlCreateButton("Beenden", 8, 504, 113, 20)

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

    ;Form3
    $Form3 = GUICreate("Suche", 479, 185, 193, 125)

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

    $Label1 = GUICtrlCreateLabel("Suche", 8, 56, 35, 20)

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

    GUICtrlCreateInput("", 72, 56, 305, 21)

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

    GUISetState(@SW_SHOW, $Form1)

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

    While 1
    $Msg = GUIGetMsg(1)
    If $Msg[0] = $GUI_EVENT_CLOSE Then
    Switch $Msg[1]
    Case $Form1
    Exit
    Case $Form2
    GUISetState(@SW_HIDE, $Form2)
    Case $Form3
    GUISetState(@SW_HIDE, $Form3)
    EndSwitch
    EndIf

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

    ;Menü Neuer Eintrag
    If $Msg[0] = $MenuItem3 Then GUISetState(@SW_SHOW, $Form2)

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

    ;Menü Suche
    If $Msg[0] = $MenuItem4 Then GUISetState(@SW_SHOW, $Form3)

    If $Msg[0] = $Button3 Then
    $aItems = _GUICtrlListView_GetSelectedIndices(GUICtrlGetHandle($ListView1), True)
    For $i = 1 To $aItems[0]
    _ArrayDelete($aDVD, $aItems[$i])
    Next
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1)) ;Listview löschen
    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen
    $iDVDCounter -= $aItems[0]
    EndIf
    ;Menü Beenden
    If $Msg[0] = $MenuItem2 Then Exit

    If $Msg[0] = $Button2 Then GUISetState(@SW_HIDE, $Form2); Fenster "Neuer Eintrag" schließen

    If $Msg[0] = $Button1 Then
    For $i = 0 To 4 ; Neue Einträge auslesen und ins Array übernehmen
    $aDVD[$iDVDCounter][$i] = GUICtrlRead($aInput[$i])
    GUICtrlSetData($aInput[$i], '')
    Next
    _SaveDVDs() ;Datenbank speichern
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1)) ;Listview löschen
    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen
    $iDVDCounter += 1 ;Zähler um 1 erhöhen
    ReDim $aDVD[$iDVDCounter + 1][5]
    EndIf
    WEnd

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

    Func _SaveDVDs()
    Local $sTemp
    Local $hFile = FileOpen($sFilename, 2+8)
    If $hFile <> -1 Then
    FileWriteLine($hFile, $iDVDCounter)
    For $i = 0 To $iDVDCounter
    $sTemp = ''
    For $j = 0 To 4
    $sTemp &= $aDVD[$i][$j] & '|'
    Next
    FileWriteLine($hFile, StringTrimRight($sTemp, 1))
    Next
    FileClose($hFile)
    EndIf
    EndFunc

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

    Func _LoadDVDs()
    Local $aTemp
    Local $hFile = FileOpen($sFilename, 0)
    If $hFile <> -1 Then
    $iDVDCounter = FileReadLine($hFile)
    ReDim $aDVD[$iDVDCounter + 1][5]
    For $i = 0 To $iDVDCounter
    $aTemp = StringSplit(FileReadLine($hFile), '|')
    For $j = 0 To 4
    $aDVD[$i][$j] = $aTemp[$j + 1]
    Next
    Next
    FileClose($hFile)
    EndIf
    EndFunc

    [/autoit]
  • habe da noch etwas umgebaut. was ihr nicht wissen konntet, ich hab da noch ein logo eingebaut. das heißt, ich hab datei->eintrag löschen für markierte einträge löschen ersetzt. funktionieren tut es, aber das blöde fenster popt beim starten immer auf.

    aktuell siehts dann also so aus

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    #include<GUIConstantsEx.au3>
    #include<ListViewConstants.au3>
    #include <GUIConstants.au3>
    #include <GuiListView.au3>

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

    ;Form1
    $Form1 = GUICreate("DVD Archiv", 1034, 716, 195, 112)
    $Logo = GUICtrlCreatePic(@ScriptDir & "\DVD Archiv Logo.bmp", 0, 10, 1034, 40)
    GUISetState($Logo)

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

    ;Auswahl
    $ListView1 = GUICtrlCreateListView("Film | Staffel | Genre | Darsteller | Beschreibung", 0, 54, 1033, 641)

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

    Global $aDVD[1][5] ;das Array, in dem das Archiv gespeichert wird
    Global $iDVDCounter = 0 ;Zähler, für die Anzahl der DVDs
    Global $sFilename = @ScriptDir & '\DVD-Archiv.txt' ;Dateiname der 'Datenbank'

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

    If FileExists($sFilename) Then _LoadDVDs()

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

    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen

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

    ;Menü->Datei
    $MenuItem1 = GUICtrlCreateMenu("Datei")
    $MenuItem3 = GUICtrlCreateMenuItem("Neuer eintrag", $MenuItem1)
    $MenuItem8 = GUICtrlCreateMenuItem("Eintrag bearbeiten", $MenuItem1)
    $MenuItem4 = GUICtrlCreateMenuItem("Suche", $MenuItem1)
    $MenuItem7 = GUICtrlCreateMenuItem("Eintrag Löschen", $MenuItem1)
    $MenuItem2 = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem5 = GUICtrlCreateMenu("Hilfe")
    $MenuItem6 = GUICtrlCreateMenuItem("Hilfe", $MenuItem5)

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

    ;Form2
    $Form2 = GUICreate("Neuer Eintrag", 611, 544, 194, 118)

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

    $Label1 = GUICtrlCreateLabel("Film", 8, 32, 22, 17)
    $Label2 = GUICtrlCreateLabel("Staffel", 8, 64, 34, 20)
    $Label3 = GUICtrlCreateLabel("Genre", 8, 96, 33, 20)
    $Label4 = GUICtrlCreateLabel("Darsteller", 8, 128, 48, 20)
    $Label5 = GUICtrlCreateLabel("Beschreibung", 8, 160, 69, 20)

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

    Global $aInput[5]
    $aInput[0] = GUICtrlCreateInput("", 96, 24, 449, 21)
    $aInput[1] = GUICtrlCreateInput("", 96, 56, 449, 21)
    $aInput[2] = GUICtrlCreateInput("", 96, 88, 449, 21)
    $aInput[3] = GUICtrlCreateInput("", 96, 120, 449, 21)
    $aInput[4] = GUICtrlCreateEdit("", 96, 160, 449, 321)

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

    $Button1 = GUICtrlCreateButton("Speichern", 136, 504, 113, 20, 0)
    $Button2 = GUICtrlCreateButton("Beenden", 8, 504, 113, 20, 0)

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

    ;Form3
    $Form3 = GUICreate("Suche", 479, 185, 193, 125)

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

    $Label1 = GUICtrlCreateLabel("Suche", 8, 56, 35, 20)

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

    $Suche = GUICtrlCreateInput("", 72, 56, 305, 21)

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

    $Button3 = GUICtrlCreateButton("Suche", 8, 140, 75, 20)

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

    ;Form4
    $Form4 = GUICreate("Löschen", 197, 114, 193, 125)

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

    $Button3 = GUICtrlCreateButton("Löschen", 96, 56, 75, 20, 0)

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

    $Label1 = GUICtrlCreateLabel("Eintrag löschen", 56, 24, 77, 17)

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

    $Button4 = GUICtrlCreateButton("Abbrechen", 8, 56, 75, 20, 0)

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

    GUISetState(@SW_SHOW, $Form1) ;Das Fenster "Form1" anzeigen. Die anderen sind (noch) versteckt

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

    While 1
    $Msg = GUIGetMsg(1)
    If $Msg[0] = $GUI_EVENT_CLOSE Then
    Switch $Msg[1]
    Case $Form1
    Exit
    Case $Form2
    GUISetState(@SW_HIDE, $Form2)
    Case $Form3
    GUISetState(@SW_HIDE, $Form3)
    Case $Form4
    GUISetState(@SW_HIDE, $Form4)
    EndSwitch
    EndIf

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

    ;Forms anzeigen
    If $Msg[0] = $MenuItem3 Then GUISetState(@SW_SHOW, $Form2);Datei->Neuer Eintrag
    If $Msg[0] = $MenuItem4 Then GUISetState(@SW_SHOW, $Form3);Datei->Suche
    If $Msg[0] = $MenuItem7 Then GUISetState(@SW_SHOW, $Form4);Datei->Eintrag löschen

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

    ;Datei->Eintrag löschen
    If $Msg[0] = $Button3 Then

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

    $aItems = _GUICtrlListView_GetSelectedIndices(GUICtrlGetHandle($ListView1), True)
    For $i = 1 To $aItems[0]
    _ArrayDelete($aDVD, $aItems[$i])
    Next
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1)) ;Listview löschen
    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen
    $iDVDCounter -= $aItems[0]
    EndIf

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

    ;Datei->Beenden
    If $Msg[0] = $MenuItem2 Then Exit;Datei->Beenden->schließen
    If $Msg[0] = $Button2 Then GUISetState(@SW_HIDE, $Form2); Fenster "Neuer Eintrag" schließen
    If $Msg[0] = $Button4 Then GUISetState(@SW_HIDE, $Form4);Fenster "Eintrag löschen" schließen

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

    ;Datei->Neuer Eintrag->speichern
    If $Msg[0] = $Button1 Then
    For $i = 0 To 4 ; Neue Einträge auslesen und ins Array übernehmen
    $aDVD[$iDVDCounter][$i] = GUICtrlRead($aInput[$i])
    GUICtrlSetData($aInput[$i], '')
    Next
    _SaveDVDs() ;Datenbank speichern
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1)) ;Listview löschen
    _GUICtrlListView_SetItemCount($ListView1, $iDVDCounter + 1) ;Platz reservieren im Listview
    _GUICtrlListView_AddArray($ListView1, $aDVD) ;das Array im Listview anzeigen
    $iDVDCounter += 1 ;Zähler um 1 erhöhen
    ReDim $aDVD[$iDVDCounter + 1][5]
    EndIf
    WEnd

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

    Func _SaveDVDs()
    Local $sTemp
    Local $hFile = FileOpen($sFilename, 2 + 8)
    If $hFile <> -1 Then
    FileWriteLine($hFile, $iDVDCounter)
    For $i = 0 To $iDVDCounter
    $sTemp = ''
    For $j = 0 To 4
    $sTemp &= $aDVD[$i][$j] & '|'
    Next
    FileWriteLine($hFile, StringTrimRight($sTemp, 1))
    Next
    FileClose($hFile)
    EndIf
    EndFunc ;==>_SaveDVDs

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

    Func _LoadDVDs()
    Local $aTemp
    Local $hFile = FileOpen($sFilename, 0)
    If $hFile <> -1 Then
    $iDVDCounter = FileReadLine($hFile)
    ReDim $aDVD[$iDVDCounter + 1][5]
    For $i = 0 To $iDVDCounter
    $aTemp = StringSplit(FileReadLine($hFile), '|')
    For $j = 0 To 4
    $aDVD[$i][$j] = $aTemp[$j + 1]
    Next
    Next
    FileClose($hFile)
    EndIf
    EndFunc ;==>_LoadDVDs

    [/autoit]

    Edit Oscar: AutoIt-Tags gesetzt und das eine GUISetState entfernt. Bitte zusätzlich zum Spoiler auch die AutoIt-Tags benutzen!

    hat sich ja eigentlich fast nichts verändert.

    ich finds klasse wenn man mal so eben mir nichts dir nichts die funktionen einbauen kann, respekt dafür.

    grüße

    2 Mal editiert, zuletzt von Oscar (11. November 2008 um 04:06)

  • hallo,

    jetzt wollt ich auch noch die einträge sortieren, geht das so?

    Spoiler anzeigen
    [autoit]


    If _ArraySort($aInput[0]);für die filmsortierung Then
    _ArrayDisplay($Listview1);hier soll es angezzeigt werden
    EndIf

    [/autoit]

    denke irgendwie nicht das es richtig ist...

    ich vermute mal das es in die while schleife rein muß, da es ja ständig abgefragt werden muß.
    jetzt soll man aber nach film, staffel, genre und darsteller jeweils nach abc sortiert werden.....

  • Hi,

    ich hab auch unabhängig mal ein paar Zeilen geschrieben..
    Das ist aber wirklich quick an dirty :D
    Bitte nicht über die Buttons lachen... :rolleyes:

    Ist mit Sqlite Datenbank und zum einbinden von Covern zum Film.. Wollte die Cover eigentlich in den Blob von Sqlite speichern, aber vorübergehen werden die noch als Dateien gespeichert und nur der Link zu Datei in der Datenbank. Ich werde vielleicht noch eine Anbindung an IMDB basteln, wenn das klappt. Dann soll nur noch der Titel angegeben werden und alles anderen Informationen werden aus der db geholt.

    P.s. ich weiß dass noch massenhaft Fehler drin sind! Wollte nur mal zum vergleich zur Text File Version zeigen.

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---