PARAMETRY

0

jak jest różnica pomiędzy
function aa(var a,b:integer);
a
function aa(a,b:integer);
??????????????
co daje var w nagłówku???

0

Jeżeli użyjesz zmiennych a1 , b1 w funkcji jak piniżej to zmienne zmienią swoją wartość na taką jak jest podana w funkcji. Czyli jeżeli miełś a1:='cze' i b1:='hello' to po wprowadzeniu tego do funkcji poniższej bedziesz miał a1='1' i b1='2';
w przypadku drugiego wywołanie funkcja nie zmieni ci wartości zmiennych. Jeżeli mialeś a1='cze' to nadal bedzie tak samo ;)
function aa( var a , b : string);
begin
a:='1';
b:='2';
end;

--Pozdrowienia Chodek ;)
Delphi 6

0

Chodek napisał:
Jeżeli użyjesz zmiennych a1 , b1 w funkcji jak piniżej to zmienne zmienią swoją wartość na taką jak jest podana w funkcji. Czyli jeżeli miełś a1:='cze' i b1:='hello' to po wprowadzeniu tego do funkcji poniższej bedziesz miał a1='1' i b1='2';
&gtw przypadku drugiego wywołanie funkcja nie zmieni ci wartości zmiennych. Jeżeli mialeś a1='cze' to nadal bedzie tak samo ;)
&gtfunction aa( var a , b : string);
&gtbegin
&gt a:='1';
&gt b:='2';
&gtend;
&gt

innymi slowy:
sa 4 rodzaje przekazywania parametrow

  1. przez wartosc (parametrem jest wartosc podstawionej zmiennej)

procedure a( x : integer);
begin
inc (x);
label1.caption:=IntToStr(x);
end;

f:=5;
a(f);
*i teraz f = nadal 5

  1. przez referencje (wskazanie) (paramatrem jest sama zmienna)

procedure a(var x : integer);
begin
inc (x);
label1.caption:=IntToStr(x);
end;

f:=5;
a(f);
*i teraz f = 6

  1. przez stala (parametrem jest wartosc zmiennej, ponadto niedozwolone sa operacje na parametrze wewnatrz procedury)

procedure a(const x : integer);
begin
inc (x); * &lt-------- nie skompiluje sie, operacje na parametrze sa niedozwolone
label1.caption:=IntToStr(x);
end;

zalety stosowania const:
wieksza czytelnosc kodu - po naglowku widac, ze procedura nie zmienia parametru
unikanie bledow - jesli omylkowo zrobimy operacje na parametrze, kod sie nie skompiluje
w pewnych sytacjach (lancuchy, tablice dynamiczne) kod wynikowy jest odrobine szybszy

4.parametry out (parametrem jest referencja (jak przy var), ale wartosc przekazywana jest gubiona). Sluzy tylko do zwracania wartosci

procedure a(out x : integer);
begin
inc (x);* &lt---------bez sensu, x jest niezdefiniowane
x:=8;
end;

f:=5;
a(f);
//i teraz f = 8

zalety:
wieksza czytelnosc kodu
odrobine szybsze niz var dla lancuchow i tablic dynamicznych

--
Pawel {Delphi6 }

Po pierwsze: naciśnij F1

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.