• Hi also ihr lieben also hier mein Script,

    vielleicht hat jemand Verwendung oder kann etwas optimieren hinsichtlich der Performenz oder so.

    Na schaut selbst.


    Warum habe ich das geschrieben und was ist der Nutzen.

    Also ich lade mir alle paar Monate im schnitt ca alle 3 Monate eine CSV Datei von meiner Bank herunter

    die Dateien haben sich von der Struktur verändert und daher war es per listview schwierig sie übersichtlich anzuzeigen


    1: Array ausgabe die immer die selbe Anzahl spalten hat und die Infos in den zeilen sollten an der richtigen position sein

    2:Es sollten keine Doppelten einträge enthalten sein; denn in der CSV konnte es zu dopplungen kommen da ich nicht immer am selben stichtag die Csv von der Bank gespeichert habe.


    resultat ist auf jeden Fall erst einmal ein Array was Alle Infos nur einmal enthält und was zur weiteren bearbeitung funktioniert.


    Freue mich über Feedback und anregungen.

  • Nette Sache, aber genau aus diesen Punkten (gibt natürlich noch weitere) wurde damals die SQL erfunden: :D :D


    Zitat

    1: Array ausgabe die immer die selbe Anzahl spalten hat und die Infos in den zeilen sollten an der richtigen position sein

    2:Es sollten keine Doppelten einträge enthalten sein; denn in der CSV konnte es zu dopplungen kommen da ich nicht immer am selben stichtag die Csv von der Bank gespeichert habe.


    Für kleine Projekte aber auf jeden Fall sinnvoll. :) Habe csv bisher eher in Java genutzt, aber vielleicht ist es ja eine gute Alternative zu INI Dateien.

  • Hallo xSunLighTx3 ,

    Du hast ja das folgende zitiert. Hast du das aber schon einmal selbst erfolgreich gemacht? Eher nicht. Nur weil das erfolgreich gewrappt wurde hat es ja nicht einwandfrei geklappt ;)

    2:Es sollten keine Doppelten einträge enthalten sein; denn in der CSV konnte es zu dopplungen kommen da ich nicht immer am selben stichtag die Csv von der Bank gespeichert habe.


    Hallo DaveTDancer

    Du hast ein nicht ausführbares Skript gepostet. Das solltest du auf jeden Fall verbessern.

    Neben den fehlenden Includes gibt es auch einen Syntax-Fehler.


    Dein Skript wäre deutlich performanter wenn du statt

    Local $AR_Return[1][2] und _ArrayAdd ($AR_Return, _ArrayToString ($Split)) das Array direkt mit der maximalen Anzahl an Elementen deklarierst und in der Schleife einem Array-Element einen Wert zuweisen würdest. Wenn es eine Do-Schleife ist, kannst du dir deine eigene Zählervariable erstellen.

  • Sorry Autoiter hast recht oft nicht und meine Beiträge werden hoffe ich besser .

    ja werde ich mal angehen, allerdings kann am anfang der CSV noch nicht gewusst werden ob wie lang das Array wird da ja wie beschrieben einige Dopplungen herrausgefiltert werden

    und das kann ich mit Redim zwar ändern aber ist das dann nicht ebenfalls nicht optimal

  • xSunLighTx3 hast du recht aber genau das ist der knackpunkt wenn ich meine Kontodaten in meine eigen Datenbank einpflegen möchte geht das nur so, weil die Bank , warum auch immer mir keinen Zugang gibt zu meinen Kontodaten auf Ihrer Datenbank. aber genau das wollte ich das meine Kontodaten in meiner Datenbank zuhaus abrufbar sind. Sorry wegen dem Sarkasmus :-)

    Ja du hastrecht weil sich so eine sql Datenbank einfacher bearbeiten usw lässt, aber die Bank gibt mir halt nur die auswahl PDF oder CSV.

  • Hallo DaveTDancer  

    ja werde ich mal angehen, allerdings kann am anfang der CSV noch nicht gewusst werden ob wie lang das Array wird da ja wie beschrieben einige Dopplungen herrausgefiltert werden

    und das kann ich mit Redim zwar ändern aber ist das dann nicht ebenfalls nicht optimal

    Das siehst du etwas falsch. Jedes _ArrayAdd oder ReDim kostet dich viel Zeit. Bei _ArrayAdd musst es wirklich bei jedem Element benutzen, dass du hinzufügen möchtest.

    Bei ReDim hast du jedoch die Freiheit zu sagen, oh mein Array ist voll! Jetzt vergrößere ich es mal um Tausend. Dann kannst du wieder Tausend Elemente hinzufügen, bevor du es vergrößern musst.


    In deinem Fall ist es aber noch besser. Du kennst die maximale Anzahl der Elemente. Das heißt, du kannst das Array gleich mit dem Maximum deklarieren und hast ein Array, das in jedem Fall nicht mehr vergrößert werden muss.


    Nun deklariere vor deiner Schleife eine Variable als Zähler. Etwa $iCount = 0.

    In der Schleife ordnest du nun jeden Eintrag dem Array-Index $iCount zu und addierst unter dieser Zeile den Wert 1 zu deiner Zählervariable:

    $aArray[$iCount][0] = "Neuer Wert"

    $iCount += 1

    Am Ende weißt du genau die Anzahl der Elemente.

    Das heißt nach der Schleife brauchst du nur genau einmal ReDim $aArray[$iCount][Anzahl der Spalten].

  • AutoItler

    Also das ist es halt nicht, ich weiß zwar wie groß meine csv ist aber durch die eventuellen dopplungen weiß ich nicht wie groß das Array sein wird da ja nicht alle zeilen aus der CSV verwendet werden.

    Sonst wäre die Sache ja schnell gelöst gewesen, grundsätzlich hast du aber recht so wäre es schneller aber wie gesagt ich will halt auch dopplungen vermeiden. Vielleicht habe ich dich auch falsch verstanden.

  • Hallo DaveTDancer  

    In deinem Fall ist es aber noch besser. Du kennst die maximale Anzahl der Elemente. Das heißt, du kannst das Array gleich mit dem Maximum deklarieren und hast ein Array, das in jedem Fall nicht mehr vergrößert werden muss.

    Lies dir meinen Beitrag vllt. noch einmal ab dem oben zitierten, zweiten Absatz durch ;)