Moin
Also folgendes Problem...wenn ich in meinem Progi die Datei "new.csv" lesen will, gibt die MsgBox die ich hinten ran gemacht habe den Fehler 1 aus.
dieser lautet: Sets @error to 1 if file not opened in read mode or other error.
Was mache ich falsch? Mir geht es im moment auch nur um diesen Teil und ja ich weiss das es irgendwie auch einfacher gehen würde .
Das Problem ist in Zeile 63 aufgetreten
Spoiler anzeigen
#include <array.au3>
#include <file.au3>
$pwdline = 2
$sourceline = 1
$ausgabepath = "KWI_AD_LEHRER.CSV"
$sourcepath = "KWI_AD_LEHRER(source).CSV"
$newsourcepath = "new.csv"
$pwdlistpath = "Neuer Ordner/ADConnector_PASSWORDS_23062011_142408l.csv"
If FileExists($newsourcepath) Then
FileDelete($newsourcepath)
EndIf
;~ $pwdlist = FileOpen("Neuer Ordner/ADConnector_PASSWORDS_23062011_142408l.csv", 0)
;~ $newsource = FileOpen("new.csv", 0)
[/autoit] [autoit][/autoit] [autoit]Unix2Dos($sourcepath, $newsourcepath)
[/autoit] [autoit][/autoit] [autoit]While True
$newsource = FileOpen("new.csv", 0)
$SourceString = FileReadLine($newsource, $sourceline)
If @error Then ;Bei Fehler
If @error = -1 Then ;Wenn die zu lesende Zeile nicht mehr existiert
ExitLoop ;Aus Schlaufe springen
Else
Exit
EndIf
EndIf
FileClose($newsource)
$SourceArray = StringSplit($SourceString, ";") ;String in Array schreiben
$listline = 1
$linien = _FileCountLines($newsourcepath)
While Not $listline = $linien ;Schlaufe bis das ganze File durchsucht wurde
$pwdlist = FileOpen("Neuer Ordner/ADConnector_PASSWORDS_23062011_142408l.csv", 0)
$ListString = FileReadLine($pwdlist, $listline) ;Zeile einlesen
If @error Then ;Bei Fehler
If @error = -1 Then ;Wenn die zu lesende Zeile nicht mehr existiert
ExitLoop ;Aus Schlaufe springen
Else
Exit
EndIf
EndIf
FileClose($pwdlist)
$ListArray = StringSplit($ListString, ";") ;String in Array schreiben
$suche = $ListArray[2] ;Wert nach dem gefiltert werden sollte
$finde = $SourceArray[3] ;Wenn der Wert existiert, steht er in der 3. Spalte
$left = 4
If $listline = 1 And $left > 0 Then ;Entfernt die Nullen die bei der einen Datei bei der PersNr ausgelesen wurden
$string = StringLeft($finde, 1) = "0" ;Liest das erste Zeichen aus und prüft ob es eine 0 ist
While $string = "True" ;Solange der Vergleich positiv ist
$finde = StringReplace($finde, "0", "", 1) ;entfernt eine 0
$string = StringLeft($finde, 1) = "0" ;führt den Vergleich erneut aus
WEnd
EndIf
If $suche = $finde Then ;Wenn die beiden Werte nun gleich sind
$listline = $listline + 1
ExitLoop ;Aus While-Schlaufe springen
EndIf
$listline = $listline + 1
WEnd
$linie = $listline - 1
$newsource = FileOpen("new.csv", 0)
$writestring = FileReadLine($newsource, $linie) ;Ab hier gehts nicht mehr weiter <== File not opened in read mode OR OTHER ERROR????? <==
If @error Then ;Bei Fehler
MsgBox(0, "", @error, 1) ;Zeigt den Fehlercode an
If @error = -1 Then ;Wenn die zu lesende Zeile nicht mehr existiert
ExitLoop ;Aus Schlaufe springen
Else
Exit
EndIf
EndIf
FileClose($newsource)
$writearray = StringSplit($writestring, ";")
If $linie - 1 = $linien Then
_ArrayAdd($writearray, "Passwort nicht gefunden!") ;Neuen Arraywert in die letzte Spalte des Arrays setzen
Else
$pwdlist = FileOpen("Neuer Ordner/ADConnector_PASSWORDS_23062011_142408l.csv", 0)
$pwstring = FileReadLine($pwdlist, $linie)
FileClose($pwdlist)
$pwarray = StringSplit($ListString, ";")
$passwort = $pwarray[8]
_ArrayAdd($writearray, $passwort)
EndIf
_ArrayDelete($writearray, 0) ;Entfernt die Arrayinformationen die in Spalte 0 stehen
$write = _ArrayToString($writearray, ";") ;Konvertiert das Array zurück in einen mit ; getrennten String
$ausgabe = FileOpen("KWI_AD_LEHRER.CSV", 2)
FileWriteLine($ausgabe, $write) ;Schreibt diesen String in die Ausgabedatei (diese sollte nun alle Informationen aus dem Sourcefile wie namen etc. enthalten und zusätzlich sollte noch das jeweilige Passwort in der letzten Spalte stehen
FileClose($ausgabe)
WEnd
Func Unix2Dos(ByRef $in, ByRef $outpath) ;Neue Funktion einleiten
#include <file.au3>
$line = 1
$lines = _FileCountLines($in)
While True ;Endlosschlaufe
$output = FileOpen($outpath, 1)
$instring = FileReadLine($in, $line) ;Zeile in String lesen
If @error Then ;Bei Fehler Wiederholung beenden
ExitLoop
EndIf
$instring = StringReplace($instring, Chr(32), "") ;Leerschläge entfernen
FileWriteLine($output, $instring) ;Konvertierten Text in Datei schreiben
$lines = $lines - 1
$line = $line + 1
FileClose($output) ;File muss geschlossen werden, da das Unterprogramm anstonsten nicht volständigt ausgeführt wird
WEnd
EndFunc ;==>Unix2Dos