[Update]Lösungsansätze für Lesen von Muster aus einer Textdatei

Nachdem ich vor kurzem mal auf mein Problem mit der COM-Programmierung hingewiesen habe und ein paar Anregungen bekommen habe, bin ich nun einen Schritt weiter.

1. Ich habe eine Möglichkeit gefunden den Text aus einer PDF mit dem Tool pdftotext in eine Textdatei umzuwandeln. Bei meiner Testpdf (die übrigens auch als Referenz für zukünftige Auftragsbestätigungen genommen werden kann) hat das super hingehauen.
Dazu genügt es einfach folgenden Code zu verwenden:

pdftotext -layout datei1.pdf ausgabe1.txt

2. Nun sind die ABs zwar in einer grafischen Logik dargestellt, aber mit dem Computer nur mühsam zu verarbeiten. Doch für was gibt es denn Reguläre Ausdrücke? Richtig um Muster zu finden. Die von mir benötigen Daten folgen glücklicherweise immer einem bestimmten Muster. Zum Beispiel ein Datum ist immer gleich aufgebaut und die Artikelnummern. Doch leider sind RegEx sehr schwer zu kapieren. Durch eine Googlesuche nach "Regex Generator" bin ich auf diese tolle Seite gestoßen: txt2re
Sie mag auf den ersten Blick sehr verwirrend sein, doch auf den zweiten Blick ist es einfach nur genial. Man gibt oben eine Zeile ein und kann unten per Mausklick auswählen, welche Muster man verarbeiten möchte und das Ganze dann auch noch in einer von vielen verbreiteten Sprachen.

Den zweiten Punkt werde ich morgen noch ausführlich testen in VB.NET und dann hoffentlich endlich ein Ergebnis bekommen. Wenn ich dann diese Datei habe, wird ein Export nicht mehr allzu schwer werden.

3. Ich muss nun noch nach der Syntax zum Lesen einer Datei in VB.NET googlen und das schreiben in der Datei. In C und PHP wüsste ich es noch einigermaßen, aber grafisch aufbereitet ist das ja immer etwas anders.

//Update:
Nun hab ich es endlich auch geschafft, was zu coden:

Imports System.IO
Imports System.Text.RegularExpressions

Module Module1

    Dim objDateiMacher As StreamWriter
    Dim objDateiLeser As StreamReader
    Sub Pdf2Txt(ByVal pdfFile As String, ByVal txtFile As String)
        Dim arguments As String = "-layout" & " " & pdfFile & " " & txtFile
        'make sure to provide the path with the pdfFile and the txtFile
        System.Diagnostics.Process.Start("c:\xpdf\pdftotext.exe", arguments)
    End Sub
    Sub Main()
        Call Pdf2Txt("C:\xpdf\datei\eingabe.pdf", "C:\xpdf\datei\ausgabe.txt" )
        Dim txt As String
        objDateiLeser = New StreamReader("C:\xpdf\datei\ausgabe.txt" )

        Dim re1 As String = ".*?"           'Non-greedy match on filler
        Dim re2 As String = "(BL[0-9]{7})"    'Word 1
        Dim r As Regex = New Regex(re1 + re2, RegexOptions.IgnoreCase Or RegexOptions.Singleline)

        Do
            txt = objDateiLeser.ReadLine

            Dim m As Match = r.Match(txt)

            If (m.Success) Then
                Dim word1 As Group = m.Groups(1)

                Debug.WriteLine(word1.ToString)
            End If

        Loop Until objDateiLeser.EndOfStream

        objDateiLeser.Close()
        objDateiLeser = Nothing
        Console.ReadKey()
    End Sub

End Module

Nach ein paar Änderungen am Code dank diesem Forum hier, tut das Programm auch und der unten abgebildete Fehler ist endlich weg.

Doch nun hapert es noch ein bisschen an den Regulären Ausdrücken, doch Übung macht der Meister. Probieren geht über Studieren.

[Gesucht] Hilfe für COM Programmierung

Nachdem ich mich mit Flash noch nicht richtig beschäftigen konnte, kommt schon wieder die nächste Herausforderung: COM-Schnittstellenprogrammierung

Der grobe Ablauf:
1. Text aus einer PDF (eine Auftragsbestätigung mit Terminen und Preisen vom Lieferant) in ein lesbares umwandeln, so dass ich die Daten per Skript bearbeiten kann.
2. Per COM-Zugriff eine Liste von den offenen Bestellungen beim Lieferanten aus der Warenwirtschaft auslesen.
3. Liste mit den Positionen aus der Warenwirtschaft mit den Auftragsbestätigungsdaten abgleichen und somit eine Liste mit neuen Lieferterminen und gegenfalls Preisen erstellen
4. Die fertige Liste dem Bearbeiter anzeigen und mit OK zurück in die Warenwirtschaft einspielen.

Punkte 2-4 kann ich recht logisch nachvollziehen, da ich öfters mit der internen Import/Export Schnittstelle arbeite und somit es nicht als großes Problem ansehe. Bei den Import/Export muss man ja auch immer die entsprechenden Feldnamen auswählen und zuordnen.

Nun mal eine Frage an euch: Welche Sprache empfiehlt sich für COM-Programmierung?
Ich dachte mal Visual Basic.NET, Windows Scripting Host, oder eben das VBA was im Ecxel enthalten ist. Da ich so oder so eine neue Sprache lernen muss, wäre mir eine grafische Oberfläche sehr recht. Der Kollege soll später eine GUI vor sich haben um den Pfad zur Auftragsbestätigung des Lieferanten angeben zu kommen, ansonsten nur OK. Die Programmlogik soll automatisch ablaufen.

Kennt sich jemand mit VB, VBA und PDF Bearbeitung aus? Es gibt ja auch Tools wie PDFtoText, aber damit komm ich in dem Fall nicht gut weiter. Mir wäre es recht, wenn ich einen bestimmten Bereich definieren könnte, der als Tabelle bearbeitet werden soll.

Hat jemand dazu eine Idee?

Lebendige Blogrolls

Die Blogger bilden mitunter eine starke Gemeinschaft. Besonders, wenn man sich damit näher beschäftigt und bei größeren Aktionen wie der Wikio-Freunde Feed Aktion mitmacht, bekommt man einige interessante neue Blogs zu lesen, die man vorher noch nicht kannte. Und vielleicht wenn man selbst ein paar interessante Posts schreibt auch den einen oder anderen Kommentar wieder zurück.
Um diese Verknüpfung auch irgendwie öffentlich zu zeigen, gibt es im WordPress ja auch die Möglichkeit Links zu setzen und über das Linkwidget anzuzeigen. Das ist aber sehr aufwendig und die Pflege ist auch notwendig. Sonst hat man irgendwann einen Linkfriedhof bestehen und man weiß gar nicht mehr, welche Blogs eigentlich auch verlinkt werden sollen. Ich meine jetzt nicht grundlegende Links wie zum Beispiel auf die Feuerwehr Calw oder Netzmafia, sondern auf andere Blogs, die einem gefallen. Denn irgendwann findet man die anderen Blogs vielleicht nicht mehr interessant oder so.

Deshalb hab ich heute dank der Antwort auf meine Frage nach dem Plugin für die Lebende Blogroll von Gerhard Liebenberger ein tolles neues Plugin gefunden. Nämlich: Top Commentators Plugin.
Dieses Plugin lässt sich sehr einfach einstellen, wenn auch viele Parameter abgefragt werden und es dadurch manchmal unübersichtlich ist. Meine aktuellen Einstellungen sind dazu gerade: Max. 15 Leute und nur die Leute, die auch eine URL angegeben haben. Die Blogroll wird dann wieder nach einem Monat zurückgesetzt.

Natürlich gibt es auch noch viele andere Sachen wie zum Beispiel der GravatarGrid, doch da sind dann immer sooo viele Leute drauf, dass es doch auch wieder unübersichtlich wird.
Gerhard hat auch noch über eine Anleitung geschrieben, die Blogroll direkt auf einer Seite anzuzeigen. Wäre sicher auch mal eine Überlegung wert, doch damit hab ich ja wieder Arbeit und muss die Leute trotzdem immer wieder einfügen und pflegen. Hier aber mal der Link dazu.

Soviel mal dazu. In Zukunft werde ich meine Linkliste nicht mehr soo häufig ändern, bzw. hauptsächlich die Leute verlinken, die bei mir kaum Beiträge schreiben.
All die Kommentarschreiber bleiben ja weiterhin in der Liste und werden dadurch automatisch gelistet. Zumindest so lange bis der Monat herum ist, dann kommen wieder neue Leute rein. Es lohnt sich also öfters mal hier vorbei zu schauen und den einen oder anderen Kommentar hier zu lassen. Es reicht übrigens ein Kommentar um in der Liste zu sein.

Notepad++ - Der beste Editor

Als Gelegenheitscoder weiß man schon die Vorteile von Syntaxhighlighting, Autovervollständigung und das Ausblenden von bestimmten Codeteilen zu schätzen. Für die ersten beiden Punkte hab ich bisher immer den Phase5 genutzt, da ich damit ganz leicht Tabellen erstellen kann und manche Tags automatisch wieder geschlossen werden. Da es die 2003er Version allerdings nicht mehr gibt und ich im Geschäft nicht immer alte Zip-Dateien rumhantieren wollte (Faulheit eben), hab ich mir dort mal den Notepad++ runtergeladen und ich bin echt begeistert. Der Editor ist echt genial, damit wird jeder Code übersichtlich dargestellt (Gut, bei mir sind es ja nur .php, .html und .js vom xtcommerce her), dazu noch jede Zeile mit Nummer dargestellt (gut ist ja Standard!). Seit ich damit arbeite kann ich mir keinen anderen Editor mehr vorstellen. Manche Leute nehmen ja eine komplette IDE mit integrierter Browservorschau und Dateiexplorer, doch dann wird die Codeansicht immens eingeschränkt. Ich mach es daher anders. Den Explorer für die Dateien auf, im Notepad++ alle wichtigen Dateien offen und dann in den 4 Browsern (Firefox, Internet Explorer, Opera und Chrome). Besonders hilfreich ist es so einen Editor zur Hand zu haben, wenn man ein neues Modul für Xtcommerce testet und dauernd Fehler auftauchen (Darstellungsfehler oder Funktionsfehler oder manchmal auch kleine syntaktische Fehler). An dieser Stelle bin ich mal allen Codern dankbar, die ihren Code ein bisschen einrücken und so übersichtlich gestalten. Ohne diese Formatierungen täte wahrscheinlich jeder Bearbeiter durchdrehen. :) Zumindest in php und die ganzen Skriptsprachen ist das sehr angebracht.
Joa, solche Editoren sind einfach klasse und ein Grund mehr weiter auf Windows XP weiter zu arbeiten.
Doch genug geschwärmt: Hier gehts zum Download und hier zur Seite

Facebook und die hohen Systemanforderungen

Heutzutage ist beinahe jeder User in einer Social Community angemeldet. Facebook bildet in diesem Sektor keine riesige Ausnahme, denn mit rund 300 Millionen Usern weltweit ist es schlichtweg die Nummer 1.
Welche Technik dahinter steckt kann kaum einer sagen. Und doch ist es gewaltig: 30.000 Server, 25TeraByte an Logfiles täglich, unzählige Datenbankabfragen und ein riesiges Cachesystem.
Wenn man das einmal hört und die relativ schnelle Performance von Facebook sieht, dann staunt man nicht schlecht. Schließlich ist das Ganze alles kostenlos und nur durch Werbung getragen. Die Software welche zum Einsatz kommt ist auch krass. Richtig gute Software noch weiter modifiziert. Sogar ein eigener Compiler, der PHP in C++ übersetzt ist in Arbeit. Technisch gesehen würde ich es als großen Meilenstein in der Web 2.0 Geschichte betrachten, wenn nicht sogar als das 8 Weltwunder. :D
Weitere Information hier: Wie Facebook die Daten von 300 Millionen Nutzern verkraftet (Golem.de)