Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TWordApplication zickt nach Office-Update (https://www.delphipraxis.net/132938-twordapplication-zickt-nach-office-update.html)

Tonic1024 22. Apr 2009 11:39


TWordApplication zickt nach Office-Update
 
Hallo...

Wir haben grad die Firma komplett auf Vista und Office2k7 umgestellt. Mein Alter Quellcode war für Office2k geschrieben. RAD Studio hat ja hochoffiziell nur Office2k3 Komponenten dabei. Bislang zeigten die sich aber schon mehrfach kompatibel zu 2k7. Hab das so auch aus der DP herausgelesen.

Diese Zeile zickt jetzt:
Delphi-Quellcode:
  WordApplication1.Documents.OpenOld(aVorlage, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam);
Offenbar akzeptiert er emptyParam nicht mehr. Ich hab dann Folgendes Versucht:
Delphi-Quellcode:
var
  test: OleVariant;
[..]
  WordApplication1.Documents.OpenOld(aVorlage, test, test, test, test, test, test, test, test, test);
Das akzepiert zwar der Compiler aber zur Laufzeit kommt eine EOLEException "Typenkonflikt". Habs auch mit test1, test2, test3, etc versucht...

Meine Frage liegt nun Nahe:
Muss ich zu meinem Chef und ihm erzählen, dass unser neues RAD Studio nicht mit unseren neuen Office klar kommt oder gibts nen Ausweg? Hat sich veilleicht nur der Aufruf oder deren Parametrierung geändert oder check ich's nur nicht?

Wär über nen kurzen Stubs in die richtige Richtung sehr dankbar...


Gruß,

Toni

Bernhard Geyer 22. Apr 2009 11:49

Re: TWordApplication zickt nach Office-Update
 
Such mal in der MSDN-Doku. Evlt. hat ja MS hier die Methodensignatur geändert obwohl das nach COM-Regeln nicht erlaubt ist. Hab sowas ähnliches (geänderter Aufzählungstyp) bei Excel schon mal gehabt.

nahpets 22. Apr 2009 11:54

Re: TWordApplication zickt nach Office-Update
 
Hallo,

da mir sowohl die passende Wordversion, das passende Betriebssystem und die passende Delphiversion fehlt, kann ich nur raten. (Okay: mit müsste ich es auch ;-))

Schau mal, ob es statt OpenOld auch ein Open gibt, und welche Parameter das haben möchte.

Versuche mal die Typlib für die neue Wordversion zu importieren und schau Dir dort dann die Definition von Open oder OpenOld... an.
Kannst Du irgendwie (über Codevervollständigung...) herausbekommen, welcher Parameter von welchem Typ ist. Ist die Zahl der Parameter gleich geblieben?

Hatte vor Jahren mit anderen Versionen mal so ein Problem, war 'ne irre Sucherei, ging dann aber irgendwann. Eventuell musst Du Dich aber von der Benutzung der in Delphi enthaltenen Komponenten verabschieden.

Schaumal bitte, ob Du über www.google.de TWordApplication noch ein paar Denkanstöße bekommen kannst. Bitte auch dem Alternativvorschlag von Google folgen, da kommt sicherlich auch noch viel hilfreiches.

Tonic1024 22. Apr 2009 13:39

Lösung!
 
Ja, Open gibts auch. Aber den Unterschied hab ich schon bei Office2k nicht ganz verstanden. Ist beim Versuch auch der selbe Fehler aufgetreten.

Hab mit nem gewieften VBA-Progger zu Mittag gegessen. Dabei ist folgende Lösung herausgeommen.

Delphi-Quellcode:
var
  OLEConfirmConversions: OleVariant;
  OLEReadOnly: OleVariant;
  OLEAddToRecentFiles: OleVariant;
  OLEPasswordDocument: OleVariant;
  OLEPasswordTemplate: OleVariant;
  OLERevert: OleVariant;
  OLEWritePasswordDocument: OleVariant;
  OLEWritePasswordTemplate: OleVariant;
  OLEFormat: OleVariant;
 
begin

  OLEConfirmConversions:=False;
  OLEReadOnly:=False;
  OLEAddToRecentFiles:=False;
  OLEPasswordDocument:='';
  OLEPasswordTemplate:='';
  OLERevert:=False;
  OLEWritePasswordDocument:='';
  OLEWritePasswordTemplate:='';
  OLEFormat:=0;
 
  // aVorlage ist die zu öffnende Datei mit Pfadangabe
  WordApplication1.Documents.OpenOld(aVorlage,
        OLEConfirmConversions,
        OLEReadOnly,
        OLEAddToRecentFiles,
        OLEPasswordDocument,
        OLEPasswordTemplate,
        OLERevert,
        OLEWritePasswordDocument,
        OLEWritePasswordTemplate,
        OLEFormat);
Gruß,

Toni

Tonic1024 22. Apr 2009 14:13

Re: TWordApplication zickt nach Office-Update
 
Nachtrag:

Wenn man - emptyParam - in eine Variable des Typs OLEVariant "einwickelt" dann schmeckt sie dem Compiler auch wieder... :wall:

Toni


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz