Hallo zusammen,
ich beschäftige mich nun seit ein paar Tagen mit AutoIT und komme irgendwie nicht mehr weiter
Ich würde gerne ein kleines Programm schreiben welches eine Textdatei erstellt, ander Datein auslist und anschließend Teile aus diesen Datein in die selbsterstellte Textdatei schreibt.
Dabei bin ich soweit das ich die Textdatei erstellen und beschreiben kann sowie mit "_StringBetween" auch die von mir geforderten Informationen aus einer anderen Datei auslesen kann.
Jedoch bekomme ich Probleme sobald ich diese in der von mir erstellten Textdatei speichern möchte.
Wenn ich die drei Textteile einzeln auslese und direkt einzeln in die neue Textdatei schreibe funktioniert es -> Leider wird dabei jedoch bei jedem Eintrag eine neue Zeile angefangen was nicht von mir gewollt ist.
Dies sieht dann in etwa so aus:
TexteilA |
TexteilB |
TexteilC |
Am Ende sollte es aber eigentlich so aussehen:
TexteilA | | | TexteilB | | | TexteilC |
Wenn ich versuche die drei Textteile einzeln auszulesen und anschließend versuche das ganze Array in die Textdatei zu schreiben erhalte ich leider nachfolgenden Fehlerbericht:
AutoIt Error:
Line 7306 (File"C:\...\test.exe"):
Error: Subscript used on non-accessible variable
Im Spoiler unter diesem Text habe ich mal meinen Code eingefügt und hoffe das mir jemand von euch auf die Sprünge helfen kann warum mein Programm nicht so funktioniert wie es soll.
Spoiler anzeigen
#include <file.au3>
#include <Date.au3>
#include <string.au3>
#include <Array.au3>
#include <File.au3>
;--------------------------------------------------------------------------------------------
;Ordner erstellen
$AktuellesDatum = _DateTimeFormat(_NowCalc(), 2)
$AktuelleZeit = @hour & "." & @min
$Ordnerpfad = @ScriptDir & "\Backup\" & $AktuellesDatum
If Not FileExists($Ordnerpfad) Then DirCreate($Ordnerpfad)
;Beispiel für Ordnerpfad: ScriptDir...\Backup\10.08.2017
;Textdatei Pfad wird zusammengesetzt
$PfadLog1 = $Ordnerpfad & "\Log1_" & $AktuellesDatum & "_" & $AktuelleZeit & ".txt"
;Beispiel für Dateinamen: "Log1_10.08.2017_17.39"
;Die Textdatei sowie der Kopf werden erstellt
$Text = "Zeit;Was;Wie" & @CRLF
FileWrite($PfadLog1, $Text)
;--------------------------------------------------------------------------------------------
;Zum testen gebe ich hier mal nur einen einzigen Satz vor der sonst in einer Schleife ausgelesen und verarbeitet worden wäre
$string = "Um 12:00 Uhr habe ich diesen Beispielsatz am PC geschrieben"
Local $aArray[1][2]
;Auslesen vom 1. Textteil
$beginn1 = "Um " ;Variable mit dem Text vor dem gesuchten Textinhalt
$ende1 = " Uhr" ;Variable mit dem Text nach dem gesuchten Textinhalt
$aArray[0[0] = _StringBetween($string, $abda, $bisda) ;Ließt "Beispielsatz aus und legt den String in das Array
;Auslesen vom 2. Textteil
$beginn2 = "diesen "
$ende2 = " am"
$aArray[0][1] = _StringBetween($string, $abda, $bisda)
;Auslesen vom 3. Textteil
$beginn3 = "am PC "
$ende3 = "" ;Der gesuchte Textinhalt geht bis zum Ende vom Text
$aArray[0][2] = _StringBetween($string, $abda, $bisda)
;Vergleich vom 3. Textteil mit einem Vergleichstext
If $aArray[0][2] = "geschrieben" Then
$aArray[0][2] = 1 ;Wenn geschrieben dann "=1"
Else
$aArray[0][2] = 0 ;...ansonsten "=0"
Endif
;--------------------------------------------------------------------------------------------
;Schreiben des gesamten Array in die zuvor erstellte Textdatei
_FileWriteFromArray(FileOpen($PfadLog1,1), $aArray, 0, 0, "|")
; Das "|" dient als Trennzeichen zwischen den einzelnen Einträgen
FileClose($PfadLog1) ;Textdatei wird wieder geschlossen
;Öffnen der "eigentlich" beschriebenen Textdatei
Run("notepad.exe " & $PfadLog1)
EXIT
Alles anzeigen