|
Вопрос # 2 732/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Суть вопроса состоит в "правильности" написания подобного кода.
Необходимо добавить текст в Ворд, во множество закладок, которые часто повторяются, поэтому и идут циклы. Как смог, так и сделал))) но вот меня чтото смущает подобный код...циклы...циклы...циклы...
Или может его можно както "оптимизировать"... =)
Приложение: Переключить в обычный режим- for i:=1 to 21 do
- begin
- BM:='n'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(OrgName.Text);
- end;
- for i:=1 to 14 do
- begin
- BM:='ps'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(Surname.Text);
- end;
- for i:=1 to 13 do
- begin
- BM:='pn'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(Name.Text);
- end;
- for i:=1 to 13 do
- begin
- BM:='po'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(Patronymic.Text);
- end;
- for i:=1 to 9 do
- begin
- BM:='pass'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(PasportS.Text);
- end;
- for i:=1 to 9 do
- begin
- BM:='pasn'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(PasportN.Text);
- end;
- for i:=1 to 9 do
- begin
- BM:='pasv'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(PasportV.Text);
- end;
- for i:=1 to 9 do
- begin
- BM:='pasvd'+IntToStr(i);
- R:= Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(PasportVD.Text);
- end;
- for i:=1 to 6 do
- begin
- BM:='inU'+IntToStr(i);
- R:=Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(IndexU.Text[i]);
- end;
- for j:=1 to 3 do
- begin
- for i:=1 to 6 do
- begin
- BM:='inF'+IntToStr(i)+IntToStr(j);
- R:=Doc.Bookmarks.Item(BM).Range;
- R.InsertAfter(IndexF.Text[i]);
- end;
 |
Вопрос задал: rod13 (статус: Посетитель)
Вопрос отправлен: 5 мая 2009, 13:27
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, rod13!
Смотрим внимательно на два первых куска и понимаем, что можно вынести в одну процедурку
procedure inse(bmn:string; count:integer; text:string);
for i:=1 to count do
begin
BM:=bmn+IntToStr(i);
R:= Doc.Bookmarks.Item(BM).Range;
R.InsertAfter(text);
end;
end;
и теперь первые 8 штук заключается в что то подобное
inse('n', 21, OrgName.Text);
inse('ps', 14, Surname.Text);
и так дальше (я только первые две строки написал, но дальше продолжить будет не сложно) - и сразу код стает прозрачнее.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 5 мая 2009, 14:22
Оценка за ответ: 5
Комментарий к оценке: спасибо большое, понял в каком направление мыслить...
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|