Показать сообщение отдельно
Старый 04.10.2005, 16:22   #2  
tumev is offline
tumev
Участник
 
30 / 10 (1) +
Регистрация: 12.09.2005
Разумеется следовало оптимизировать некоторые 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?