Hallo zusammen,
ich habe wieder mal ein kleines Problem.
Ich möchte mit Delphi ein Word Dokument öffnen und etwas hineinschreiben.
Soweit kein Problem.
Wenn ich alles in ein Project schreibe ohne verschiedene Klassen funktioniert alles wunderbar.
Nun möchte ich aber eine Klasse mit der Graphischen Oberfläche und eine Klasse mit der Word Abwicklung haben
Und genau da läuft es vor den Baum.
Immer wenn ich das Word Dokument öffnen möchte, bekomme ich die Fehlermeldung:
Exception: EAccessViolation
Komisch ist nur, wenn ich wie gesagt das ganze nicht in Klassen trenne funktioniert es.
Ich poste euch mal beide Klassen. Vielleicht sieht einer von euch das Problem.
Die
Gui.pas:
Code:
unit Gui;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, WordEx, Word2000, OleServer;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
WordApplication1: TWordApplication;
WordDocument1: TWordDocument;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
ExpDoc : TWordExp;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var FileName, newFile: OleVariant;
begin
ExpDoc := TWordExp.Create;
ExpDoc.test;
end;
end.
und hier noch die WordEx.pas
Code:
unit WordEx;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Word97, OleServer, Word2000;
type
TWordExp = class(TForm)
SaveDialog1: TSaveDialog;
WordApplication1: TWordApplication;
WordDocument1: TWordDocument;
Constructor Create ;
Procedure test();
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
WordExp: TWordExp;
implementation
{$R *.DFM}
Constructor TWordExp.Create;
Begin
ShowMessage('Object wurde erzeugt!!!');
end;
Procedure TWordExp.test();
var FileName, newFile: OleVariant;
Begin
ShowMessage('OPEN WORD');
FileName := 'c:\vorlage.dot';
WordApplication1.Connect;
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
WordAppLication1.Visible := true;
end;
end.
In der WordEx.pas bringt er an folgender Stelle
WordApplication1.Connect;
die oben beschriebene Fehlermeldung.
Vielen Dank im Vorraus für Ideen