Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.033 c