Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ковертация в WORD и из него, WORD  
:(
    Опции темы
A5uKa
Дата 4.4.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Нужен код для ковертация в WORD и из него...  smile 

Пробую вот это...
Код

Variant word_app;
Variant word_docs;
Variant word_this_document;
char* f = "D:\\www.doc";
word_app = Variant::CreateObject("word.application");
word_docs = word_app.OlePropertyGet("documents");
word_this_document = word_docs.OleFunction("Open",f);
word_app.OlePropertySet("Visible",(Variant)true);


Но выдаёт странную ошибку "Ошибка". Элементов работы с вордом в 2009 с++ нету , кроме того я хочу чтобы оно работало как с 2007 так и с 2003 оффисами.  Что можете посоветовать ?
PM   Вверх
Alca
Дата 4.4.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Doc -> Txt (C++Builder 6.0)
Код

void __fastcall TfrmMain::doConvertFiles(AnsiString asFilePath) {    
    staInfo->SimpleText = "Файл:  " + MinimizeName(asFilePath, staInfo->Canvas, 180);

    //эти файлы не проверяем
    AnsiString asExt = ExtractFileExt(asFilePath).UpperCase();
    AnsiString asFileName = ExtractFileExt(asFilePath).UpperCase();

    if (asExt == ".DOC" || asExt == ".RTF") {                    //ChangeFileExt( Application->ExeName, ".INI" )
        //DOC -> TXT
        Variant vWordBasic = Variant::CreateObject("Word.Basic");
        ////vWordBasic.Exec(PropertySet("Visible") << false);

        //идем по процессам
        PROCESSENTRY32 PC32;
        HANDLE hnd = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if ((int)hnd == -1) {
            return;
        }
        PC32.dwSize = sizeof(PC32);
        int i = Process32First(hnd, &PC32);

        bool bIsWordExists = false; //наличие WINWORD.EXE

        while (bIsWordExists == true) {
            while (i) {
                // PID процесса берётся из PC32.th32ProcessID;
                // Имя файла через ExtractFileName(PC32.szExeFile);
                i = Process32Next(hnd, &PC32);  //ShowMessage(AnsiString(PC32.szExeFile));
                if (AnsiString(PC32.szExeFile).UpperCase() == "WINWORD.EXE") {
                    bIsWordExists = true;
                }
            };
        }
        CloseHandle(hnd);

        vWordBasic.Exec(Procedure("FileOpen")   << asFilePath);                               Sleep(SLEEP_TIME);
        vWordBasic.Exec(Procedure("FileSaveAs") << ChangeFileExt(asFilePath, ".txt") << 3);   Sleep(SLEEP_TIME);
        vWordBasic.Exec(Procedure("AppClose"));

        //сброс всяких read-only
        FileSetAttr(asFilePath, 0);
        //удаляем файл
        do {
            DeleteFile(asFilePath);
        }
        while (FileExists(asFilePath));
    }
}



--------------------
PM WWW ICQ Skype Jabber   Вверх
A5uKa
Дата 4.4.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Спасибо попробую.

Надеюсь с unicod-ом проблем не будет :/

Цитата

[BCC32 Error] MainC.cpp(299): E2451 Undefined symbol 'PROCESSENTRY32'


Это сообщение отредактировал(а) A5uKa - 4.4.2009, 13:57
PM   Вверх
xvr
Дата 5.4.2009, 22:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Alca @ 4.4.2009,  11:47)
Doc -> Txt (C++Builder 6.0)
Код

void __fastcall TfrmMain::doConvertFiles(AnsiString asFilePath) {    

        Variant vWordBasic = Variant::CreateObject("Word.Basic");
        ////vWordBasic.Exec(PropertySet("Visible") << false);

        //идем по процессам
        PROCESSENTRY32 PC32;
        HANDLE hnd = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if ((int)hnd == -1) {
            return;
        }
        PC32.dwSize = sizeof(PC32);
        int i = Process32First(hnd, &PC32);

        bool bIsWordExists = false; //наличие WINWORD.EXE

        while (bIsWordExists == true) {
            while (i) {
                // PID процесса берётся из PC32.th32ProcessID;
                // Имя файла через ExtractFileName(PC32.szExeFile);
                i = Process32Next(hnd, &PC32);  //ShowMessage(AnsiString(PC32.szExeFile));
                if (AnsiString(PC32.szExeFile).UpperCase() == "WINWORD.EXE") {
                    bIsWordExists = true;
                }
            };
        }
        CloseHandle(hnd);

}

А можно узнать смысл манипуляций с CreateToolhelp32Snapshot и циклом while, который ни разу не выполняется и результаты работы которого (если бы даже он выполнился) не используются?
PS. Исходный код должен работать, можно попробовать в Open подать все аргументы (их там еще пачка, все опциональные)
Где хоть ломается?

PM MAIL   Вверх
A5uKa
Дата 6.4.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



не могу разобраться ...

+ на какой элемент можно выносить word текст ...
PM   Вверх
Alca
Дата 6.4.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

на какой элемент можно выносить word текст 

Расшифруй


--------------------
PM WWW ICQ Skype Jabber   Вверх
A5uKa
Дата 6.4.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



По разному форматированный

например :
Цитата

Cтрока1
Строка2


Какой элемент это тянет :/
и какая библиотека для PROCESSENTRY32  ...
PM   Вверх
Alca
Дата 6.4.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

и какая библиотека для PROCESSENTRY32  ...

Код

#include <tlhelp32.h>


Добавлено через 1 минуту и 13 секунд
Цитата

Какой элемент это тянет :/

TRichEdit сгодиться?


--------------------
PM WWW ICQ Skype Jabber   Вверх
A5uKa
Дата 6.4.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Цитата

TRichEdit сгодиться? 

да вот его и пробую. Но не знаю один у него шрифт на весь текст или нет. Вот что я и хочу узнать.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0723 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.