Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Win32::OLE и необязательные параметры методов   Roman V Tchemisov   07 Nov 2004 18:35:41 
Архивное /ru.perl/24194c4b8c701.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional