Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.02.2012, 15:32
1450 1450 вне форума
Прохожий
 
Регистрация: 01.02.2012
Сообщения: 9
Репутация: 10
По умолчанию Автоматизация Word + Delphi

Добрый день, в коде имеется строчка
Код:
MSWord.ActiveDocument.Range(Start:=MSWord.Selection.Start, End:=MSWord.Selection.Start).InsertBreak;
Возникают проблемы со словом End, так как он, видимо, расценивает его как оператор Delphi. Проявляется это в том, что в коде ПОСЛЕ этой строчки (тут напишу максимально банальными словами, не могу сформулировать нормально):
"начинаю писать Form1. и Делфи не выдает список визуальных компонентов и св-в формы, появляется ошибка отсылающая к USES, то есть не получается обратиться ни к каким компонентам формы".
Если убрать эту строчку, то все работает нормально.
Подскажите пожалуйста, как решить проблему.

Последний раз редактировалось 1450, 28.02.2012 в 16:29.
Ответить с цитированием
  #2  
Старый 28.02.2012, 17:17
1450 1450 вне форума
Прохожий
 
Регистрация: 01.02.2012
Сообщения: 9
Репутация: 10
По умолчанию

Нашел такую информацию:
For instance, if Excel uses an Object Pascal keyword in its code, then we need to make an alias for that keyword. For instance, Excel uses End in several places. This is a Delphi keyword, and so we append a space on to the end of it, converting the word End to End_. This puts an end to name conflicts.
Но не понял, что бы это значило. Пробовал ставить пробел после "End" - не помогло.
Не работает и

Код:
MSWord.ActiveDocument.Range(Start:=MSWord.Selection.Start, End_:=MSWord.Selection.Start).InsertBreak;

Последний раз редактировалось 1450, 28.02.2012 в 17:58.
Ответить с цитированием
  #3  
Старый 29.02.2012, 11:34
1450 1450 вне форума
Прохожий
 
Регистрация: 01.02.2012
Сообщения: 9
Репутация: 10
По умолчанию

Проблему решил другим путем, тему можно закрывать.
Ответить с цитированием
  #4  
Старый 29.02.2012, 11:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Предполагаю, что примерно так:
Код:
Start := MSWord.Selection.Start;
Finish := MSWord.Selection.Start;
MSWord.ActiveDocument.Range(Start, Finish).InsertBreak;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 29.02.2012, 15:52
1450 1450 вне форума
Прохожий
 
Регистрация: 01.02.2012
Сообщения: 9
Репутация: 10
По умолчанию

Вряд ли.. Start и End - зарезервированные имена свойств Range. там не 2 параметра можно указать, а около 40
Ответить с цитированием
  #6  
Старый 29.02.2012, 16:06
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

смотря что такое MSWord: OleVariant или TWordApplication.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 29.02.2012, 16:07
1450 1450 вне форума
Прохожий
 
Регистрация: 01.02.2012
Сообщения: 9
Репутация: 10
По умолчанию

Код:
var MSWord:Variant
Глобальная переменная
Ответить с цитированием
  #8  
Старый 29.02.2012, 16:30
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

при позднем связывании можно писать все что угодно - компилятору до всего этого...
Код:
var
  v: OleVariant;
begin
  v.HelloWorld(begin:='Windows', end:=0, procedure:=True);
end;
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 29.02.2012 в 16:33.
Ответить с цитированием
  #9  
Старый 01.03.2012, 06:32
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Самое простое решение:
Код:
MSWord.ActiveDocument.Range(MSWord.Selection.Start, MSWord.Selection.Start).InsertBreak;
Надо ведь понимать что Start, End не обязательно указывать. Главное просто знать количество параметров и их расположение.
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 01.03.2012 в 06:37.
Ответить с цитированием
  #10  
Старый 01.03.2012, 12:03
1450 1450 вне форума
Прохожий
 
Регистрация: 01.02.2012
Сообщения: 9
Репутация: 10
По умолчанию

Самым простым (в моем случае) оказалось
Код:
MSWord.Selection.InsertBreak
Буду надеяться, что не придется с рэйнджем работать..

Ildar-tsr:
В том и проблема, что там параметров намного больше 2.
Ответить с цитированием
  #11  
Старый 01.03.2012, 12:24
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от 1450
Ildar-tsr:
В том и проблема, что там параметров намного больше 2.

Кто сказал?
__________________
Google в помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:23.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025