[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?

Über den Autor dieses Artikels: Tobi

Blogger aus Spaß an der Freude, Musikfan, Hauptfeuerwehrmann, Christ und Pfadfinder. Die Beiträge sind meine persönliche Meinung. Oftmals ist auch versteckte Ironie oder Satire dabei. Wer damit nicht umgehen kann, sollte diese Seite verlassen und sich in seinem Loch einbuddeln.

21 Antworten zu “[Gesucht] Hilfe für COM Programmierung”

  1. bagalutenGregor sagt:

    Du wirst dich auf jedenfall mit OCR (Texterkennung auch auseinander setzen müssen, sollte das PDF keine Text elemente enthalten wie es beim SCANNEN von Rechnungen und Lieferscheinen üblich ist, ansonsten kann ich dir bei deinem Problem leider nicht weiterhelfen.
    cu an other time
    on an other place

    der bagalutenGregor

    • Tobi sagt:

      Hi du bagalutenGregor,

      erstmal hallo und guten Abend hier.
      Gut, die PDFs bekommen wir ja teilweise schon per Mail und die wurden dann vom Programm heraus erzeugt. Vielleicht sind dann ja Textelemente enthalten, das wäre genial. Naja, mal schauen vielleicht weiß Google morgen noch ne Antwort. :D

      Tobi

  2. Moin Tobi.

    Ist ja cool, dass du mein Konfetti-Plugin installiert hast.

    Aber bei deiner Frage bezüglich der COM-Programmierung kann ich dir leider auch nicht helfen. Ich habe ja noch nichteinmal davon gehört.

    Aber vielleicht kann das fiese Bunny dir helfen. Es könnte sein, dass er sich damit auskennt.

    • Tobi sagt:

      Das ist ja auch was typisch Windowsmäßiges. Die COM-Schnittstelle wurde von Microsoft entwickelt um eine Standardschnittstelle zu haben.
      Naja, schau ich mal was Google dazu sagt.

      Wegen Konfetti: Wenn du schon was von karnevalsresistenten Schwaben erzählst muss ich ja reagieren. Außerdem hat das was für sich. :D
      Buntes Konfetti aka. bunter Schnee.

  3. Knut sagt:

    Wenn du mit COM-Schnittstellen arbeiten willst kann ich dir eigentlich alles empfehlen, was das Visual Studio anbietet. Wenn du ein VS in die Finger bekommst kannst du den Kram entweder mit C# oder VB ganz gut machen. (Meine persönliche Preferenz: C# (Ich mag den ganzen Basic-Krempel nicht.)

    Was die PDF angeht kannst du versuchen ob die im Netz frei verfügbaren PDF-Libraries das Ding lesen können, wenn nicht: Viel Glück.

    So was dieses Schnee / Konfetti-Plugin angeht: Dieses scheiss Javascript Gesocks treibt meine CPU auf 96°C und 100% Last. Das war hier mein letzter Kommentar bis der Mist wieder aus ist. (Kannst mir ja Bescheid sagen. – Das Drecksplugin fällt übrigens unter „Usability-Fail“.)

    • Tobi sagt:

      Hm, gut ich hab dann wieder das Karneval Plugin deaktiviert. Hast recht die CPU-Auslastung ist wirklich zu hoch. Und ich dachte, die CPU verpackt das mal locker, schließlich sind es ja 2,8GHz. Aber danke für die Aufmerksamkeit.

      Zu deinem Tipp: Es gibt ja auch die Express Versionen von Visual Studio. Mit denen hätte ich es eben mal ausgetestet, ich brauch ja nicht gleich die teure Version.

      • CONeal sagt:

        Das Visual Studio kann ich dir dafür auch sehr empfehlen. Ob du jetzt das ganze mit VB oder mit C# umsetzt ist der überlassen. Persönlich würde ich mit C# arbeiten, was aber auch daran liegen kann, dass ich das schon kann
        Welche Sprachen kennst du denn noch? Wenn du z.B. von C oder C++ aus kommst, denke ich das C# die bessere Variante ist, da dort relativ viel gleich ist. Bei VB hast du ja wieder die Sachen, dass keine ;’s kommen und sowas halt.
        Zur Com-Programmierung an sich kann ich dir leider nicht viel sagen. Hatte damit zwar mal kurz angefangen, konnte aber zügig wieder aufhören, da es danach über Ethernet gemacht wurde

        • Tobi sagt:

          Ich hab eben noch die Grundkenntnisse von C, damals mit dem Borland Builder in der Berufsschule. Das waren aber auch bloß Konsolenanwendungen und kein Objektorientiertes Programmieren.

          Was ein bisschen verwirrend ist: Der Hersteller von unserer WaWi meint mit COM-Aktiv nicht die die Hardware COM-Schnittstelle, sondern eher eine API. Hab ich vergessen zu erwähnen. Mit dieser API kann ich dann eben auf die Datenbanken von extern zugreifen und Daten auslesen und einlesen.

          Trotzdem danke für deine Meinung. Da werde ich dann wohl mit C# weitermachen, wenn ich nicht doch noch eine bequemere Lösung finde. Das Programmieren widerstrebt mir ein bisschen, da ich es schon lange nicht mehr gemacht habe (außer kleine PHP-Anpassungen).

          Außerdem kommt noch eine Schwierigkeit beim PDF dazu: Ich kann zwar den kompletten Text aus PDF in ein Excel oder anderes Tabellenformat kopieren. Nur kann es manchmal sein, dass die Positionen um ein oder zwei Zeilen variieren. Somit ist keine Regelmäßigkeit gegeben. Vielleicht schaff ich es ja, dass unsere Lieferanten die ABs als Exceltabelle schicken, dann wird es damit zumindest einfacher. :D

    • Hee Knut, mit was für `ner Gurke bist`n du unterwegs???

      Bei mir rockt das Problemlos…

      PCs….

  4. Knut sagt:

    @Applejünger: Mitte 2007er MBP unter Mac OS 10.6…

    • Tobi sagt:

      @Applejünger: Ich dachte Macs seien stabil und schnell. Doch ein gewisser Alterungsprozess ist ja doch vorhanden, daher kann Knut gut verstehen. Selbst bei meinem Quadcore hab ich hohe CPU-Last. :D Einfach schlechte Implementierung von Javascript in den Browser. ;)

      • Hey Tobi, wieso klemmst du den Schwanz sofort ein, wenn jemand angerannt kommt, der gerade viermal Kommentiert hat???

        Also ich bin in Karnevalsstimmung, und ich finde es langweilig ohne Konfetti.

        Ich werde hier nicht mehr Kommentieren, bis Konfetti wieder läuft.

        Jetzt bin ich mal gespannt, über vierzig Kommentare gegen vier Kommentare…

        • Tobi sagt:

          Immer diese Erpressung. :D Aber ich habs ja wieder aktiviert. :D

          • Ok, jetzt kannste das wieder ausmachen.

            Ich will ja nicht, dass Knuts MBP abraucht…
            Komisch, ich schreibe gerade von einem 2006er MacBook Pro, und das wird nichtmal unnormal warm, so dass ich es auf den Beinen halten kann.
            Ach so, auf meinem iPhone läuft deine Seite mit Konfetti auch.
            Vielleicht sollte Knut mal gucken, ob auf seinem MacBook Pro nicht irgendwo ein DELL-Sticker klebt.

            (Boah, warum bin ich heute so böse????)

          • Tobi sagt:

            Naja, dazu sag ich mal nichts.

    • @Knut: Und wo ist das Problem??? Darf dein Prozessor keine 96% erreichen??
      Wird dein Öfchen dann zu warm???
      Wird dir die Stromrechnung zu hoch??

      Oder bist du nur ein bisserl …

  5. Knut sagt:

    @Tobi: Ich war bzgl. der COM-Schnittstelle von nichts anderem Ausgegangen. Im Endeffekt hast du eine DLL des Herstellers, in dem Methoden nach außen veröffentlicht sind, die du durch dein Programm ansprichst. Im Visual Studio einfach mit rechts auf den Punkt „Verweise“ in deinem Projekt klicken, Verweis hinzufügen, deine DLL (oder falls die Software installiert ist das COM-Objekt aus der Liste) auswählen und dann kannst du eine Instanz der Klassen im COM-Objekt erstellen und die wie normale Klassen deines Programms auch nutzen.

    Ich drück dir die Daumen, dass das COM-Objekt vernünftig dokumentiert ist. [ironie] Wenn nicht wirst du viel Freude dran haben… [/ironie]

    (Falls die Schritte oben nicht mehr 100% passen musst du mal schauen wie es geht. Ist auch schon etwa 3 Jahre her, dass ich das letzte Mal COM-Programmierung mit dem VS2005 gemacht habe…)

    • Tobi sagt:

      Eine Doku dazu habe ich, und auch ein paar Beispiele. Ich werd mal die Beispiele genauer anschauen. Aber dein Tipp mit dem „Verweis“ ist auch mal recht gut.

      Das mit der COM-Schnittstelle hab ich nur deshalb erwähnt, weil CoNEAL in seinem Schlusssatz Ethernet erwähnt hat. :D

  6. Windowsbunny sagt:

    Ich hab mehrere COM-Schnittstellen unter Visual Studio 6.0 mit MFC 6.0 C++ programmiert. Das ist ein Scheiß … ;) Naja meistesn klappt es. :)

    • Tobi sagt:

      Ich habs mittlerweile in VB.NET 2008 Express soweit hinbekommen, dass ich die PDF automatisch umwandeln kann mit pdftotext.
      Dann mit Regex den Text nach den gewünschten Werten durchsuche (naja, da ist noch nicht alles perfekt)
      und ansonsten hab ich mittlerweile ein Tool gefunden, welches mir auch im Batchmodus die Exporte und Importe durchführen kann.

      Von dem her brauch ich mittlerweile nicht mehr wirklich die COM-Programmierung. Doch seit dem Post ist auch ein ziemlicher Lernprozess und Try & Error und herumfragen in einem Forum ins Land gegangen. Besonders die Regex Geschichte ist ein Fall für sich.

      Nun hab ich aber auch mal den Import ausprobiert (also manuell in der WaWi direkt) und bin da schon auf Probleme gestoßen. Wenn es dann daran scheitern würde, dass der Import technisch nicht möglich ist, wäre es schon nervig. Aber ich bin da mal zuversichtlich. Sind an und für sich schon inovative Entwickler, auch wenn sie mittlerweile wieder einen Fehler haben, der schon vor 1,5 Jahren drin war.

      Aber ich bin so froh, dass ich die COM Programmierung umgehen kann, denn das wäre ansonsten schon richtig mühselig. Die Doku dazu ist nämlich auch nur notdürftig dokumentiert.

Trackbacks/Pingbacks