Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kdo je autorem výstavy obrazových fotografií „Očima Hanse Christiana Andersena“?

V dnešní soutěži hrajeme o:



Procedury předávané jako parametry

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Procedury předávané jako parametry

Autor: JaroB

13:21:34 04.11.2010

To záleží na pohledu věci. Buď definuješ procedurální typ, protože ho chceš využít pro definici události anebo chceš pouhý overloading na základě různosti parametrů (tj. počtu nebo ordinálně různého typu parametrů).
Microsoft to zhusta dělá tak, že jako parametr používá variantní (nebo sadu pevných velikostí různých) záznam(ů) u kterého vždycky udává velikost struktury, a to buď jako samostatný parametr funkce/metory, nebo v položce záznamu. V podstatě pak může zadávat podle povaby objektu do toho samého jména metody různé parametry. Sice musí řešit problém s inicializací polí, ale to je už na straně programátora.

Citovat příspěvek

 

Re: Procedury předávané jako parametry

Autor: adam72

15:54:36 29.10.2010

ups... ťuknul jsem na blbou kategorii, patří to samozřejmě do Delphi

Citovat příspěvek

 

Procedury předávané jako parametry

Autor: adam72

15:43:59 29.10.2010

Ahoj, může se to zdát být divné, ale narazil jsem na problém, který nedokážu řešit jinak než pomocí následující konstrukce (osekal jsem všechno až na to co tvoří problém).

TYPE
TProcedura1=procedure(nejaky_seznam_parametru1);
TProcedura2=procedure(nejaky_seznam_parametru2);

Procedure Hlavni(P1:TProcedura1; P2:TProcedura2; nejake_dalsi_parametry);
procedure MojeProc(nejaky_seznam_parametru2);
begin
// tady potrebuju pouzit P1 - kdyz to udelam, vsechno padne
end;
begin
// tady se rozhodnu, ze pokud uzivatel zadal P2=NIL, provedu P2:=@MojeProc;
P2(SeznamParametru);
end;


Přitom P1 vždy na něco odkazuje, P2 je podporující výpočet, který buď uživatel k dispozici dá, nebo nedá a když nedá, tak tento výpočet provedu sám pomocí MyProc nicméně pomocí obecnějšího (ale nutně pomalejšího) algoritmu. Představte si to třeba jako situaci, kdy "Hlavni" by byla třeba Newtonova metoda pro řešení nelineárních rovnic, P1 by byla rovnice a P2 by byla její drivace, kdyz ji uzivatel nezadá, spočitam jí numericky pomocí Myproc.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: