Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ole フィルタのマージ
- From: baba@xxxxxxxxxxxxxxxxxxxxxx
- Date: Thu, 25 Jan 2001 01:35:54 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 01244
# namazu-devel-ja に振っています。
OLE フィルタの二重流通状態は何かとややこしいので、竹迫さんの OLE
フィルタは、CVS リポジトリに完全にマージしちゃう方がいいとおもうん
ですがいかがでしょうか。とくに oleexcel.pl は、竹迫さんバージョン
に置き換えてしまいましょう。動作実績もできてきたし。
それから、olemsword.pl で Word をいちいち終らない方法ですが、以下
の差分で動くようです。つまり new のときに destructor を定義しない
だけでいけるようです。試してみていただけませんでしょうか。これでだ
いぶ速くなっているようにおもいます。
しかしこの方法でも、olepowerpoint.pl だと、
| Win32::OLE(0.15) error 0x800706ba: "RPC サーバーは使えません。"
| in METHOD/PROPERTYGET "Presentations" at /namazu/share/namazu/filter/win32/olepowerpoint.pl line 182
になって、どうもうまくいかないですね。
--
馬場 肇 ( Hajime BABA ) E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士後期課程
--
--- olemsword.pl Mon Jan 22 06:33:58 2001
+++ olemsword.pl.nonstop Thu Jan 25 01:22:39 2001
@@ -151,16 +151,16 @@
package ReadMSWord;
+my $word;
sub ReadMSWord ($$$) {
my ($cfile, $cont, $fields) = @_;
# Copy From Win32::OLE Example Program
# use existing instance if Word is already running
- my $word;
eval {$word = Win32::OLE->GetActiveObject('Word.Application')};
die "MSWord not installed" if $@;
unless (defined $word) {
- $word = Win32::OLE->new('Word.Application', sub {$_[0]->Quit(0);})
+ $word = Win32::OLE->new('Word.Application')
or die "Oops, cannot start Word";
}
# End of Copy From Win32::OLE Example Program
@@ -193,9 +193,16 @@
$doc->close(0);
undef $doc;
- undef $word;
return undef;
+}
+
+END {
+ if (defined $word) {
+ util::vprint("Word->Quit\n");
+ $word->Quit;
+ undef $word;
+ }
}
sub getParagraphs ($$) {