Интересна грешка
5 отговора
238 прегледа
Интересна грешка
Имам инсталиран Office 97 и Office XP. Програмите ми на Delphi 5, които използват Office 97 работеха добре, но изневиделица се появи следната грешка.
Unit Word(Excel) 97 was compiled with a differnet version of Office 97.Assistant.
Деинсталирах и инсталирах Delphi, но проблема не се разреши. Може би процедурата по деинсталиране и инсталиране на Office може да ми реши проблема, но ако някой предложи някакво решение...
Unit Word(Excel) 97 was compiled with a differnet version of Office 97.Assistant.
Деинсталирах и инсталирах Delphi, но проблема не се разреши. Може би процедурата по деинсталиране и инсталиране на Office може да ми реши проблема, но ако някой предложи някакво решение...
Re: Интересна грешка
При инсталиране на Delphi то пита за версията на Office. Причината е банална - в самото Delphi има написани голям брой сървъри за Office. Лошото е обаче че дори и в Delphi 6 сървърите са ориентирани до Office 2000.
Решението на проблема е твърде банално и същевременно твърде неприятно - компонентите от офиса да се ползват без готовите сървъри - например с Ole. Тогава грешки няма да има, но трябва да се познава COM и ала-балата с управлението и структурата на обектите от офиса.
чети и дишай по-леко
Решението на проблема е твърде банално и същевременно твърде неприятно - компонентите от офиса да се ползват без готовите сървъри - например с Ole. Тогава грешки няма да има, но трябва да се познава COM и ала-балата с управлението и структурата на обектите от офиса.
чети и дишай по-леко
Re: Интересна грешка
Това е много лошо. Значи казваш, че ще имам проблеми с другите офиси като моята програма е за 2000. COM ще ме спаси ли ? Спомням си, че имах някакво трудност, но мога да го портна.
by Waz Gaa
[email protected]
by Waz Gaa
[email protected]
Re: Интересна грешка
function GetSelText: string;
var
WordApp: Variant;
begin
try
WordApp := GetActiveOleObject('Word.Application');
Result := WordApp.Selection.Range.Text;
except
Result := '';
end;
end;
Tova ne bi trqbvalo da ima problemi s machina s Word, nezavisimo ot versiqta nali ?
by Waz Gaa
[email protected]
var
WordApp: Variant;
begin
try
WordApp := GetActiveOleObject('Word.Application');
Result := WordApp.Selection.Range.Text;
except
Result := '';
end;
end;
Tova ne bi trqbvalo da ima problemi s machina s Word, nezavisimo ot versiqta nali ?
by Waz Gaa
[email protected]
Re: Интересна грешка
Не съм се задълбавал много с офисите. Правих програми за връзка с Word и Excel 97 и след като излезе Delphi 6 се опитах да ги настроя на Word 2000, но се оказа, че почти всички функции имат допълнителни параметри и не ми се занимаваше наново да ги изследвам, и продължих с 97. След инсталацията на Office XP случайно пуснах една програма, която е правена за 97 и за мое учудване работеше нормално.
Re: Интересна грешка
Значи историята е следната:
Word, Excel и прочие дивотии са организирани като COM обекти. За да можеш да им ползваш свойствата, методите и прочие трябва да укажеш на кой обект какво викаш. Единия вариант е да го указваш като просто го знаеш - OLE. Другия вариант е да опишат методите му, както е направено със стандартните контроли и тутурутките на обекта да са "видими" с Delphi. Така са написани компонентите от палитра Servers.
Проблем може да има когато се ползва офис Х, а се използват сървърите /компонентите/ за офис У - може да се различава описанието им. В общия случай е по-безопасно да се ползва Ole-то - понеже човек гледа от M$ документацията и ще ползва само по-стандартните методи. Но силата на Delphi е в удобството - затова има смисъл да се ползват сървърите - за да не си играе човек да помни "къв беше тоя метод и кви му беа параметрите..."
Друг интересен и стандартен начин да не се ползват готовите сървъри е да се импортне TLB-то на интересуващия ни обект, в него са описани всичките му дивотии. Подобно упражнение има силен смисъл когато интересуващата ни част от Windows, Office и т.н. не е описана в Delphi - например за Internet Explorer.
чети и дишай по-леко
Word, Excel и прочие дивотии са организирани като COM обекти. За да можеш да им ползваш свойствата, методите и прочие трябва да укажеш на кой обект какво викаш. Единия вариант е да го указваш като просто го знаеш - OLE. Другия вариант е да опишат методите му, както е направено със стандартните контроли и тутурутките на обекта да са "видими" с Delphi. Така са написани компонентите от палитра Servers.
Проблем може да има когато се ползва офис Х, а се използват сървърите /компонентите/ за офис У - може да се различава описанието им. В общия случай е по-безопасно да се ползва Ole-то - понеже човек гледа от M$ документацията и ще ползва само по-стандартните методи. Но силата на Delphi е в удобството - затова има смисъл да се ползват сървърите - за да не си играе човек да помни "къв беше тоя метод и кви му беа параметрите..."
Друг интересен и стандартен начин да не се ползват готовите сървъри е да се импортне TLB-то на интересуващия ни обект, в него са описани всичките му дивотии. Подобно упражнение има силен смисъл когато интересуващата ни част от Windows, Office и т.н. не е описана в Delphi - например за Internet Explorer.
чети и дишай по-леко