Sign in Join
Wiki copytemporary

IDE Window: Extract Procedure/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: IDE Window: Extract Procedure/ru

OldNewLine
1+Аннотация: "Extract Procedure" \[извлечение процедуры\] принимает некоторые выбранные инструкции pascal и создает новую процедуру/метод из этого кода. Этот инструмент полезен для разделения больших процедур или для легкого создания новой процедуры из некоторого кода.
2+
3+Основной пример:
4+
5+``` pascal
6+ procedure DoSomething;
7+ begin
8+ CallSomething;
9+ end;
10+```
11+
12+Выберите строку "CallSomething;" и сделайте Extract Proc. Откроется диалоговое окно\[, где\] вы можете выбрать тип и имя создаваемой процедуры. Например: procedure, "NewProc". Результат:
13+
14+``` pascal
15+ procedure NewProc;
16+ begin
17+ CallSomething;
18+ end;
19+
20+ procedure DoSomething;
21+ begin
22+ NewProc;
23+ end;
24+```
25+
26+Вы можете видеть, что новая процедура "NewProc" была создана с выделением в качестве тела \[процедуры\], и старый код был заменен \[ее\] вызовом.
27+
28+Локальные переменные и параметры:\
29+«Extract Proc» сканирует используемые переменные и автоматически создает список параметров и локальные переменные. Пример:
30+
31+``` pascal
32+ procedure TForm1.DoSomething(var Erni, Bert: integer);
33+ var
34+ i: Integer; // Комментарий
35+ begin
36+ Erni:=Erni+Bert;
37+ for i:=Erni to 5 do begin
38+ |
39+ end;
40+ end;
41+```
42+
43+Выберите цикл for и создайте новую процедуру "NewProc". Локальная переменная i используется только в выбранном \[тексте\], поэтому она будет перенесена в новую процедуру. \[Параметр-переменная\] Erni также используется в остальном коде, поэтому она станет параметром \[новой процедуры\].
44+
45+Результат:
46+
47+``` pascal
48+ procedure NewProc(const Erni: integer);
49+ var
50+ i: Integer; // Комментарий
51+ begin
52+ for i:=Erni to 5 do begin
53+ |
54+ end;
55+ end;
56+
57+ procedure TForm1.DoSomething(var Erni, Bert: integer);
58+ begin
59+ Erni:=Erni+Bert;
60+ NewProc(Erni);
61+ end;
62+```
63+
64+Вы можете увидеть, что "i" перенесено в новую процедуру (Примечание: включая ее комментарий) и Erni.
65+
66+Ограничения:\
67+Pascal - очень мощный язык, поэтому не ожидайте, что он будет работать с каждым кодом. Текущие ограничения/ToDo:
68+
69+- проверить, ограничены ли границы выбора на границах операторов
70+- операторы "with"
71+
72+---
73+*From the Free Pascal wiki, page "IDE Window: Extract Procedure/ru", as it stood on 2020-02-17 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history