Fragen zur Programmierung mit David Tobit

  • Hallo

    ist hier eigentlich das richtige Forums für Programmierfragen zu David Tobit.
    Ich arbeite mit der COM-Schnittstelle "DVOBJAPILib.DvISEApi" und hab ein Problem
    dass ich Mail-Objekte manchmal als MessageItem2 und manchmal als MailItem brauche
    Ich wollte wissen ob es da ein Möglichkeit dre Konvertierung gibt?

    Aber vor allem, welches das richtig Forums dafür ist

    MfG,
    Alex

  • also die Farge ist ganz simpel, wo kann ich hier im Forum am besten Fragen zur Programmierung mit David Tobit stellen?
    Programmierensprachen sind VB-6 und C#. Schnittstelle ist die COM/ActiveX-Schnittstelle von David Tobit.
    Tipps zu anderen Foren oder Usenet sind auch willkommen!

    Danke für alle Tipps.

    MfG,
    Alex

  • Hallo,

    ein spezielles Forum für solche Fragen gibt es hier nicht. Also ist es an dieser Stelle schon korrekt. Leider konnte ich in der API-Dokumentation keinen Weg dafür finden. Kannst du vielleicht mal genauer beschreiben was du vor hast. Wie hast du z. B. die Objekte erzeugt? Warum brauchst du mal das eine mal das andere?

    Gruß Markus

  • Wir importieren in unsere eigene Software Mail aus dem Mailclienten des Kunden. Dabei unterstützen wir u.a. David Tobit.
    Die Mail wird in einem Listview angezeigt. Der Kunde kann einzelne Items selektieren, die er in die DB unserer Software importieren möchte.
    Optional kann er dabei wählen, die Mail nach Import im Posteingang des Mailclienten, z.B Tobit, zu löschen.

    Das Einlesen der Mailitems geht über ein Archiv-Objekt, das den Posteingang abbildet, und dessen MailItems-Collection, die einzelnen Items sind dabei vom
    Typ MailItem (obwohl laut Doku ein MessageItem zurückgegeben wird, aber offensichtlich unterstützen die zurückgegebenen
    Objekte aus Archiv.MailItems.Item sowohl MessageItem als auch MailItem). Es wird anhand des numerischen Index zugegriffen.
    Dabei wird sich die ID des MailItems gemerkt (ID = MailItems.Fields("RecNo")) und in das ListItem.Tag geschreiben

    Beim Zugriff auf die selektierten Objekte erfolgt der Zugriff über diese gespeicherte ID und die Methode Archive.GetArchiveEntryByID
    (mglweise heisst die Methode etw anders, ich sitze gerade an keinem Rechner mit Tobit)
    GetArchiveEntryByID liefert aber ein MessageItem2-Objekt zurück. Dieses Item unterstützt die MailItem-Schnittstelle nicht!
    Wenn man eine Variable als MailItem deklariert und ein Objekt von GetArchiveItemByID an sie zuweist, gibt's einen Laufzeitfehler
    "Typen unverträglich".

    Ich brauche aber MailItem weil MailItem über die ganzen Properties verfügt, die ich für den DB-Import brauche.
    z:b Absendername, Absenderadresse, Mail-Priority etc pp. MessageItems2 hat diese Eigenschaft allenfalls indierkt in der Fields-Collection.
    Viele hat es gar nicht.

    Ich helfe mir jetzt, indem ich das Objekt das GetArchiveItemByID als MessageItem2n zurückgibt nochmals als Mailitem hole
    indem ich durch die MailItems-Collectionj iteriere und die IDs vergleiche.
    Das funktioniert auch.
    Problem: bei vielen Mails im Posteingang ist das spürbar langsam, weil im Worstcase eben pro Item eine Schleife über alle anderen Items
    erfolgt, ist eben ein exponentieller Algorithmus, ähnlch BubbleSort.
    Ein direkter Cast von MessageItem2 nach MailItem wäre an dieser Stelle nützlich. Oder eine ander Methode, sowas wie
    GetMailItemByID.
    Hoffe Problem wurde etwas deutlciher

    MfG,
    Alex

  • Um das nochmal etwas kompakter auszudrücken:

    Ich habe die ID eines MailItems und will dieses MailItem 'holen'.
    Die Methode GetArchiveEntryById gibt aber ein MessageItem2-Objekt zurück.
    Casten von Messageitem2->MailItem ist (in VB-6) nicht möglich.
    Gesucht ist also ein performanter Weg, ein MailItem-Objekt anhand der ID
    zu holen. Wenn möglich, nicht-iterativ.

    Ich habe jetzt aber auch einen newssever mit einer developer-Gruppe für
    David-API gefunden, werde mal da mein Glück versuchen:

    news://news.tobit.com/tobit.public.de.developer.api

    MfG,
    Alex

  • Problem endlich gelöst:

    Ich habe die ID eines MailItems und will dieses MailItem 'holen'.
    ..Casten von Messageitem2->MailItem ist (in VB-6) nicht möglich.
    Gesucht ist also ein performanter Weg, ein MailItem-Objekt anhand der ID
    zu holen. Wenn möglich, nicht-iterativ.
    ...
    news://news.tobit.com/tobit.public.de.developer.api

    Und obohl die Gruppe tot ist, stand da die Antwort im Thread
    'Wechseln zwischen MessageItem und MessageItem2'
    nämlich die Methode 'ItemFromId' verwenden:

    MessageItem2 -> MessageItem
    DvApi32.MessageItem item = item2.Parent.ItemFromId(item2._ID, 34);

    MessageItem ist eine Basisklasse, deren konkerte Objekte immer spezialisiert sind.
    Items im Posteingang sind MailItems, Kalender-Einträge CalendarItems usw.
    Vielleicht interessiert's ja irgendwen sonst noch.

    MfG
    Alex

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!