AutoIt stürzt ab

  • Hiho, ich bins nochmal.
    ich bin etwas verwirrt, habe 2 ähnliche funktionen, eine funktioniert, bei der anderen schmiert AutoIt ab, ich weiss aber nicht warum. kann mir wer helfen?

    Funktion geht:

    [autoit]

    Func _FileOpenDB()
    $FileOpen = FileOpenDialog("Select File", @ScriptDir & "\", "DB (*.DB)", 3, "HD_Movie.DB")
    If Not @error Then
    _OpenDB($FileOpen)
    Else
    $DB = FileSaveDialog("Create New DB", @ScriptDir & "\", "DB (*.DB)", 18)
    If @error Then
    Exit
    Else
    _SQLite_Close ()
    $DB_Handle = _SQLite_Open ($DB)
    If @error > 0 Then
    MsgBox(16, "SQLite Error", "Can't Load Database!")
    Exit - 1
    EndIf
    _SQLite_Exec ( -1, "Create Table Movie_DB (Title, Location, Size, Video, Video2, Audio, Audio2, Codec, Extension, Jahr, Files);")
    GUICtrlSetData($List, "")
    $d = _SQLite_Exec(-1,"Select Title From Movie_DB","_InsertTitle")
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Funktion geht nicht:

    [autoit]

    Func _CreateDB()
    $DB = FileSaveDialog("Create New DB", @ScriptDir & "\", "DB (*.DB)", 18)
    If @error Then
    Else
    _SQLite_Close ()
    $DB_Handle = _SQLite_Open ($DB)
    If @error > 0 Then
    MsgBox(16, "SQLite Error", "Can't Load Database!")
    Else
    _SQLite_Exec (-1, "Create Table DB (Title, Genre, Year, Location, Comment, Source, Resolution, Size, Codec, Extension, Audio, Language, Files, Rating, Icon);")
    If Not @error Then
    $PS = _Pathsplit1($DB)
    GUICtrlSetData($List, "")
    GUICtrlSetData($Input1, "Entrys: 0")
    GUICtrlSetData($Input2, "DB loaded: " & $PS[5])
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]

    hab ich was auf den augen?

  • Hi,
    genau das und was ist denn die Fehlermelung? Das hilft uns einiges besser. Ich schreibe meine Scripte immer mit SciTE und da bekomme ich beim starten der Scripte immer direkt ne aussagekräftige Fehlermeldung.
    Nur so ein Tip

    MfG
    Der_Doc

  • hiho,

    sorry, hätte ich vllt dazuschreiben sollen.

    beim check kommt kein fehler

    Spoiler anzeigen
    [autoit]

    >"O:\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /prod /AU3Check /in "O:\AutoScrIpTs\HDataBase\HDataBase.au3"
    +>08:13:17 Starting AutoIt3Wrapper v.1.10.1.14 Environment(Language:0409 Keyboard:00000407 OS:WIN_XP/Service Pack 2 CPU:X86 ANSI)
    >Running AU3Check (1.54.13.0) from:O:\AutoIt3
    +>08:13:18 AU3Check ended.rc:0
    +>08:13:18 AutoIt3Wrapper Finished
    >Exit code: 0 Time: 1.733

    [/autoit]

    das hinter dem else kein befehl kommt, ist kein fehler, es soll einfach nix gemacht werden. das hatte ich mal getestet weil mir sonst nix mehr eingefallen ist, vorher sah die zeile so aus (was aber keinen unterschied macht):

    [autoit]

    If Not @error then

    [/autoit]

    Fehlermeldung ist:

    [autoit]

    !>08:18:56 AutoIT3.exe ended.rc:-1073741819

    [/autoit]

    das passiert, wenn ich die oben genannten funktion ausführe.
    rest, siehe Bild.

  • ah, gute idee :

    Code:

    [autoit]

    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    $DB = FileSaveDialog("Create New DB", @ScriptDir & "\", "DB (*.DB)", 18)
    If Not @error Then
    _SQLite_Close ()
    $DB_Handle = _SQLite_Open ($DB)
    If @error > 0 Then
    MsgBox(16, "SQLite Error", "Can't Load Database!")
    Else
    _SQLite_Exec (-1, "Create Table DB (Title, Genre, Year, Location, Comment, Source, Resolution, Size, Codec, Extension, Audio, Language, Files, Rating, Icon);")
    EndIf
    EndIf

    [/autoit]

    Fehlermeldung:

    [autoit]

    >Running:(3.2.12.1):O:\AutoIt3\autoit3.exe "O:\AutoScrIpTs\test.au3"
    >Error code: 0

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

    @@ Trace(4) : $DB = FileSaveDialog("Create New DB", @ScriptDir & "\", "DB (*.DB)", 18)
    >Error code: 0

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

    @@ Trace(7) : _SQLite_Close ()
    >Error code: 2

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

    @@ Trace(9) : $DB_Handle = _SQLite_Open ($DB)
    !>10:49:51 AutoIT3.exe ended.rc:-1073741819
    +>10:49:52 AutoIt3Wrapper Finished
    >Exit code: -1073741819 Time: 5.308

    [/autoit]

    EDIT:

    was ich nicht verstehe, bei FileSaveDialog soll er ja weitergehen, wenn KEIN error besteht, er legt aber keine datei an ... sqlite_close mit error ist i. O. da zu dem zeitpunkte deine db geladen ist.
    bei sqlite_open stürzt er wohl dann ab ... wobei da ja eigentlich ne msgbox kommen soll oO

    aber warum geht FileSaveDialog nicht, bei meinem anderen bsp oben (was nichts anderes ist) geht es doch auch oO

  • du musst scheinbar erst das SQL-Lite starten damit er die Funktionen nutzen kann dann läuft auch der Rest

    [autoit]

    _SQLite_Startup()

    [/autoit]


    Vielleicht noch zusätzlich ne Abfrage ob die Datei-Endung *.DB angegeben wurde und dann sollte das laufen.

    Just Edith's 2Cents:
    liefert FileSaveDialog nicht bloß den Pfad/Handle zurück die Datei wird wahrscheinlich erst angelegt wenn er wirklich was damit anstellt

  • ah, thx, guter hinweis ... das hatte ich im anderen script direkt oben ins script geschrieben, darum ist mir das nicht aufgefallen.
    die datei sollte aber von der funktion angelegt werden, bei der anderen funktion klappt dies auf jeden fall ...

    big thx =)

    EDIT: klappt definitiv, wobei das mit dem anlegen kann auch der sql_exec befehl sein, der die datei anlegt, bzw. vorher wird keine angelegt, es muss so sein =)