Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Microsoft Word [D6]


tormoz ©   (2004-11-21 21:26:00) 

Подскажите пожалуйста коды непечатаемых символов в Word.
То есть Enter=#13, пробел=#32...
Мне нужны коды других непечатаемых символов: Окочания ячейки таблицы, конца строки таблицы, перевод строки в ячейке таблицы и другие.
Помогоите!!!


YurikGL   (2004-11-21 23:06:00) [1]

Обманул я ее :-)

var
st:string;
app,vr1,vr2:Variant;

try
app := CreateOleObject('Word.Application');
App.Visible := True;

//делаем что надо...
for i1:=1 to app.ActiveDocument.Characters.Count do begin
st:=(app.ActiveDocument.Characters.item(i1).Text);
if st[1] in ['A'..'Z','a'..'z']  
  then app.ActiveDocument.Characters.item(i1).Text:='1';
                                                   end;
finally
 App:=Unassigned;
end;


З.Ы. tormoz, Я хочу небольшой фак по этим вещам собрать. Если можешь отпиши мне свои координаты на yglushchenko[ #!#]polygon-group.ru или в аське со мной свяжись.


tormoz   (2004-11-21 22:47:00) [2]


> YurikGL ©   (21.11.04 22:43) [14]

:-)

ладно спасибо за помощь. буду продолжать разбираться завтра.

Если кто знает, пишите!
Желательно с W:=CrearteOleObj('word.application');


YurikGL   (2004-11-21 22:43:00) [3]


> tormoz   (21.11.04 22:39) [13]

Все, что могу посоветовать - написать функцию типа

function BeMyChar(input:char):boolean;
var
f:boolean;
Begin
case input of
 'a': BeMyChar:=true;
 'b': BeMyChar:=true;
 'c': BeMyChar:=true;
...
 else    BeMyChar:=false;

end;


Хотя лучше все же с in разобраться


tormoz   (2004-11-21 22:39:00) [4]


> YurikGL ©   (21.11.04 22:33) [12]

Смысл тот же. что и [11]. У меня ругается на in, даже если я копирую код один в один. Раньше эта функция работала как надо, на целых числах чейчас работает, а на символах нет


YurikGL   (2004-11-21 22:33:00) [5]

Еще вариант

procedure TForm1.Button2Click(Sender: TObject);
var
ch:char;
i1:shortint;
Begin
try

WordApplication1.Connect;
for i1:=1 to WordApplication1.ActiveDocument.Characters.Count do begin
ch:=char(WordApplication1.ActiveDocument.Characters.Item(i1).Text[1]);
if ch in ['A'..'Z','a'..'z' ,'a'..'z'{ íó è âñå ïå÷àòíûå ñèìâîëû}]
  then WordApplication1.ActiveDocument.Characters.Item(i1).Text:='1';//êàæäûé ñèìâîë ìåíÿåì íà '1'
                                                                 end;
except
WordApplication1.Disconnect;
end;
WordApplication1.Disconnect;


YurikGL   (2004-11-21 22:27:00) [6]


> tormoz   (21.11.04 22:22) [10]

Попробуй поиграться с преобразованием типов в

