jak jest różnica pomiędzy
function aa(var a,b:integer);
a
function aa(a,b:integer);
??????????????
co daje var w nagłówku???
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
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';
>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;
>
innymi slowy:
sa 4 rodzaje przekazywania parametrow
- 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
- 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
- przez stala (parametrem jest wartosc zmiennej, ponadto niedozwolone sa operacje na parametrze wewnatrz procedury)
procedure a(const x : integer);
begin
inc (x); * <-------- 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);* <---------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.