Announcement

Collapse
No announcement yet.

COM/OLE Automatisierung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • COM/OLE Automatisierung

    Hallo Ihr CBuilder,

    Ich versuche Word (mit BCB4) über eine duale Schnittstelle zu steuern und habe folgendes Object angelegt:

    TCOM_Application MyApp;
    MyApp = CoApplication_::Create();
    MyApp->Documents->Open(WideString("C:\TEST.TXT"));
    Ich bekomme aber die Fehlerausschrift:
    Could not find a match for Documents::Open(WideString);
    Nun könnte man annehmen, dass eine oder mehrere Variablen fehlen.
    Wenn ich mit aber den aus der TypeLib erzeugten Header-File
    ansehe:

    Word_tlb:ocumentPtr __fastcall Open(TVariant* FileName/*[in]*/,
    TVariant* ConfirmConversions/*[in,opt]*/= TNoParam(),
    TVariant* ReadOnly/*[in,opt]*/= TNoParam(),
    TVariant* AddToRecentFiles/*[in,opt]*/= TNoParam(),
    TVariant* PasswordDocument/*[in,opt]*/= TNoParam(),
    TVariant* PasswordTemplate/*[in,opt]*/= TNoParam(),
    TVariant* Revert/*[in,opt]*/= TNoParam(),
    TVariant* WritePasswordDocument/*[in,opt]*/= TNoParam(),
    TVariant* WritePasswordTemplate/*[in,opt]*/= TNoParam(),
    TVariant* Format/*[in,opt]*/= TNoParam())

    würde ich entnehmen, dass alle anderen Vaiablen optional sind. Oder sehe ich das falsch ?
    Meine andere Frage:
    woher kann ich, ohne zu raten, entnehmen um welchen Typ von Variablen es sich exakt handelt, wenn nur VARIANT bzw. bei Borland TVariant in der Type-Lib zu sehen ist ?

    Mfg
    Gerhard

    P.S.
    Bitte keinen Tip, dass ich Word auch mit
    Variant V = CreateOleObject("Word.Application") fernsteuern kann, damit habe ich keine Probleme. Mir geht es einfach darum, wie ich es mit einem Dualinterface hinbekomme und wo obiger Fehler zu finden ist.

  • #2
    Für alle, die ein ähnliches Problem haben:

    Ich hätte mir den Header-File wohl etwas näher ansehen sollen (war wohl schon ein bischen spät)

    TCOM_Application MyAp;
    MyAp = CoApplication_::Create();
    TVariant FileName("C:\\Autoexec.bat");
    MyAp->Documents->Open(&FileName);

    Mfg
    Gerhar

    Comment


    • #3
      Du solltest deinen WideString explizit in einen TVariant casten.

      so funktionierts:

      TCOM_Application MyApp;<br>
      MyApp = CoApplication_::Create();<br>
      if (MyApp)<br>
      {<br>
      MyApp->Visible = true;<br>
      MyApp->Documents_->Open(OleVariant(WideString("C:\\TEST.DOC")));<b r>
      }<br>

      Tschau, Jör

      Comment

      Working...
      X