Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2008, 19:18   #1
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
По умолчанию OLE

Помогите, пожалуйста, перевести выражение из Delphi на C++:
Delphi:
...
var E:Variant;
...
begin
E:=CreateOleObject('Excel.Applicati on');
E.Visible:=true;
if Form1.OpenDialog1.Execute then
E.WorkBooks.Open(Form1.OpenDialog1. FileName,ReadOnly=FALSE);
end;
...
C++:
...
Variant E;
...
{
E=CreateOleObject("Excel.Applicatio n");
E.OlePropertySet("Visible",true);
if (!Form1->OpenDialog1->Execute)
{ ? }
}
...
Как выглядит на С++ выделенное красным выражение?
Maks1978 вне форума Ответить с цитированием
Старый 29.10.2008, 10:06   #2
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
По умолчанию

Полная спецификация вызова метода Open имеет следующий вид:

Open(FileName, UpdateLink, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU);

Обязательным является первый аргумент.Но мне нужен был ещё ReadOnly=false, потому что при игнорировании его у меня Excel открывал файл в режиме только для чтения автоматически. Между FileName и ReadOnly стоит UpdateLink - на С++ мне нужно было его проигнорировать, на Delphi это делается очень просто.
На одном немецком сайте наткнулся на одно выражение:

Variant vFileName, vWDocuments, vWDocument, vReadOnly, vLink, vFormat, vReadPass;
AnsiString strOpenFile, strPasswort;
vFileName = Variant(strOpenFile);
// vFileName = "c:\\test2.xls";
vLink = Unassigned;
vReadOnly = false;
vFormat = Unassigned;
// vReadPass = strPasswort;
vReadPass = "test";
wbSet.OleFunction("Open", vFileName, vLink, vReadOnly, vFormat, vReadPass);


Попробовал написать у себя такое выражение:

Variant WorkBooks=E.OlePropertyGet("WorkBoo ks");
WorkBooks.OleFunction("Open",OpenDi alog1->FileName.c_str(),Unassigned,false) ;


Всё заработало как в Delphi.
Maks1978 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OLE Maks1978 Общие вопросы C/C++ 1 29.10.2008 10:10
Печать из OLE Experementator Общие вопросы Delphi 1 25.04.2008 20:25
OLE ??? Selena Общие вопросы Delphi 3 05.01.2008 18:00
OLE-контейнер Flyer БД в Delphi 6 28.08.2007 16:27