Модератор: Модераторы
procedure TForm1.Button1Click(Sender: TObject);
var
OC: TMgOleController;
begin
OC := TMgOleController.Create;
OC.CreateOleObject('Word.Application');
OC.SetProperty('Visible',[True]);
OC.Free; // <<<<< - исключение
end;{ TForm1 }
SAK писал(а):Попробовал указанный компонент. EXE-шники приложенные для проверки работают, а вот после компиляции этих же примеров в Lazarus 0.9.22 (FPC 2.0.4) незначительно изменённых:Код:
procedure TForm1.Button1Click(Sender: TObject);
var
OC: TMgOleController;
begin
OC := TMgOleController.Create;
OC.CreateOleObject('Word.Application');
OC.SetProperty('Visible',[True]);
OC.Free; // <<<<< - исключение
end;{ TForm1 }
приводит к исключению на указанной строке. Причину пока не выяснил.
OC1 := TMgOleController.Create;
OC.CreateOleObject('Excel.Application');
OC.CallFunction('Add',[EmptyStr,0]);<-----
OC.SetProperty('Visible',[True]);
MgOle2Auto.pas(103,16) Error: function header doesn't match the forward declaration "TMgOleController.GetActiveOleObjectByClassID(TGuid):IDispatch;Register"
yuray писал(а):Можно. Смотри здесь
GrayEddy писал(а):Возьмите Turbo Delphi Explorer, скомпилируйте dll.
Все, проблем нет.
Wrd := CreateOleObject('Word.Application');
Wrd.Documents.Add;
Wrd.Selection.TypeText(UTF8ToAnsi('Лазарус'));
var s: widestring;
...
s := Utf8ToAnsi('Лазарус это классно');
Wrd := CreateOleObject('Word.Application');
Wrd.Documents.Add;
Wrd.Selection.TypeText(s);
procedure TForm1.Button1Click(Sender: TObject);
begin
s:=Utf8ToAnsi('Тест ворда из Лазаруса');
Wrd := CreateOleObject('Word.Application');
Wrd.Visible := true; //<==грабли тут
Wrd.Documents.Add;
Wrd.Selection.Font.Size := 20;
Wrd.Selection.TypeText(s);
Wrd.ActiveDocument.SaveAs('c:\test.doc');
Wrd.ActiveDocument.Close;
Wrd.Quit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
s:=Utf8ToAnsi('Тест ворда из Лазаруса');
Wrd := CreateOleObject('Word.Application');
Wrd.Documents.Add;
Wrd.Selection.Font.Size := 20;//<==теперь грабли тут
Wrd.Selection.TypeText(s);
Wrd.ActiveDocument.SaveAs('c:\test.doc');
Wrd.ActiveDocument.Close;
Wrd.Quit;
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 219