ole typenkonflikt zwischen borland5 und borland6
-
hallo,
habe einen programm die mit borland5 geschrieben ist, die auf office (word) zugreift.
kurz gesagt:
über eien formblatt (empfängerdaten usw. eingeben) einen seriebbrief erstellen (word).
mein problem:
wenn ich diesen programm mit borland6 compeliere und linke -> funktioniert und erstellt eine .exe datei. die kann ich später auch starten, aber nachdem ich die nötigen daten einngetippt habe und diesen dann speichern möchte, bekomme ich eine fehlermeldung
OLE-Typenkonflikt!wie könnte ich diesen fehler beheben.
bedanke mich im voraus.
-
Hallo
Du übergibst dem Word-OLE Container für irgendeine Methode falsche Parameter. Der Compiler kann sowas nicht bemerken. Verwende den Debugger um die genaue Stelle einzugrenzen, und schau in der VBA-Hilfe nach was die Methoden für Parameter erwarten.
bis bald
akari
-
danke für deine schnelle antwort, aber ich kann da nichts feststellen. hier ein auszug aus der quellcode. ich hoffe es hilft der sache weiter.
in der header datei: // Initialisierung des Word OLE-Servers bool __fastcall InitOleServer(Variant &vOLEWord); // Word-Dokument erzeugen, ggf. speichern und/oder drucken void __fastcall CreateDocument(Variant &vOLEWord, AnsiString slTemplateFile, AnsiString slSaveFile, bool blPrint); // Beenden des Word OLE-Servers void __fastcall TerminateOleServer(Variant &vOLEWord); in main datei: // OLE-Server initialisieren, die Variable blWordStarted // wird auf true gesetzt falls Word nicht bereits aktiv war Variant vOLEWord; bool __fastcall TfrmMain::InitOleServer(Variant &vOLEWord) { vOLEWord = Unassigned; try { // vielleicht läuft Word ja bereits (wenn nicht, wird hier // eine Exception generiert - aber die ist ja behandelt :) vOLEWord = GetActiveOleObject("Word.Application"); return false; } catch(...) { try { // vielleicht läuft Word ja bereits... vOLEWord = CreateOleObject("Word.Application"); return true; } catch(Exception& e) { // Wahrscheinlich kein Word auf dem Rechner... Application->MessageBox(e.Message.c_str(),"OLE-Error",MB_ICONERROR); vOLEWord = Unassigned; } } return true; //--------------------------------------------------------------------------- // Word-Dokument erzeugen, ggf. speichern und/oder drucken //--------------------------------------------------------------------------- void __fastcall TfrmMain::CreateDocument(Variant &vOLEWord, AnsiString slTemplateFile, AnsiString slSaveFile, bool blPrint) { try { // falls Word-Fenster sichtbar sein soll, // muss folgende Zeile aktiviert werden: // vOLEWord.OlePropertySet("Visible", true); // Falls die Vorlagen-Datei nicht existiert, schimpfen und beenden: if(!FileExists(slTemplateFile)) { Application->MessageBox("Vorlagendatei nicht gefunden !", "Abbruch",MB_ICONERROR); return; } // Word nur beenden, wenn es von uns zuvor gestartet wurde: if(blWordStarted) TerminateOleServer(vOLEWord);danke

/Edit : Bitte beim nächsten Posten von Code auch die Cpp-Tags benutzen! sfds
-
Hallo
Hier hast du eine Anleitung zum Benutzten des Debuggers. Benutzt Breakpoints um herauszufinden bei welche Zeile genau der Fehler kommt.
bis bald
akari