Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Microsoft Word   Найти похожие ветки 

 
tormoz   (2004-11-21 21:26) [0]

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


 
KilkennyCat ©   (2004-11-21 21:32) [1]


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

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


 
tormoz   (2004-11-21 21:37) [2]


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

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


 
KilkennyCat ©   (2004-11-21 21:45) [3]

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


 
tormoz   (2004-11-21 21:49) [4]


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

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


 
YurikGL ©   (2004-11-21 21:58) [5]


> tormoz   (21.11.04 21:26)  

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

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


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


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


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

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


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


> 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:15) [8]

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;


 
YurikGL ©   (2004-11-21 22:17) [9]

в 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;


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


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

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


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


> 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;


 
YurikGL ©   (2004-11-21 22:33) [12]

Еще вариант

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;


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


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

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


 
YurikGL ©   (2004-11-21 22:43) [14]


> 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:47) [15]


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

:-)

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

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


 
YurikGL ©   (2004-11-21 23:06) [16]

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

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 или в аське со мной свяжись.



Страницы: 1 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
3-1099945177
kirilllius
2004-11-08 23:19
2004.12.05
временный файл Access


1-1100945007
человек
2004-11-20 13:03
2004.12.05
Ширина графика в TChart (как отловить)


1-1100860387
TankMan
2004-11-19 13:33
2004.12.05
Как запускать с параметрами так это легко, а как возвращать...


11-1083763141
RA
2004-05-05 17:19
2004.12.05
О GlueCut


14-1100664744
ИМХО
2004-11-17 07:12
2004.12.05
Я плакаль: Погоня за футбольным судьей на джипе в Молдавии