if char(WordApplication1

или попробуй

in [ #код символа 'a'..#код символа 'z'{ ну и все печатные символы}]

Кстати, у меня все работает D7 компоненты для office2000

procedure TForm1.Button2Click(Sender: TObject);
var
i1:shortint;
Begin
try

WordApplication1.Connect;
for i1:=1 to WordApplication1.ActiveDocument.Characters.Count do
if char(WordApplication1.ActiveDocument.Characters.Item(i1).Text[1]) in ['A'..'Z','a'..'z' ,'a'..'z'{ну и все печатные символы}]
  then WordApplication1.ActiveDocument.Characters.Item(i1).Text:='1';//каждый символ меняем на '1'
except
WordApplication1.Disconnect;
end;
WordApplication1.Disconnect;
end;


tormoz   (2004-11-21 22:22:00) [7]


> YurikGL ©   (21.11.04 22:15) [8]

на строку с inвыдает Invalid typecast


YurikGL   (2004-11-21 22:17:00) [8]

в YurikGL ©   (21.11.04 22:15) [8] фигню написал местами

WordApplication1.Connect;
for i1:=1 to WordApplication1.ActiveDocument.Characters.Count do
 if char(WordApplication1.ActiveDocument.Characters.Item(i1).Text[1]) in ['A'..'Z','a'..'z' ,'a'..'z'{ ну и все печатные символы}]
   then WordApplication1.ActiveDocument.Characters.Item(i1).Text:='1';//каждый символ меняем на '1'
except
WordApplication1.Disconnect;
end;
WordApplication1.Disconnect;


YurikGL   (2004-11-21 22:15:00) [9]

tormoz   (21.11.04 22:04) [7]

WordApplication1.Connect;
vr2:=WordApplication1.ActiveDocument.Characters.Count;
WordApplication1.ActiveDocument.Range(vr1,vr2).Text;
try
for i1:=1 to WordApplication1.ActiveDocument.Characters.Count do
 if char(WordApplication1.ActiveDocument.Characters.Item(i1).Text[1]) in ['A'..'Z','a'..'z'{ ну и все печатные символы}]
   then WordApplication1.ActiveDocument.Characters.Item(i1).Text:='1';//каждый символ меняем на '1'
WordApplication1.Disconnect;


tormoz   (2004-11-21 22:04:00) [10]


> YurikGL ©   (21.11.04 22:01) [6]


> for i:=1 to w1.activedocument.character.count do begin
>  по определенному алгоритму работаем с
>  w1.activedocument.character.items[i]
> end;

Разницы нет, но как мне символ пропустить, чтобы он не обрабатывался?
Кстати, программа еще рисунки считает каким-то символом и заменяет их тоже :-(


YurikGL   (2004-11-21 22:01:00) [11]


> При прохождении по символам вордовского документа(Wordapplication.Selection.MoveRight)
> и замене некоторых символов (по некоторому алгоритму вычисляются
> позиции этих символов от начала документа) на другие, программы
> пытается заменить также непечатные символы(все вышеперечисленные,
> не знаю, может попадуться еще и другие), мне надо вставить
> обработку, чтобы не трогать эти символы, пропускать их


А зачем moveleft? не проще что-то типа

for i:=1 to w1.activedocument.character.count do begin
 по определенному алгоритму работаем с
 w1.activedocument.character.items[i]
end;


YurikGL   (2004-11-21 21:58:00) [12]


> tormoz   (21.11.04 21:26)  

Попробуй взять в буфер и посмотреть его содержимое.
Или скопировать в строку участок текста типа w1.activedocument.range(начало,конец).text где между начальным символом и конечным есть искомые символы а потом эту строку посмотреть через watch или integer(st[номер искомого символа])

Хотя, насколько я помню, с буфером в свое время у меня что-то не получилось.


tormoz   (2004-11-21 21:49:00) [13]


> KilkennyCat ©   (21.11.04 21:45) [3]

Я думал об этом, но алгоритм расчитывает позицию символаот начала текста, и потом, тогда надо знать все печатаемые, то есть хранить их где-то отдельно и сравнивать каждый раз символ под курсором с этим справочником :-( ?????
Или я что-то не правильно понимаю?


KilkennyCat   (2004-11-21 21:45:00) [14]

тогда может просто трогать печатаемые?


tormoz   (2004-11-21 21:37:00) [15]


> KilkennyCat ©   (21.11.04 21:32) [1]

Где смотреть?
При прохождении по символам вордовского документа(Wordapplication.Selection.MoveRight) и замене некоторых символов (по некоторому алгоритму вычисляются позиции этих символов от начала документа) на другие, программы пытается заменить также непечатные символы(все вышеперечисленные, не знаю, может попадуться еще и другие), мне надо вставить обработку, чтобы не трогать эти символы, пропускать их


KilkennyCat   (2004-11-21 21:32:00) [16]


> Окочания ячейки таблицы, конца строки таблицы

с чего Вы взяли, что это делается через непечатаемые символы? см. формат MSWord8


Наверх

Титульная страница Поиск, карта сайта Написать письмо