ASCII Code: Zeilen automatisch löschen?

  • Hey,

    ich habe ein kleines problem und bin mir nicht sicher ob sich sowas über autoit lösen lässt.

    und da ich erst anfange mich mit autoit zu befassen wollte ich mal fragen ob sowas grundsätzlich möglich ist!

    mein problem:

    ich muss einen acsii export eines buchhaltungsprog. in datev importieren

    zeilen sehen ca. so aus: (das in klammer habe ich zur erläuterung hinzugefügt)

    Code
    1 (buchungssatz) 22.02.2007 (buchungsdatum) 100,00 (betrag) 1200 (konto) 9008 (gegenkonto) 
    1 (buchungssatz) 22.02.2007 (buchungsdatum) 100,00 (betrag) 9008 (konto) 1200 (gegenkonto)

    eine sonstige formatierung gibts dabei nichtmehr.

    jetzt heben sich die buchungssätze komischerweise gegenseitig auf, sodass per saldo jedes buchungskonto nach dem import 0 wird :(

    keine ahnung was da beim export schief geloffen ist!

    daher überlege ich mir ob es nicht möglich wäre einfach jede doppelte zeile automatisch zu löschen? wie wäre dafür den ansatz eines autoit skripts?

    der ganze satz umfasst ca. 13000 buchungssätze und daher kann ich nicht per hand die retoure buchung löschen.

    vielen danke schonmal für die meinungen!

    gruß nuts

    • Offizieller Beitrag

    Hi,

    mit _FileReadToArray in ein Array lesen und dann mit

    [autoit]

    Func _ArrayUnique(ByRef $aArray, $vDelim = '', $iBase = 1, $iUnique = 1)
    If $vDelim = '' Then $vDelim = Chr(01)
    Local $sHold
    For $iCC = $iBase To UBound($aArray) - 1
    If Not StringInStr($vDelim & $sHold, $vDelim & $aArray[$iCC] & $vDelim, $iUnique) Then _
    $sHold &= $aArray[$iCC] & $vDelim
    Next
    Return StringSplit(StringTrimRight($sHold, StringLen($vDelim)), $vDelim)
    EndFunc ;==>_ArrayUnique

    [/autoit]

    die doppelten rausfischen.

    Mega

  • hm bin mir nicht sicher ob das ganz mein problem löst. (bin mir auch nicht sicher ob ich die func verstehe)

    zeilen der buchungssätze sind nicht doppelt vorhanden (die zeilen enthalten z.b. noch unterschiedliche informationen, die ich beim import gar nicht einlese) - sie bewirken nur, dass sie sich gegenseitig aufheben (buchungstechnisch).

    im prinzip sollte einfach jede zweite zeile gelöscht werden ohne das vergleichen der beiden zeilen.

    • Offizieller Beitrag

    Jede zweite Zeile:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>

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

    $file = "c:\blabla.txt" ; hier die Datei (inkl. Pfad) eintragen

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

    Global $aRecords
    If Not _FileReadToArray($file, $aRecords) Then
    MsgBox(4096,"Fehler", "Datei konnte nicht gelesen werden Fehler:" & @error)
    Exit
    EndIf

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

    Global $x = 1, $z = False
    While $x <= $aRecords[0]
    If $z Then
    _ArrayDelete($aRecords, $x)
    $aRecords[0] -= 1
    $z = False
    Else
    $x += 1
    $z = True
    EndIf
    WEnd
    _ArrayDisplay($aRecords)

    [/autoit]


    Edit: Mist! Wieder zu langsam! :rolleyes: