Selittäkääs vähän tarkemmin sanojen break, continue ja exit käyttö ja niiden erot.
Break, continue ja exit
5
546
Vastaukset
- Moikka v^in
Pienellä yksinkertaisella ohjelmalla se selviää.
Alla oleva ohjelman pätkä on hyvin yksinkertainen ja pitäisi olla jokaiselle ohjelmoijalle ymmärrettävää. Mutta jos jää kysyttävää niin kysy ihmeessä!
Luo uusi sovellus. Laita tyhjälle Form:lle Button-, Label- ja kaksi CheckBox-komponenttia.
Sitten generoit Button-komponentille OnClick tapahtuma jota täydennetään alla olevaksi:
function testi( breaktesti, exittesti :boolean ):string;
var
i : integer;
begin
result := '';
i := 0;
repeat
inc( i );
if i in [ 4..7, 11 ] then continue;
if exittesti and ( i = 9 ) then exit;
if breaktesti and ( i = 10 ) then break;
result := result ' ' IntToStr( i );
until i > 12;
while i > 9 do
begin
dec( i );
result := result ' ' IntToStr( i );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
begin
s := testi( CheckBox1.Checked, CheckBox2.Checked );
Label1.Caption := s;
end;- Näin vain on
Eräs perujuttu on myös se että käytetään const-sanaa
aliohjelman tai funktion otsikossa silloin kun
esitellyn muuttujan arvoa ei aliohjelmassa muuteta.
Kas näin:
function testi(const breaktesti,exittesti:boolean):string;
- suositus
Onko tämän päivän suosituksena se että silmukasta on monta poistumisreittiä?
- Delphiguru
"Onko tämän päivän suosituksena se että silmukasta on monta poistumisreittiä?"
Itse en ole koskaan suosituksista välittänyt.
Mutta huolellinen kannattaa silti olla.
Jos siis silmukasta tms. poistutaan kesken (Break, Continue, exit), niin kannattaa varmistaa, ettei mitään tärkeää jää hoitamatta.
Oikein käytettynä esim. try - finally - end on varsin pätevä rakenne, ja esim. resurssien vapauttamisen varmistamiseksi hyvä keino.
Jos ei tuo kelpaa niin 2. vaihtoehto on periyttää luokat vaikkapa TInterfacedObject -luokasta ja sitten määritellä oliomuuttujan sijasta interface -tyyppinen muuttuja, ja laittaa
TInterfacenToteuttavaOlio.Create:lla luodun olion viite tuohon.
Kun viimeinen viittaus tuollaiseen poistuu, niin olio tässä tapauksessa vapautetaan automaattisesti ja kokonaisuudessaan heti ( ei siis mene mihinkään roskienkeruulistaan kuten esim. Javassa tapahtuu ).
Jos et täysin ymmärrä asiaa, teepä näin:
1. Tee Delphillä pieni testiohjelma
2. Aja sitä askeltaen läpi Delphin integroidulla debuggerilla.
3. Askeltaessasi tutki muuttujien arvoja ja tarvittaessa lue myös assemblerkielen tasolla, millaista konekielikoodia Delphi on lähdekoodistasi tuottanut.
Tällöin opit lisää siitä, miten Delphi toimii "konepellin alla".
Samalla voit tarkistaa, että esim. muistiviittaukset vapautetaan asianmukaisesti, poistuttiinpa silmukasta tms. millä tavalla tahansa.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Mies, mitä minun pitäisi tehdä
Niin, mitä naisen siis pitäisi tehdä, että lähestyisit ja tekisit aloitteen? Mikä on riittävä kiinnostuksen osoitus juur1802120- 1751781
Toivottavasti et mussukka elättele toiveita meikäläisen suhteen
Tiedän mitä olet touhunnut joten aivan turha haaveilla mistään enää 👍1701642Sofia Virralla ja Minja Koskelalla ei mitään käsitystä terveyskeskusmaksuista!
Vasemmistopimut Sofia ja Minja täysin ulkona sote asioista, ei minkäänlaista käsitystä edes mittaluokasta, missä terveys1081452Summit-tippuja Nicola sai Carolalta yllättävän viestin - Some älähtää rajusti: "Älä viitsi..."
The Summit Suomi -kisa käy kuumana kylmässä Norjan vuoristossa. Nicola tiputettiin kisasta juuri ennen finaalia. Likaise241433- 1031127
Juusolle sataa vihaisia viestejä hoitajilta ja loput nauravat hänelle
Ei löydy montaakaan, joka kehuisi Juuson toimintaa ministerinä: "Selvä enemmistö Juuson päivitykseen reagoineista on su1621076Persuehdokas uhkasi tappaa "jätkän" ja ravintolayrittäjän
Kuuntele tästä kuinka meuhkaa. https://www.iltalehti.fi/politiikka/a/4eb3034d-48c5-4f31-b53c-42be3dc9607c771053Rokotevastaiset aiheuttaneet lasten kuolemat USA:ssa, eivätkä pyydä anteeksi
Jo kaksi lasta kuollut tuhkarokkoon Texasissa, koska rokotevastaiset ovat toimillaan tuhonneet suojaavan rokotekattavuud228876Kompostointitarkastaja tuli tarkastukselle!
En ole ikinä kompostoinnut ja eilen kävi kompostointitarkastaja kylässä. Tosi hianoa byrokratiaa taas: "Laki edellyttää,56860