Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

В Word не вставляется большой текст

79K
21 января 2013 года
timondrik
12 / / 09.11.2012
Код:
void Zamena(AnsiString s1, AnsiString s2)
{

vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute",
                   /*FindText=*/ s1.c_str(), /*MatchCase=*/false, /*MatchWholeWord=*/ false,
                   /*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false,
                   /*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/ s2.c_str(),
                   /*Replace=*/2);

}

void __fastcall TaddForm::btnPrintClick(TObject *Sender)
{

  vVarApp = CreateOleObject("Word.Application");
 
  vVarDocs=vVarApp.OlePropertyGet("Documents");
  vVarDocs.OleProcedure("Add","c:\\extract.doc");
  vVarDoc=vVarDocs.OleFunction("Item",1);
 
  vVarDoc.OleProcedure("Activate");
 
  vVarParagraphs=vVarDoc.OlePropertyGet("Paragraphs");
  vVarDoc.OleProcedure("Activate");
  vVarParagraphs.OleProcedure("Add");
  vVarParagraph=vVarParagraphs.OleFunction("Item",1);

  Zamena("%%extract.nMk%%",nMk->Text.Trim());
  Zamena("%%extract.fio%%",fio->Text.Trim());
  Zamena("%%extract.age%%",old->Text.Trim());
  Zamena("%%extract.date.start%%",stLech->Date.FormatString("dd.MM.yyyy"));
  Zamena("%%extract.date.end%%",endLech->Date.FormatString("dd.MM.yyyy"));
  Zamena("%%extract.clDiag%%",klDiag->Text.Trim());
  Zamena("%%extract.complaint%%",jalobi->Text.Trim());

  //Zamena("%%extract.anamnesis%%",anamnez->Text.Trim());
  //Zamena("%%extract.objective%%",objectiv->Text.Trim());

  Zamena("%%extract.givenInspections%%",provObsled->Text.Trim());
  Zamena("%%extract.gaBlood%%",allAnBlood->Text.Trim());
  Zamena("%%extract.baBlood%%",bioAnBlood->Text.Trim());
  Zamena("%%extract.bloodAnalisis%%",anMochi->Text.Trim());
  Zamena("%%extract.ec%%",ekg->Text.Trim());
  Zamena("%%extract.treatment%%",provLech->Text.Trim());
  Zamena("%%extract.recommended%%",recomended->Text.Trim());
  Zamena("%%extract.doctor%%",lechDok->Text.Trim());
  Zamena("%%extract.manager%%",zavOtd->Text.Trim());

  vVarApp.OlePropertySet("Visible", true);
}
Программа вместо вставок вставляет определённый текст, но в тех полях что закомментированных отправляется много знаков и программы выдаёт на это EOleSysError with message 'Ошибка'. Проблема точно в размере текста. Можно ли как то сделать чтобы этой ошибки не было, чтобы она не ругалас при большом тексте?
1
21 января 2013 года
kot_
7.3K / / 20.01.2000
А если не использовать такой вот оригинальный способ рвать гланды через жопу (я имею ввиду функцию Zamena )- текст вставляется? Думаю что никаких проблем не должно возникнуть.
Я бы посоветовал бы не изобретать велосипед, и использовать генераторы отчетов (либо в конце концов реализовать их самому - если уж так хочется). Если же, сердцу близок именно такой метод - тогда надо проверять размер передаваемой строки, ввести кратные переменные для анамнеза и осмотра (например %%extract.anamnesis1%% (первый кусок) и %%extract.anamnesis2%%(второй кусок) и %%extract.anamnesis3%%(третий кусок)), и разбивать строку на части нужного размера (надеясь на то, что анамнез отдельных больных не превысит )))). А лишние куски удалять.
1
21 января 2013 года
kot_
7.3K / / 20.01.2000
Цитата: kot_
А лишние куски удалять.


лишние переменные конечно же имелось ввиду.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог