Разумеется следовало оптимизировать некоторые select-ы
Но (!) самое интересное было в определении версии Word
<экземпляр Com класса>.version()
Метод FindField класса ComWordDocument_RU
содержит следующий кусок кода:
...................
if (substr(m_comApplication.version(), 1, 1) >= '9') // Word 2000 and later
{
field = fields.item(_bookMark);
}
else
{
for (i=1 ; i<= fields.count() ; i+=1)
{
fieldTmp = fields.item(i);
......................
substr(m_comApplication.version(), 1, 1) возвращает 1, если Word 2003.
Код исправлен следующим образом:
...........
sbuf =substr(m_comApplication.version(), 1, 1);
if (sbuf >= '9' || sbuf == '1') // Word 2000 and later
{
field = fields.item(_bookMark);
}
else
{
for (i=1 ; i<= fields.count() ; i+=1)
{
fieldTmp = fields.item(i);
..................
Работает кратно быстрее
Известна ли версия Word, которая начинается на 1 и раньше 2003?
|