Back Button

  • Hallöle...

    Mhm zu meinem Dateibrowser fehlt nun abschließent noch ein Zurückbutton.

    So ist es nicht möglich das ich zb alles lösche bis zu einem bestimmten Zeichen?

    Also ich meine das so:

    ich habe einen Pfad: I:\DV\dv3

    gleichzeitig bin ich mit meinem Script in diesem Pfad.
    So wenn ich nun auf den Zurückbutton klicke soll er alles bis zum letzten Backslash löchen also dann soll es nachher nurnoch I:\Dv\ sein...

    es wäre nicht zu kompliziert wenn sich die länge der bezeichungen bis zum letzten Backslash nicht verändern würden.


    Wüsste einer von euch da eine Lösung?

  • Aos sorry hatte ich nicht gefunden trotzdem Danke =)

    EDIT:
    Also ganz funktioniert es noch nicht
    Fehler ist folgender:

    Er geht bis zum Ersten backslash von Links.. das heißt er löscht dann nur 3 Zeichen von Rechts.

    Wenn ich nun aber den Pfad I:\DV\dv3\scripte habe
    gibt er mir nachher "I:\DV\dv3\scri "aus

    Einmal editiert, zuletzt von Aiden (16. Oktober 2006 um 15:39)

    • Offizieller Beitrag
    [autoit]

    StringTrimRight($text,StringInStr($text,"\",0,-2)+1)

    [/autoit]


    Sorry, aber die Syntax ist falsch. So klappt es nur für genau diesen Fall .
    Richtig ist:

    [autoit]

    StringTrimRight($text,$Anzahl_Zeichen)
    ;also
    $text = "I:\DV\dv3\scripte"
    StringTrimRight($text,StringLen($text)-StringInStr($text,"\", 0, -1))

    [/autoit]
    • Offizieller Beitrag

    HI,

    ich dachte so:

    [autoit]

    $text = "I:\DV\dv3\scripte\"
    $text1 = "I:\DV\dv3\scripte"
    $text2 = "\\DV\dv3\scripte\dsd dsad\bla..exe"
    $text3 = "..\DV\dv3\scripte\hugo - adsd"

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

    MsgBox(0,"GTA",StringTrimRight($text,StringInStr($text,"\",0,-2)+1) & @LF & _
    StringTrimRight($text1,StringInStr($text1,"\",0,-2)+1) & @LF & _
    StringTrimRight($text2,StringInStr($text2,"\",0,-2)+1) & @LF & _
    StringTrimRight($text3,StringInStr($text3,"\",0,-2)+1))

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

    MsgBox(0,"Mega", StringLeft($text, StringInStr($text, "\", Default, -1)) & @LF & _
    StringLeft($text1, StringInStr($text1, "\", Default, -1))& @LF & _
    StringLeft($text2, StringInStr($text2, "\", Default, -1))& @LF & _
    StringLeft($text3, StringInStr($text3, "\", Default, -1)))

    [/autoit]

    So long,

    Mega

  • das funktioniert noch nicht alles so wie es gelpant war... aber ihr habt mich schon in die richtige richtung gebracht werde mich da mal weiter hinlesen.

    Wenn ich noch Fragen habe kann ich doch sicher wieder auf euch zurückkommen oder? X)


    EDIT:

    Also die Lösung von BugFix ist ja schon der richtige Ansatz..

    Nur ist es nun so das bei StringInStr der "Occurance" wert von Links aus geht... passend wäre es wenn er aber von Rechts aus gehen würde... ist es nich möglich das umszustellen?

    Einmal editiert, zuletzt von Aiden (17. Oktober 2006 um 08:41)

    • Offizieller Beitrag
    [autoit]

    StringInStr ( "string", "substring" [, casesense [, occurrence]] )

    [/autoit]


    casesense = 0 (default) - nicht sensitiv / 1 - sensitiv (beachtet Groß- und Kleinschreibung)
    occurrence = 1 (default) - wievielte Übereinstimmung von links / bei negativer Zahl: Übereinstimmung von rechts

  • Also er tut nur das was ich will wenn ich ihm einen festeb Pfad gebe
    Ich hab nen kleines Script geschrieben welches diese Kunction testet

    [autoit]


    #include <String.au3>

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

    $pfad = "I:\DV\dv3\scripte\BrowseNet"
    $string = StringInStr($pfad, "\", 0, -2)
    $output = StringTrimRight($pfad, $string)

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

    MsgBox(16, "Ergebnis", $string & @CRLF & $output)

    [/autoit]

    So funktioniert es ja...

    aber das der pfad Variabel ist kann er ja auch C:\lxy oder sonstwie heißen...

    so ich hab dann getestet den Pfad umzutauschen in "I:\DV\dv3\scripte"
    bei den gleichen einstellungen. Dann haut er mir aber wieder alles drucheinander

    • Offizieller Beitrag

    Also StringInString ermittelt eine Position im String.
    Um jetzt den Teil links von dieser Position auszugeben, hast du zwei Möglichkeiten:
    Bsp.

    [autoit]

    $text = "d:\abc\123\efg.exe"
    StringInString($text, "\",0,-1) ;ergibt den Wert: 11 (11. Zeichen von links)

    [/autoit]


    Der Stringteil rechts davon ist also: Gesamtstringlänge - 11

    [autoit]

    $AnzahlZeichenReststring = StringLen($text) - StringInStr($text, "\",0,-1)

    [/autoit]


    oder gesamt:

    [autoit]

    ; Variante 1
    $teilStringLinks = StringTrimRight($text, $AnzahlZeichenReststring) ; ="d:\abc\123\"
    ; Variante 2
    $teilStringLinks = StringLeft($text, StringInStr($text, "\",0,-1)) ; ="d:\abc\123\"

    [/autoit]
  • hatte grade etwas gefunden nun funktioniert es so variabel wie ich es gern hätte:

    [autoit]


    $pfad = "I:\DV\dv3\scripte\BrowseNet"
    $string = StringInStr($pfad, "\",0, -1)
    $output = StringTrimLeft($pfad, $string)
    $len = StringLen($output)
    $output2 = StringTrimRight($pfad, $len+1)
    MsgBox(16, "Ergebnis", $string & @CRLF & $output2)

    [/autoit]

    Vielen Dank das ihr euch mal wieder mit mir rumgequält habt ^^ :keks:

    Einmal editiert, zuletzt von Aiden (17. Oktober 2006 um 09:39)

    • Offizieller Beitrag

    Warum so umständlich :)

    [autoit]

    $pfad = "I:\DV\dv3\scripte\BrowseNet"
    $string = StringInStr($pfad, "\",0, -1) ; gibt dir die Position im String
    ;$output = StringTrimLeft($pfad, $string) ; brauchst du nicht
    ;$len = StringLen($output) ; brauchst du nicht
    ;$output2 = StringTrimRight($pfad, $len+1) ; stattdessen:
    ; Ergebnis = Zeichen von links aus String $pfad, Anzahl (= Position Backslash-1)
    $output = StringLeft($pfad, $string-1)
    MsgBox(16, "Ergebnis", $output)

    [/autoit]


    oder alles in einem:

    [autoit]

    $pfad = "I:\DV\dv3\scripte\BrowseNet"
    MsgBox(16, "Ergebnis",StringLeft($pfad, StringInStr($pfad, "\",0, -1)-1))

    [/autoit]