Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 665

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Необходимо добавить текст по нажатию кнопки в Word. Есть 5 закладок с именами n1...n5. Во все эти закладки нада записать один и тот же текст.

Если добавлять только в одну закладку, то все получается. А как организовать добавление сразу в 5 мест?) Пытаюсь сделать через цикл, но чето не выходит.
[Error] Unit1.pas(78): Incompatible types

С программированием в делфи плохо знаком =) Может чтото путаю с другими языками, но кажется запись правильная, не пойму в чем дело.

Приложение:
  1. procedure TForm1.AddTextClick(Sender: TObject);
  2. var i: integer;
  3. Bookmark, Doc, R: OleVariant;
  4. begin
  5. Doc:= MsWord.ActiveDocument;
  6. for i:=1 to 5 do
  7. begin
  8. Bookmark:='n'+i;
  9. R:= Doc.Bookmarks.Item(Bookmark).Range;
  10. R.InsertAfter(Edit1.Text);
  11. end;
  12.  
  13. end;


rod13 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: rod13 (статус: Посетитель)
Вопрос отправлен: 20 апреля 2009, 12:20
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Ну, если ошибка в строке

Bookmark:='n'+i;
то замени её на
Bookmark:= 'n' + IntToStr(i);
или на
Bookmark:= Format('n%d', [i]);

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 20 апреля 2009, 13:02
Оценка за ответ: 5

Комментарий к оценке: спасибо большое, оказалось все так просто. =)
привык к автоматическому преобразованию типов и веб-прогр...

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 22 апреля 2009, 20:04; участников в обсуждении: 2.
Шичко Игорь

Шичко Игорь (статус: 9-ый класс), 20 апреля 2009, 12:59 [#1]:

Несовпадение типов
Bookmark:='n'+i; // i - integer, 'n' -String
Думаю надо:
Bookmark:='n'+ IntToStr(i);
МиГрАф

МиГрАф (статус: 1-ый класс), 22 апреля 2009, 20:04 [#2]:

Попробуйте так:
Из закладки System установите на форму DDE1 : TDdeClientConv.
Напишите внутреннюю процедуру:

procedure TForm1.SaveNak(S,P:string);
var T:PChar;
begin
T:=PChar('[EditBookmark.Name = "'+P+'", .Goto][Insert "'+S+'"]');
if not DDE1.ExecuteMacro(T, False)
then ShowMessage('Нет передачи данных');
end;
S - передаваемая строка;
P - имя метки в Word

procedure TForm1.KeyClick(Sender:Object);
const
P:array [1..n] of string=('P1','P2',.......)// массив меток в Word
var i , N : integer;
Tv : PChar;
begin
DDE1.ServiceApplication:=Edit1.Text; // в Edit1.Text содержится весь путь к WINWORD.EXE
DDE1.OpenLink;
Tv:=PChar('[FileOpen "'+FileName+'"][StartOfDocument]');//полное имя файла куда нужно внести текст
DDE1.ExecuteMacro(Tv, False);
For i := 1 to N do SaveNak(Text,P[i]);// Text - передаваемый текст
end;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:34
Выполнено за 0.03 сек.