|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Roman V Tchemisov 2:5020/400 07 Nov 2004 18:35:41 To : All Subject : Win32::OLE и необязательные параметры методов -------------------------------------------------------------------------------- Пробую через Win32::OLE работать с Corel DRAW 12. Почему-то не могу вызывать методы у которых есть необязательные параметры. Hапример, CreateDocument срабатывает, а SaveAs нет. При выполнении такого кода: use strict; use Win32::OLE; use Win32::OLE::Const; my $server = Win32::OLE->new('CorelDRAW.Application.12') or die "$!"; #my $cdr = Win32::OLE::Const->Load($server); my $doc = $server->CreateDocument; $doc->SaveAs('test.cdr'); print Win32::OLE->LastError(), "\n"; $doc->Close(); получаю: Win32::OLE(0.1701) error 0x80020005: "Hесовпадение " in METHOD/PROPERTYGET "SaveAs" argument 1 Вот описание метода SaveAs из справочной системы Corel'а: ==============справка============== Document.SaveAs Sub SaveAs(ByVal FileName As String, [ByVal Options As StructSaveAsOptions = Nothing]) Description The SaveAs method allows you to save the document to a different file and specify additional options through the StructSaveAsOptions object. Parameters Description FileName Specifies the name the document you are saving [in] Options Specifies the save options of the document [in] Optional Default value = Nothing Example The following example saves the document to the original file if the document has been modified. It then creates a copy of the document, saving it in the CorelDRAW 9 file format. Sub Test() Dim opt As New StructSaveAsOptions If ActiveDocument.Dirty Then ActiveDocument.Save opt.EmbedICCProfile = False opt.EmbedVBAProject = True opt.Filter = cdrCDR opt.IncludeCMXData = False opt.Overwrite = True opt.Range = cdrAllPages opt.ThumbnailSize = cdr10KColorThumbnail opt.Version = cdrVersion9 ActiveDocument.SaveAs "C:\Image9.cdr", opt End Sub ==============справка============== Если я сделаю: $doc->SaveAs('test.cdr', undef); то получаю Win32::OLE(0.1701) error 0x80020005: "Hесовпадение " in METHOD/PROPERTYGET "SaveAs" argument 2 Пробую через именованые аргументы: $doc->SaveAs({FileName => 'test.cdr'}); получаю Win32::OLE(0.1701) error 0x80020005: "Hесовпадение " in METHOD/PROPERTYGET "SaveAs" argument "FileName" Многократное чтение документации к просветлению не привело. В общем, клинический случай. Объясните, плз, что я делаю не так и как надо правильно. С уважением, Роман -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5.3 * Origin: IrTI (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/24194c4b8c701.html, оценка из 5, голосов 10
|