IDE Window: Extract Procedure/sk

From Free Pascal wiki
Revision as of 21:03, 24 December 2007 by Slavko (talk | contribs) (vytvorenie / preklad)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

(Extract Procedure)

Extrahovať procedúru vystrihne vybratú časť kódu Pascalu a z neho vytvára novú procedúru/metódu. Tento nástroj je užitočný na rozdelenie veľkých procedúr alebo na jednoduché vytvorenie novej procedúry z nejakého kódu.

Základný príklad: <pascal>

procedure DoSomething;
begin
  CallSomething;
end;

</pascal>

Vyberte riadok "CallSomething;" a urobte Extrahovať procedúru. Vyskočí dialógové okno, v ktorom môžete zvoliť typ a meno procedúry, ktorá á byť vytvorená. Napríklad: procedure, "NewProc".

Výsledok: <pascal>

procedure NewProc;
begin
  CallSomething;
end;

procedure DoSomething;
begin
  NewProc;
end;

</pascal>

Môžete vidieť, že bola vytvorená nová procedúra "NewProc", do jej tela bol vložený výber a starý kód bol nahradený volaním novej procedúry.

Lokálne premenné a parametre:

Nástroj Extrahovať procedúru hľadá použité premenné a automaticky vytvára zoznam parametrov a lokálnych premenných. Príklad: <pascal>

procedure TForm1.DoSomething(var Erni, Bert: integer);
var
  i: Integer; // Comment
begin
  Erni:=Erni+Bert;
  for i:=Erni to 5 do begin
  |
  end;
end;

</pascal>

Vyberte slučku for a vytvorte novú procedúru "NewProc". Vo výbere je použitá len lokálna premenná i, tak bude presunutá do novej procedúry. Premenná Erni je použitá aj vo zvyšku kódu, tak sa z nej stane parameter.

Výsledok: <pascal>

procedure NewProc(const Erni: integer);
var
  i: Integer; // Comment
begin
  for i:=Erni to 5 do begin
  |
  end;
end;

procedure TForm1.DoSomething(var Erni, Bert: integer);
begin
  Erni:=Erni+Bert;
  NewProc(Erni);
end;

</pascal>

Vidno ako je "i" presunutá do premennej, vrátane komentára, a z Erni je vytvorený parameter.

Obmedzenia:
Pascal je veľmi výkonný jazyk, tak nemožno očakávať, že to bude pracovať s každým kódom. Momentálne limity/ToDo:

  • kontrola, či hranice výberu korenšpondujú s hranicou príkazu
  • príkazy "with"