[Delphi] Parametr opcjonalny w procedurze lub funkcji

0

Tak jak w temacie. Chodzi o parametr który nie musi byc podany w wywolaniu. W helpie znalazlem ale jakos to u mnie nie dziala.

Przykłady mile widziane.

0

A jak próbujesz?

Albo dajesz parametr z podaną wartością (musi być na końcu listy parametrów) np

function a(x:string; i: integer=5) : byte;

albo robisz funjce przeciążone o różnej liczbie parametrów

function a (i: integer; f: file) : byte; overload;

function a (i: integer; f: file; s: string): byte; overload;

0

Nie o takie parametry mi chodzi. Chodzi o parametr opcjonalny czyli np. moze ich byc 3 albo 4 ale nie sa to procedury przeciążone (overload) ani z wartoscią domyślna.

Chodzi o taki parametr jak ma np. BlockRead a dokladniej jego drugi parametr jest takim o jaki mi chodzi!!

Takie jak podajesz to ja znam i dzialaja mi.

Tak czy siak dzięki.

0

AFAIK tą możliwość mają tylko pseudoprocedury zawarte już w kompilatorze. Sam tego nie zrobisz (jak się mylę, to proszę o sprostowanie - chętnie się dowiem, jeżeli jest to możliwe, jak to się robi :)).

0

Może zajrzeć do kodu VCL (ja nie mogę, mam Personala) i sprawdzić jak jest zadeklarowane BlockRead? Ja obstawiam że przez overload...

0

Może zajrzeć do kodu VCL (ja nie mogę, mam Personala) i sprawdzić jak jest zadeklarowane BlockRead? Ja obstawiam że przez overload...

W VCL nie ma. To jest zdefiniowane w module System. Ponieważ modułu system nie trzeba dołączać, to prawdopodobnie to jest wbudowane w kompilator (tak jak wiele innych nie ukazanych w module System).
Wątpię, by to było overload, ponieważ przy przedładowanych funkcjach ciężko byłoby umieścić to w środku.

W przypadku BlockRead wydaje mi się, że ten drugi parametr jest w rzeczywistości jedynie wskaźnikiem. To jest najprostrzy sposób, aby zachować odpowiedni rozmiar wywołania funkcji. Z tym, że kompilator troszkę nas oszukuje i zamienia od razu typy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1