Консультация № 187050
25.12.2012, 14:15
320.38 руб.
0 7 1
Уважаемые эксперты! Пожалуйста, помогите с решением программы на Delphi:
Составить статистику по количеству различных типов автофигур (произвольных фигур) в заданном пользователем документе word. Без использования глобальных переменных... Можно только MSWord: Variant;

Обсуждение

Неизвестный
26.12.2012, 12:29
общий
Помогите пожалуйста с решением...
Неизвестный
28.12.2012, 00:55
общий
это ответ
Здравствуйте, Nike!

Предлагаю следующий вариант решения.
На форме Button1 и Edit1 (для результата)
Исходный файл 1.doc находится на диске C:

Код и описание в приложении.
Основываемся на том, что объекты при создании имеют имена типа "Line 2", "Oval 4" и т.д.

Вопросы - пишите в форум.
Удачи

Приложение:
uses ..., ComObj, StrUtils; // добавляем модули

...

procedure TForm1.Button1Click(Sender: TObject);
var
W, D: variant;
i, j, count_tip: integer;
tip: string;
tip_mas: array of string;
priznak: boolean;

begin
W:= CreateOleObject('Word.Application'); //запускаем Word
W.Visible:= True;
D:= W.Documents.Open('C:\1.doc'); // открываем файл
count_tip:= 0;
SetLength(tip_mas, count_tip); //обнулили массив

for i:= 1 to D.Shapes.Count do // "пробегаем" по объектам Shapes
begin
tip:= D.Shapes.Item(i).Name; // считываем имя
tip:= leftStr(tip, Pos(' ', tip) - 1); // выделяем тип объекта
if count_tip = 0 then // создаем первый элемент массива типов
begin
count_tip:= 1;
SetLength(tip_mas, count_tip);
tip_mas[count_tip-1] := tip;
end;

if count_tip > 0 then // заполняем остальные типы, предварительно "пробежав" по массиву
begin
priznak:= False;
for j:= 0 to count_tip - 1 do
if tip_mas[j] = tip then priznak:= True;

if not priznak then // если совпадений нет - то добавляем тип
begin
count_tip:= count_tip + 1;
SetLength(tip_mas, count_tip);
tip_mas[count_tip-1] := tip;
end;

end;

end;

if count_tip > 0 then //выводим результат
Edit1.Text := IntToStr(count_tip)
else
Edit1.Text := '0';

D.Save; // сохраняем, закрываем, выходим из Word
D.Close;
W.Quit;
W:= UnAssigned;

end;
Неизвестный
28.12.2012, 16:34
общий
Здравствуйте, простите что не мог ответить раньше... По программе есть несколько вопросов:
1. Создал документ на диске С и вставил несколько автофигур. Проблема: Сколько бы не вставлял в документ этих автофигур в edit выводит 1.
2. Желательно выводить в мемо в формате: Название - количество.
Неизвестный
28.12.2012, 18:29
общий
Но ведь в задании указано "статистику по количеству различных типов автофигур". Т.е. если все автофигуры одного типа, то, конечно, будет выводиться 1 (один тип).
Если же нужна аналитика по типам и количеству каждого типа, то это нужно доработать.
Уточните задание, завтра смогу доработать. (или сегодня вечером).
Неизвестный
28.12.2012, 19:32
общий
1. В документ добавлял разные типы автофигур... Результат все равно 1...
Если можно доработайте эту программу по расчету количества разных автофигур и отдельной кнопкой вывод аналитики и количества каждого типа...
Неизвестный
28.12.2012, 23:39
общий
28.12.2012, 23:40
В прикрепленном архиве:
- файлы доработанного проекта Delphi
- файл 1.doc
- файл с изображением результата
Прикрепленные файлы:
d83d4ea8be6817311a89a26a99c1b060.zip
Неизвестный
29.12.2012, 12:18
общий
Спасибо большое...
Форма ответа