Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi EOleSysError "Typkonflikt" bei Wordansteuerung (https://www.delphipraxis.net/173533-eolesyserror-typkonflikt-bei-wordansteuerung.html)

Tower1234 1. Mär 2013 13:11

EOleSysError "Typkonflikt" bei Wordansteuerung
 
Hallo,

ich muss gerade ein Projekt von Delphi 7 auf XE2 migrieren. Darin wird (u.a.) ein Word-Dokument erzeugt, das Ganze mit Word 2010.

In Delphi 7 lief alles problemlos; in XE2 macht der folgende Codeabschnitt Probleme:

Code:
(...)
FOffice := CreateOleObject('word.basic');
FOffice.FileNew('XXX.dot');
FOffice.StartOfDocument;
(...)
procedure TWFOffice.MSOfficeBearbeitenErsetzen(SuchString: string; ErsetzString: string;
  Richtung: integer; Einen: boolean);
begin
  if Einen then
    FOffice.EditReplace(Find := SuchString, Replace := ErsetzString, Direction := Richtung, PatternMatch := 0, Format := 0, ReplaceOne := 1) // <-- Fehler
  else
    FOffice.EditReplace(Find := SuchString, Replace := ErsetzString, Direction := Richtung, PatternMatch := 0, Format := 0, ReplaceAll := 1)
end;
Der Code läuft problemlos durch bis zur markierten Zeile.
Wenn die ausgeführt wird, wirft er eine Exception:

Im Projekt XXX ist eine Exception der Klasse EOleSysError mit der Meldung 'Typkonflikt' aufgetreten.

Dieses Problem scheint es immer zu geben, auch mit anderen Aufrufen, wenn ein String an Word übergeben werden soll. Leider hat mir die Erkenntnis aber noch nicht bei der Behebung geholfen...

Danke schon mal für eure Ideen!

sx2008 1. Mär 2013 13:41

AW: EOleSysError "Typkonflikt" bei Wordansteuerung
 
Word erwartet den Datentyp BSTR der in Delphi einem WideString entspricht.
Versuch mal:
Delphi-Quellcode:
procedure TWFOffice.MSOfficeBearbeitenErsetzen(SuchString: string; ErsetzString: string;
  Richtung: integer; Einen: boolean);
var
  s, r : WideString;
begin
  s := SuchString;
  r := ErsetzString;
  if Einen then
    FOffice.EditReplace(Find := s, Replace := r, Direction := Richtung, PatternMatch := 0, Format := 0, ReplaceOne := 1) // <--

Tower1234 1. Mär 2013 13:56

AW: EOleSysError "Typkonflikt" bei Wordansteuerung
 
Danke für die Idee, aber leider war's das nicht.

Auch mit WideStrings noch die gleiche Fehlermeldung.

sx2008 2. Mär 2013 16:51

AW: EOleSysError "Typkonflikt" bei Wordansteuerung
 
Ich sehe gerade du arbeitest noch mit dem Word.Basic-Dispatchinterface.
Ab Word 2000 ist diese Schnittstelle eigentlich veraltet und wird nur noch Zwecks Rückwärtskompatibilität mitgeführt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.

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