Pfad zur Include-Datei selbst (innerhalb des Includes)

  • Hi,

    sorry, mir ist einfach keine bessere Überschrift eingefallen :D ...

    Vielleicht ist es nur ein kleines Problem, aber irgendwie komm ich nicht weiter:

    Kann man innerhalb einer Include-Datei den Pfad zu einem Unterverzeichnis relativ zur Include-Datei bestimmen? Ich möchte nämlich in dieser Include-Datei ein Bild anzeigen, welches unabhängig vom Pfad der Include-Datei sein soll.

    Klingt irgendwie verworren ,ich weiß :).

    Also nochmal: @ScriptDir liefert mir ja immer nur den Pfad zum Script, in welchem die Include-Datei eingebunden ist. Wie komme ich also innerhalb des Includes an den Pfad eines Unterverzeichnisses.

    Ok, es wird nicht besser, ich geb auf --- vielleicht versteht ja jemand was ich meine :)

    Gruß
    Trainer

    Einmal editiert, zuletzt von ip_trainer (19. Mai 2011 um 18:50) aus folgendem Grund: Hat sich erledigt ;-)

    • Offizieller Beitrag

    Kann man innerhalb einer Include-Datei den Pfad zu einem Unterverzeichnis relativ zur Include-Datei bestimmen? Ich möchte nämlich in dieser Include-Datei ein Bild anzeigen, welches unabhängig vom Pfad der Include-Datei sein soll.

    Ja was denn nun? - Hü oder Hott. Relativ und absolut zur selben Zeit wird wohl nix werden :D

  • Hi,

    stimmt relativ und absolut beißt sich irgendwie :rolleyes: ...

    Hier mal der Code um den es geht. Das Skript liegt in einem Verzeichnis, in dem (in einem Unterverzeichnis) die abzuspielenden AVIs liegen. Nur leider werden diese AVIs nicht gefunden, wenn das "includierende Skript" nicht auf gleicher Verzeichnisebene mit _splash.au3 liegt (was ja auch logisch ist).

    Gruß
    Trainer

    Splash-Include (_splash.au3):

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <AVIConstants.au3>

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

    Global $splash_on

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

    #cs ########################################################################

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

    Funktionsbeschreibungen

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

    splash_on ([style] [, fenstertitel [, text ]])

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

    Parameter: style (string) "small", "medium", "large"
    fenstertitel (string)
    text (string)

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

    -------------------------------------------------------------------

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

    splash_off (splash_hwnd)

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

    Parameter: splash_hwnd (string)

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

    #ce ########################################################################

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

    Func splash_on($style="medium", $fenstertitel= "Einen Moment, bitte...", $text="Das Programm wird geladen!")

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

    ;Nur einen Splash zulassen
    If $splash_on <> True Then

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

    If $style = "small" Then
    $splash_gui = GUICreate($fenstertitel, 240, 75, Default, Default, "", BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    $animation = GUICtrlCreateAvi(".\avi\loading_small.avi", 0, 30, 15, "", "", $ACS_NONTRANSPARENT)
    $splash_text = GUICtrlCreateLabel($text, 57, 16)

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

    ElseIf $style = "medium" Then
    $splash_gui = GUICreate($fenstertitel, 275, 100, Default, Default, "", BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    $animation = GUICtrlCreateAvi(".\avi\loading_medium.avi", 0, 25, 15, "", "", $ACS_NONTRANSPARENT)
    $splash_text = GUICtrlCreateLabel($text, 78, 31, 250)
    GUICtrlSetFont($splash_text, 9)

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

    ElseIf $style = "large" Then
    $splash_gui = GUICreate($fenstertitel, 325, 115, Default, Default, "", BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    $animation = GUICtrlCreateAvi(".\avi\loading_large.avi", 0, 20, 20, "", "", $ACS_NONTRANSPARENT)
    $splash_text = GUICtrlCreateLabel($text, 85, 34, 300)
    GUICtrlSetFont($splash_text, 12)
    Else
    Return False
    EndIf

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

    GUISetBkColor(0xFFFFFF)
    GUICtrlSetState($animation, $GUI_AVISTART)
    GUISetState(@SW_SHOW)

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

    $splash_on = True

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

    Return $splash_gui

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

    Else
    Return False
    EndIf

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

    EndFunc

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

    ;-----------------------------------------------------------
    Func splash_off($del_gui)

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

    If $splash_on = True Then

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

    If GUIDelete($del_gui) = 1 Then
    $splash_on = False
    Return True
    Else
    Return False
    EndIf

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

    Else
    Return False
    EndIf

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

    EndFunc

    [/autoit]


    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include-once
    #include "VERZEICHNIS\_splash.au3"

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

    $splash = splash_on("medium")
    Sleep(3000)
    splash_off($splash)

    [/autoit]

    Einmal editiert, zuletzt von ip_trainer (19. Mai 2011 um 18:29)

  • 8| Oh Mann,

    ich stelle gerade fest, dass mir das ja alles im Endeffekt gar nichts nützt. Falls ein Programm den Splash später mal verwenden will, muss das Verzeichnis mit den AVIs ja auch noch vorhanden sein. Dann bleibt wohl nur übrig, einen relativen Pfad mitzuübergeben und die Dateien "selbst bereitzustellen".

    Trotzdem Danke für Eure Hilfe...

    Gruß
    Trainer

    Hier nochmal die überarbeitete Version:

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <AVIConstants.au3>

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

    Global $splash_on

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

    #cs ########################################################################

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

    Funktionsbeschreibungen

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

    splash_on (avi_pfad, [, style] [, fenstertitel [, text ]])

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

    Parameter: avi_pfad (string)
    style (string) "small", "medium", "large"
    fenstertitel (string)
    text (string)

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

    -------------------------------------------------------------------

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

    splash_off (splash_hwnd)

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

    Parameter: splash_hwnd (string)

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

    #ce ########################################################################

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

    Func splash_on($avi_pfad, $style="medium", $fenstertitel= "Einen Moment, bitte...", $text="Das Programm wird geladen!")

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

    ;Nur einen Splash zulassen
    If $splash_on <> True Then

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

    ;Pfad bereinigen
    $avi_pfad = StringReplace($avi_pfad, "\", "")

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

    If $style = "small" Then
    $splash_gui = GUICreate($fenstertitel, 240, 75, Default, Default, "", BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    $animation = GUICtrlCreateAvi(@ScriptDir & "\" & $avi_pfad & "\loading_small.avi", 0, 30, 15, "", "", $ACS_NONTRANSPARENT)
    $splash_text = GUICtrlCreateLabel($text, 57, 16)

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

    ElseIf $style = "medium" Then
    $splash_gui = GUICreate($fenstertitel, 275, 100, Default, Default, "", BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    $animation = GUICtrlCreateAvi(@ScriptDir & "\" & $avi_pfad & "\loading_medium.avi", 0, 25, 15, "", "", $ACS_NONTRANSPARENT)
    $splash_text = GUICtrlCreateLabel($text, 78, 31, 250)
    GUICtrlSetFont($splash_text, 9)

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

    ElseIf $style = "large" Then
    $splash_gui = GUICreate($fenstertitel, 325, 115, Default, Default, "", BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    $animation = GUICtrlCreateAvi(@ScriptDir & "\" & $avi_pfad & "\loading_large.avi", 0, 20, 20, "", "", $ACS_NONTRANSPARENT)
    $splash_text = GUICtrlCreateLabel($text, 85, 34, 300)
    GUICtrlSetFont($splash_text, 12)
    Else
    Return False
    EndIf

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

    GUISetBkColor(0xFFFFFF)
    GUICtrlSetState($animation, $GUI_AVISTART)
    GUISetState(@SW_SHOW)

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

    $splash_on = True

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

    Return $splash_gui

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

    Else
    Return False
    EndIf

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

    EndFunc

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

    ;-----------------------------------------------------------
    Func splash_off($del_gui)

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

    If $splash_on = True Then

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

    If GUIDelete($del_gui) = 1 Then
    $splash_on = False
    Return True
    Else
    Return False
    EndIf

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

    Else
    Return False
    EndIf

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

    EndFunc

    [/autoit]


    Und hier das Beispiel:

    Spoiler anzeigen
    [autoit]

    #include-once
    #include "_splash.au3"

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

    $splash = splash_on("avi_files\", "large")
    Sleep(5000)
    splash_off($splash)

    [/autoit]
  • Weiß gar nicht ob ich Dein Problem richtig verstanden habe.

    Ich speichere alle Include-Dateien in ein Ordner auf LW-D und in der Registry habe ich den Pfad angegeben. Dann ist es egal, von wo aus ich die Include-Datei(n) aufrufe.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Danke für deine Antwort, Alina!

    Das war jedoch nicht wirklich das Problem.

    Es ist so schwer zu beschreiben was ich meine :P - aber es ist auch egal, es hat sich ja mittlerweile eh erledigt...