@CRLF hinzufügen geht nicht

  • Hi,
    irgendwie ist der Wurm drin. Kopiert etwas aus der Playlist von http://www.dradio.de/dlf/playlist/campus/1056432/ in den Zwischenspeicher. Der Zwischenspeicher soll ausgelesen werden und Titel und Interpret in einer Textdatei zeilenweise ausgegeben werden. MsgBox ZWISCHENSTAND zeigt noch alles in Zeilen an. Beim Notepad erscheint dagegen alles in einer Zeile. Keine Ahnung warum das so ist. Hat jemand eine Ahnung. Normalerweise sollte pro Zeile ein Interpret und ein Titel erscheinen. Gruß Jan

    [autoit]

    $aSp = StringSplit("'n |'n'|'s | in | at | by | so | it | the | an | on | is | my | in | a | of | I | he | up | MC | DJ | O | no. | op. | St ", "|")
    $ZwischenSpeicher = ClipGet()

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

    If StringInStr ($ZwischenSpeicher, 'Titel') >0 Then
    $Zw =''
    $ZwischenSpeicher = StringReplace ($ZwischenSpeicher, @CRLF, ' |')
    $aZw = StringSplit($ZwischenSpeicher, '|')
    For $i = 1 to $aZw[0]
    If StringInStr($aZw[$i], 'Titel') > 0 Then $Zw = $Zw & StringReplace($aZw[$i], 'Titel', '')
    If StringInStr($aZw[$i], 'Interpr') > 0 Then $Zw = $Zw & StringReplace($aZw[$i], 'Interpret', '') & @CRLF
    Next
    $ZwischenSpeicher = $Zw
    EndIf
    MsgBox(4096, 'Zwischenstand', $ZwischenSpeicher)

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

    For $i = 65 to 90
    $ZwischenSpeicher = StringReplace ($ZwischenSpeicher, Chr($i), ' ' & Chr($i), 0, 1 )
    Next

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

    For $i = 1 to 61
    $ZwischenSpeicher = StringReplace($ZwischenSpeicher, StringFormat('%02d',$i-1), '')
    If $i <= $aEx[0] then $ZwischenSpeicher = StringReplace($ZwischenSpeicher, $aEx[$i], '')
    If $i <= $aSp[0] then $ZwischenSpeicher = StringReplace($ZwischenSpeicher, $aSp[$i], ' ')
    Next
    $ZwischenSpeicher = StringStripWS ( $ZwischenSpeicher, 7)

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

    $h=FileOpen('c:\elume.sch', 1)
    FileWrite($h, $ZwischenSpeicher & @CRLF)
    FileClose ($h)
    Run('notepad c:\elume.sch')

    [/autoit]
  • Würde dir gerne helfen, nur leider gehe ich stark davon aus, dass du nicht dein komplettes script gepostet hast, weil mir beispielsweie schon variablendeklarationen fehlen. Und ich kann mir beim besten willen nicht herleiten was "$aEx" ist. Vor allem nicht zu solch unchristlichen Zeiten ;)

    • Offizieller Beitrag

    Löse es so, ist einfacher ;)

    Edit: Hab grad gesehen, du möchtest immer doppelte Leerzeichen haben. Hab das jetzt noch eingefügt und Ausgabe aller Titel der Playlist. Habe zusätzlich das Album mit aufgenommen, da teilweise kein Interpret in der Playlist enthalten ist.

    Spoiler anzeigen
    [autoit]

    $get = ClipGet() ; unbedingte gesamte Seite markieren (Strg+A, Strg+C)!
    $get = StringTrimRight($get, StringLen($get)-StringInStr($get, 'Hilfe | Impressum | Kontakt', 1, -1))
    $aInfo = StringSplit($get, 'Sendezeit:', 1)

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

    Local $aErgebnis[$aInfo[0]-1][3] ; [$i][0]=Titel, [$i][1]=Album, [$i][2]=Interpret
    Local $j = 0, $sWrite = ''
    For $i = 2 To UBound($aInfo) -1
    $ret = StringRegExp($aInfo[$i], 'Titel:?\s+([^\r]+)', 1)
    If Not @error Then $aErgebnis[$j][0] = $ret[0]
    $ret = StringRegExp($aInfo[$i], 'Album:?\s+([^\r]+)', 1)
    If Not @error Then $aErgebnis[$j][1] = $ret[0]
    $ret = StringRegExp($aInfo[$i], 'Interpret:?\s+([^\r]+)', 1)
    If Not @error Then $aErgebnis[$j][2] = $ret[0]
    $sWrite &= $j+1 & @CRLF & _
    StringReplace($aErgebnis[$j][0], ' ', ' ') & @CRLF & _
    StringReplace($aErgebnis[$j][1], ' ', ' ') & @CRLF & _
    StringReplace($aErgebnis[$j][2], ' ', ' ') & @CRLF & @CRLF
    $j += 1
    Next

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

    ConsoleWrite($sWrite & @CRLF) ; oder in Datei schreiben

    [/autoit]