1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. erBBga

Beiträge von erBBga

  • Mehrspaltiges Array in einer Zeile schreiben

    • erBBga
    • 13. August 2017 um 00:02

    Jetzt hat es mit dem Array geklappt!! Vielen Dank :klatschen:


    Mit der Funktion "_ArrayDisplay($aArray, "Arrays")" zeigt er mir nun auch wie gewollt nachfolgendes an:


    [0] 12:00 Beispielsatz 1


    Und mit der "_FileWriteFromArray" Funktion schreibt er es auch wunderbar wie gewollt in die Textdatei. :party:

    Für den schnellen und ausührlichen Support noch einmal ein DICKES

    DANK!! :klatschen:

    ich wünsche dann noch einen schönen Abend...

  • Mehrspaltiges Array in einer Zeile schreiben

    • erBBga
    • 12. August 2017 um 23:36

    Vielen Dank - Nun gibt es auch keine Fehlermeldung mehr.

    Jedoch scheinen die Werte dennoch nicht richtig übertragen zu werden - obwohl sie im string richtig abgefragt werden. ?(


    Der Code sieht mit den Änderungen dann wie folgt aus... hatte ich es so richtig verstanden?

    AutoIt
    #include <file.au3>	;Allgemeiner Include
    #include <Date.au3>	;Zeit und Datum Include
    #include <string.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.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][3]
    
    
    ;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, $beginn1, $ende1) ;Ließt "Beispielsatz aus und legt den String in das Array
    
    
    ;Auslesen vom 2. Textteil
    	$beginn2 	= "diesen "
    	$ende2 		= " am"
    	$aArray[0][1] = _StringBetween($string, $beginn2, $ende2)
    
    
    ;Auslesen vom 3. Textteil
    	$beginn3 	= "am PC "
    	$ende3 		= "" ;Der gesuchte Textinhalt geht bis zum Ende vom Text
    	$aArray[0][2] = _StringBetween($string, $beginn3, $ende3)
    If @error Then MsgBox(0, "Fehler", @error)
    
    
    ;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
    
    
    ;--------------------------------------------------------------------------------------------
    
    
    
    
    	_ArrayDisplay($aArray, "Arrays")
    	;MsgBox(0, "Items 1-7", _ArrayToString($aArray, ";", 1, 3))
    	;$Text2 = _ArrayToString($aArray, ";", 0, 2)
    	FileWrite($PfadLog1, $Text2)
    	FileClose($PfadLog1) ;Textdatei wird wieder geschlossen
    
    
    ;Öffnen der "eigentlich" beschriebenen Textdatei
    	Run("notepad.exe " & $PfadLog1)
    Exit
    Alles anzeigen
  • Mehrspaltiges Array in einer Zeile schreiben

    • erBBga
    • 12. August 2017 um 23:10

    Ich habe mal je der StringBetween mit _ArrayDisplay($aArray, "Arrays") abgefragt und habe schon mal feststellen können das die 3 Abfragen die Richtigen Werte in das Array schreiben.

    Anschließend habe ich wie von dir beschrieben die "If @error..." Zeile eingefügt und habe das Programm nochmal ausgeführt -> Diesmal hat er in der Messagebox eine "-1" geschrieben.

    Wäre dies die erwartete "1"?

    Wie würde man denn eine solche Abfrage als erfahrener AutoIT-Programmierer lösen?

  • Mehrspaltiges Array in einer Zeile schreiben

    • erBBga
    • 12. August 2017 um 22:05

    Vielen Dank für die Schnelle Antwort @autoiter

    Ich glaube es jetzt verstanden zu haben und habe meinen Code nochmal angepasst... leider bekomme ich jedoch noch immer Probleme mit dem Array... ich vermute mal das ich gerade ein Brett vorm Kopf habe. :Face:
    Könntet ihr wohlmöglich nochmal mit schauen was ich die ganze Zeit falsch mache?

    Als error erhalte ich die ganze Zeit:

    C:\Users\....\test4.au3" (52) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    If $aArray[0][2] = "geschrieben" Then
    If ^ ERROR
    >Exit code: 1 Time: 0.3565

    Spoiler anzeigen
    AutoIt: 2. Versuch
    #include <file.au3>	;Allgemeiner Include
    #include <Date.au3>	;Zeit und Datum Include
    #include <string.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.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[0][3]
    
    
    ;Auslesen vom 1. Textteil
    	$beginn1 	= "Um"		;Variable mit dem Text vor dem gesuchten Textinhalt
    	$ende1 		= "Uhr"	;Variable mit dem Text nach dem gesuchten Textinhalt
    Local 	$aArray[0][0] = _StringBetween($string, $beginn1, $ende1) ;Ließt "Beispielsatz aus und legt den String in das Array
    
    
    ;Auslesen vom 2. Textteil
    	$beginn2 	= "diesen "
    	$ende2 		= " am"
    Local	$aArray[0][1] = _StringBetween($string, $beginn2, $ende2)
    
    
    ;Auslesen vom 3. Textteil
    	$beginn3 	= "am PC "
    	$ende3 		= "" ;Der gesuchte Textinhalt geht bis zum Ende vom Text
    Local	$aArray[0][2] = _StringBetween($string, $beginn3, $ende3)
    
    
    
    
    ;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
    
    
    ;--------------------------------------------------------------------------------------------
    
    
    
    
    	$Text2 = _ArrayToString($aArray, ";", 0, 2)
    	FileWrite($PfadLog1, $Text2)
    	FileClose($PfadLog1) ;Textdatei wird wieder geschlossen
    
    
    ;Öffnen der "eigentlich" beschriebenen Textdatei
    	Run("notepad.exe " & $PfadLog1)
    Exit
    Alles anzeigen
  • Mehrspaltiges Array in einer Zeile schreiben

    • erBBga
    • 12. August 2017 um 20:12

    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
    AutoIt
    #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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™