Тема: Определить начало абзаца
Доброго времени суток. В Word, как известно, нет спецсимвола для определения начала абзаца. Есть такой способ - "^p^?", используя конец предыдущего абзаца. Но такое не прокатит внутри таблицы и, как ни странно, в случае, если абзац расположен сразу после таблицы. То есть:
[какая-то_таблица]
Текст1
Текст2
...
Здесь я не смогу найти пробел перед "Текст1", чтобы удалить его.
Стояла задача, удалить все начальные и конечные пробелы и tab'ы. Такой код Delphi работает слишком медленно.
Par := WordApp.ActiveDocument.Paragraphs.Item(1);
while Assigned(Par) do
begin
Application.ProcessMessages;
while True do
begin
CH := WordApp.ActiveDocument.Range(Par.Range.Start, Par.Range.Start);
if not CharInSet(PAnsiChar(AnsiString(CH.Text))^, ChSet) then
Break;
CH.Delete(wdCharacter, 1);
end;
if Par.Range.End_ > 2 then
while True do
begin
CH := WordApp.ActiveDocument.Range(Par.Range.End_ - 2, Par.Range.End_ - 1);
if not CharInSet(PAnsiChar(AnsiString(CH.Text))^, ChSet) then
Break;
CH := WordApp.ActiveDocument.Range(Par.Range.End_ - 2, Par.Range.End_ - 2);
CH.Delete(wdCharacter, 1);
end;
Par := Par.Next(1);
if BreakProc then
goto Ex;
end;
Поиск конечных пробелов определил так (вместо вышеописанного кода):
while True do
begin
Application.ProcessMessages;
WordApp.Selection.SetRange(0, 0);
if not WordApp.Selection.Find.Execute(' ^p', EP, EP, False, EP, EP, EP, EP, EP, EP, EP, EP, EP, EP, EP) then
Break;
WordApp.Selection.MoveLeft(wdCharacter, 1, EP);
WordApp.Selection.Delete(wdCharacter, 1);
if BreakProc then
goto Ex;
end;
Как найти начальные?