Probleme mit RegRead bzw. Run

  • Ich habe hier einen Code, der mir Kopfzerbrechen bereitet. Ich habe absolut keine Ahnung, wo der Fehler liegt, mal davon abgesehen, dass mir der Errorcode 0 bei RegRead ausgegeben wird. Das gibt es laut Hilfe gar nicht.
    Problem: Ich lese einen RegKey aus, dieser ist ein Pfad mit Leerzeichen. Dieser bekommt dann noch Anführungszeichen verpasst, damit er ausgeführt wird, ohne Probleme zu machen.
    Beim ersten Mal kann er den Pfad nicht finden, soll auch so sein. Aber dann schreibt er ihn ja in die Registry. Beim zweiten Mal liest er ihn aus, und sollte in den Else-Block springen, aber er tut es nicht. Ich sehe den If-Block, die MessageBox mit Errorcode 0 und der korrekten Pfadangabe.
    Was läuft da schief?

    Spoiler anzeigen
    [autoit]


    $pfad = '"' & RegRead("HKLM\Software\DICEworks\TESCS", "Tecras ModTranslator") & '"'
    If $pfad = @error Then
    MsgBox(0, @error, $pfad) ;<-- Errorcode 0??
    $pfad = FileOpenDialog("TES CS++", @ScriptDir, "tecraModTranslator.exe (*.exe)")
    RegWrite("HKLM\Software\DICEworks\TESCS", "Tecras ModTranslator", "REG_SZ", $pfad)
    $pid = Run('"' & $pfad & '"')
    Else
    If FileExists($pfad) Then
    $pid = Run($pfad)
    Else
    $pfad = FileOpenDialog("TES CS++", @ScriptDir, "tecraModTranslator.exe (*.exe)")
    RegWrite("HKLM\Software\DICEworks\TESCS", "Tecras ModTranslator", "REG_SZ", $pfad)
    $pid = Run( '"' & $pfad & '"')
    EndIf
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von penta.phoenix (27. Dezember 2008 um 13:05)

  • Die Abfrage läuft falsch:
    If $pfad = @error Then
    um auf Fehler zu testen, nur @error verwenden. Dein Vergleich macht das:
    $pfad ist ein String -> wird in eine Zahl umgewandelt (String wird 0) , um ihn mit @error zu vergleichen
    -> 0 = 0 -> also true und der If wird ausgeführt.
    Di Fehlerabfrage geht immer so:
    If @error Then

    außerdem solltest du die Anführungszeichen bei $pfad = RegRead wegmachen. Die brauchst du nicht.

    Einmal editiert, zuletzt von progandy (27. Dezember 2008 um 13:17)