IDE Window: Extract Procedure/sk

From Free Pascal wiki
Revision as of 23:27, 20 February 2008 by Slavko (talk | contribs) (úprava formátovania)
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"