_StringBetween Hilfe

  • Moin zusammen,

    Da bin ich wieder :D

    Also da mich AutoIt immer mehr interessiert, bin ich mal ein wenig am testen und so auf die Funktion _StringBetween gestossen. Da ich diese als brauchbar gefunden habe wollte ich die doch mal ausprobieren! Naja, es klappt nicht. Hier mal mein Beispiel

    [autoit]

    #include <GUIConstants.au3>
    #include <String.au3>

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

    $file = FileOpen("c:\test2.txt", 0)
    $test = _StringBetween ($file,"a", "b")
    If $test = 0 Then
    MsgBox(0, "Wert nicht erkannt", $test )
    ElseIf @error = -1 Then
    MsgBox(0, "","@error")
    Else

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

    MsgBox(0, "Wert:", $test[0] )

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

    EndIf

    [/autoit]

    Die Datei test2.txt enthält nichts anderes wie : adudub
    Sinnvoller Text nicht wahr. Is ja nur zum testen.

    Als Rückgabewert erhalte ich immer 0 also Failure.

    Kannm mir mal einer sagen was ich da falsch mache??

    4 Mal editiert, zuletzt von MrB (12. Dezember 2008 um 21:42)

  • FileOpen öffnet nur die File. Brauchst noch FileRead um den Inhalt auszulesen ;)

    Sprich so:

    [autoit]

    #include <GUIConstants.au3>
    #include <String.au3>

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

    $file = FileOpen("C:\test2.txt", 0)
    $fileread = FileRead($file)
    $test = _StringBetween($fileread, "a", "b")
    If $test = 0 Then
    MsgBox(0, "Wert nicht erkannt", $test)
    ElseIf @error = -1 Then
    MsgBox(0, "", "@error")
    Else
    MsgBox(0, "Wert:", $test[0])
    EndIf

    [/autoit]
  • Hmmm, da ändert sich bei mir nix. Bleibt bei 0

    Stimmt nicht! Ich hab mal just for fun dein Bsp. kopiert und gestartet und siehe da es geht! Mal vergleichen

    Hab´s ! hatte vergessen $file auf $fileread zu ändern funzt jetzt

    THX

    Einmal editiert, zuletzt von MrB (12. Dezember 2008 um 20:55)

    • Offizieller Beitrag

    _StringBetween liefert bei Erfolg auch ein Array zurück. Du musst also testen, ob das Ergebnis ein Array ist:

    [autoit]


    #include<Array.au3>
    #include<String.au3>

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

    $hFile = FileOpen("c:\test2.txt", 0)
    $sFile = FileRead($hFile)
    FileClose($hFile)
    $test = _StringBetween($sFile, "a", "b")
    If IsArray($test) Then
    _ArrayDisplay($test)
    Else
    MsgBox(0, "Wert nicht erkannt", $test)
    EndIf

    [/autoit]
  • Noch eine kurze Frage :

    Es wird oft das Zeichen ' benutzt anstatt ".

    Was ist das für ein Zeichen ( Shift+# ????) und welchen ASCII DEZ Code hat es??

  • Hmmm, wenn ich folgendes benutze:

    [autoit]


    $test = _StringBetween($fileread, "var currenttime =", "" & Chr(39))

    [/autoit]

    Dann trennt er aber nicht bei diesem Zeichen ' sondern erst beim nächsten ".
    Die Zeile die ich trennen will sieht so aus:

    Code
    var currenttime = 'December 12, 2008 21:16:52'

    Will davon nur December 12, 2008 21:16:52 haben.

  • Genau das geht nicht ! Hatte ich auch schon getestet. Als Rückgabe kommt 0 sonst nix

    Deswegen hatte ich erstmal die ' weggelassen weil ich nichts damit anfangen konnte