zwischenablage

  • hallo,
    wenn ich zb. in meiner zwischenablage ( ClipPut ) das hier stehen habe "123 Hallo" und wenn ich sie dann wieder auslese ( ClipGet() ) kommt ja das gleiche.
    jetzt meine frage, wie könnte ich es anstellen, das ich nur das "Hallo" bekomme?

    die zahlen sind nicht immer nur drei stück, es können auch mal 5 oder 7 sein.
    das gleiche gild für das "hallo", das kann auch mal länger sein "hallo du".
    wenn es immer gleich wäre, hätte ich das mit ( Stringxxx) lösen können.

    Doktore

  • Hi Doktor,

    wie sieht das in der Zwischenablage denn aus, ist zwischen den Wörtern immer ein Leerzeichen, brauchst du immer das zweite, oder dritte Wort? Ich meine, gibt es irgendetwas, das immer gleich ist? Oder willst du einfach nur die Zahlen nicht haben?

    Einmal editiert, zuletzt von rabbit (12. Mai 2006 um 19:38)

  • na dann kannst du doch mit

    $pos =StringInStr(ClipGet(),"|")

    nach der Position des " | "Suchen, und mit StringLeft oder StringRight den Teil ab der Position auslesen den du willst.

    Falls ich dich richtig verstanden habe.

  • Dann ist das Ganze doch kein Problem mehr:

    Code
    $arrIrgendWas=StringSplit(ClipGet(), "|")

    sollte eigentlich klappen..
    Gruß
    ytwinky
    [Edit]
    Ooops, rabbit war schneller..

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

    Einmal editiert, zuletzt von ytwinky (12. Mai 2006 um 19:58)

  • also wenn ich es von links auswerden will geht es super :)

    aber ich muss es von rechts auswerden lasen und da komm ich nicht klar.
    laut hilfe sollte es doch so gehen, aber wo ist da mein denkfehler?

    Code
    $location = StringInStr("123|hallo", "|", 0, -1)
    MsgBox(0, "Search result:", $location)

    ach ja, wieso wird der au3 code nimmer farbig dargestellt?

    Doktore

    • Offizieller Beitrag

    Hallo

    StringInStr gibt nur zurück wo z.b. | liegt also musst du noch eine ZusatzFunktion einbauen StringTrimLeft! So sieht es denn aus:

    Code
    $clip = "123|hallo";Bzw ClipGet()
    $text = StringTrimLeft($clip,StringInStr($clip,"|"))
    MsgBox(0,"",$text)

    Mfg Spider
    P.S.: der Code wird momentan von Gun-Food überarbeitet
    Edit: Du kannst auch statt ClipGet/ClipPut EnvGet/EnvSet nehmen. dann musst du die Zwischenablage nicht verwenden!

  • hehe, danke so geht es :)

    aber das geht ja auch und da ich es von rechts wollte kam ich nicht klar :(

    Code
    $lol1 = "123|hallo"
    			$lol2 = StringInStr($lol1,"|",0,1)
    			$result = StringLeft($lol1, $lol2)
    			MsgBox(16, "inhalt", $result)

    Doktore

  • also, irgend wie hab ich das ganze wohl immer noch nicht kappiert.
    hier mal mein nicht wissen :(

    Code
    $var = "C:\ordner1\ordner2\ordner3\test.exe"
    $text = StringRight($var,StringInStr($var,"\"))
    MsgBox(0,"",$text)

    ich will das unter $text = "test.exe" haben.
    wieso kommt da aber nur "exe"?

    Doktore

    • Offizieller Beitrag

    Hallo,

    StringRight gibt die Anzahl der Zeichen von rechts aus, du suchst nach dem 1. Vorkommen von "\" (=pos. 3) d.h. 3 Zeichen von rechts = "exe"!

    richtig wäre es so:

    Code
    $var = "C:\ordner1\ordner2\ordner3\test.exe"
    $text = StringRight($var,Stringlen($var) - StringInStr($var,"\",0,-1))
    MsgBox(0,"",$text)


    oder so:

    Code
    $var = "C:\ordner1\ordner2\ordner3\test.exe"
    $text = StringTrimLeft($var,StringInStr($var,"\",0,-1))
    MsgBox(0,"",$text)


    oder so:

    Code
    $var = "C:\ordner1\ordner2\ordner3\test.exe"
    $text = StringMid($var,StringInStr($var,"\",0,-1)+1)
    MsgBox(0,"",$text)

    ...