Hallo,
beim Erstellen von einer Textdatei tritt bei mir ständig ein Fehler auf, jedoch habe ich eine Ahnung, wo der genau herkommt.
Zunächst hole ich ein paar Daten von einer Internetseite mittels der FF.au3 und dem Befehl _FFXPath("...Pfad...", "textContent", 9).
Das Ergebniss lege ich dann in einer Variable ab.
Diese Variable verwende ich dann, um einen Pfad zu generieren. Das Ergebnis des Pfades lege ich dann in der Variable $sSpeicherpfad ab.
Um den einen gültigen Pfad zu erhalten habe ich eine separate Funktion geschrieben, welche den Pfad nun anpasst:
Spoiler anzeigen
Func _FileGetValidName($sString, $sPatern='[*?\\/|:<>"]', $sReplace='_')
Local $g
If StringStripWS($sString, = '' Then Return $sString
; alle Zeichen löschen, welche nicht darstellbar sind --> ASCI 0-31 & 127
For $g = 0 to 31
$sString = StringReplace($sString, Chr($g), "~")
Next
$sString = StringReplace($sString, Chr(127), "~")
$sString = StringRegExpReplace($sString, $sPatern, $sReplace)
Return SetExtended(@extended, StringRegExpReplace($sString, '(' & $sReplace & '+)', $sReplace))
EndFunc
Mit dem Pfad erstelle ich dann erstmal ein neues Verzeichnis mit DirCreate($sSpeicherpfad) .
Im Anschluss möchte ich eine Textdatei in dem Ordner erstellen. Der Code für diese beiden Operationen sieht wie folgt aus:
Spoiler anzeigen
; Ordner erstellen
If DirCreate($sSpeicherpfad) = 0 Then
MsgBox(64, "Fehler", "Das Erstellen des Verzeichnisses war nicht möglich." & @CRLF & $sSpeicherpfad)
Exit
EndIf
; Titelinformation in separater textdatei speichern
$fileHandle = FileOpen($sSpeicherpfad & "\titelinformationen.txt", 1+8)
If $fileHandle = -1 Then
MsgBox(0, "Fehler", "Die Datei 'titelinformationen.txt' konnte nicht geöffnet werden.")
Exit
Else
FileWriteLine($fileHandle, $arrBookDetails[0])
FileWriteLine($fileHandle, $arrBookDetails[1])
FileWriteLine($fileHandle, $arrBookDetails[2])
FileClose($fileHandle)
EndIf
Der Fehler tritt erst bei der Funktion FileOpen auf. Zum Probieren habe ich auch mal den Inhalt der Pfadvariable mit dem Explorer gestartet, also Run("Explorer.exe " & $sSpeicherpfad). Jedoch konnte er das Verzeichnis nicht öffnen. Wenn ich jedoch den Pfad mit ClipPut in die Zwischenablage lege und anschließend über die Adressleiste des Explorers dort hin navigieren will, dann klappt es.
Hier ist das Ergebnis des Pfades aus der Zwischenablage:
ZitatD:\Dokumente\scripting\catch ebooks\Downloads\ebooks\ADIGMA - A European Initiative on the Development of Adaptive Higher-Order Variational Methods for Aerospace Applications (2010); Norbert Kroll, Heribert Bieler, Herman Deconinck und weitere
Da er ja das Verzeichnis erstellt habe, habe ich den Ordner geöffnet und über die Adressleiste den Pfad opiert. Dieser sieht so aus:
ZitatD:\Dokumente\scripting\catch ebooks\Downloads\ebooks\ADIGMA - A European Initiative on the Development of Adaptive Higher-Order Variational Methods for Aerospace Applications (2010); Norbert Kroll, Heribert Bieler, Herman Deconinck und weitere
Seltsamerweise, ist das beim vergleichen im notepad++ der gleiche String.
Ich nehme an, dass der String, welcher von _FFXPath() gelieft wurde, einen falschen Zeichensatz besitzt. Leider kenne ich mich mit Zeichensätzen nicht so gut aus. Im Quellcode der Webseite habe ich gesehen, dass die Seite mit utf8 codiert ist. Siehe Codeausschnitt:
Jedoch habe ich keine Ahnung, wie ich den Pfad richtig konvertieren soll.
Habt ihr eine Ahnung, wo die genaue Ursache des Fehler liegt und wie ich das Problem lösen kann?