Ukoliko zelis da vise komponenti tipa ADOTable, ADOQuery vezes na istu bazu koristis TADOConnection. To ti omogucava da samo na jednom mestu setujes ConnectionString koji ce potom vaziti za sve objekte vezane na TADOConnection.
try..finally ti omogucava da osiguras oslobadjanje resurasa koje zauzme tvoj kod tokom izvrsavanja.
Ako kod koji se nalazi u telu bloka napravi neki neobradjeni izuzetak (gresku) obavezno se izvrsi ono sto se nalazi iza kljucne reci finally. Ako se u donjem primeru desi nesto nepredvidjeno sa metodom Lst.LoadFromFile(AFileName) objekat Lst ce sigurno biti oslobodjen. Ukoliko sve prodje kako treba takodje se unistava, tj. ako postoji datoteka sa nazivom AFileName procedura ce prikazati dialog sa sadrzajem datoteke i osloboditi objekat Lst iz memorije,a ukoliko ne uspe da procita datoteku AFileName odmah iskace na deo iza Finally i oslobadja Lst.
Code:
primer 1.
procedure ObradiDatoteku(AFileName: TFileName);
var
Lst: TStrings;
begin
Lst := TStringList.Create;
try
Lst.LoadFromFile(AFileName);
ShowMessage(Lst.Text);
finally
Lst.Free;
end;
end;
try.. except ti omogucava da kontrolises izuzetke. Izuzeci su klase TException.
U primeru 2, mozes da vidis sta se desavava kada koirsitmo postavku try.. except.
Izuzeci su jako mocna alatka. Ovo dole je samo osnovni primer koji ce ti, nadam se, pomoci da shvatis kako radi.
Ukoliko su X i Y korektne vrednosti prikazuje se rezultat njihovog deljenja a ukoliko za Y prosledis nulu dobices poruku o gresci.
Pogledaj "Raising and handling exceptions" u Helpu, a cini mi se da je i ovde na ES neko vec pisao o tome.
Code:
primer 2.
procedure Podeli(X, Y: double);
var
Z: double;
begin
try
Z := X / Y;
ShowMessageFmt('Rezultat: %n', [z]);
except
on EZeroDivide do
ShowMessage('Deljenje nulom nema smisla');
end;
end;
[Ovu poruku je menjao marcha dana 09.05.2006. u 11:43 GMT+1]