Delphi turvallisempi

C_Vaarallinen

eräässä C -ohjelmointioppaassa oli varoittava esimerkki ohjelmointivirheen seurauksena päättymättömästä silmukasta:

#include
void main(void) {
unsigned i;
for (i=10; i >= 0; i--) {
printf(“i is %u\n”, i);
}
}

--------
Entäpä vastaava for -silmukka Delphillä:

procedure TForm1.bnLoopTestClick(Sender: TObject);
var
SL : TStrings;
L : Longword;
begin
//
SL := memLog.Lines;
for L := 10 downto 0 do begin
SL.Add( IntToStr(L) );
// ---------------------------
if L >= $FFFFFFF0
then begin
//
SL.Add('--- Päättymätön silmukka - lopetettu. ---');
EXIT;
end;
end;
end;

Arvatkaapa, tulostaako ohjelma tuon '--- Päättymätön silmukka - lopetettu. ---' ?

EI !!

Ohjelma tulostaa kiltisti numerot 10:stä alaspäin 0:aan saakka ja lopettaa.

2

672

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Delphi fani

      Mitä ihmeen varoittavaa tuossa nyt on, meinaa c-koodissa, ikuinen luuppiko, huh!

      Eiköhän koodata tuo C sitten hiukan erilailla, kun ei haluta ikuista härdelliä, tuon nyt luulisi
      olevan itsestään selvyys, mutta kaipa nuo oppaan tekijät aina ovat niitä "virheistä oppii miehiä"


      ////////////////////////////////////////////////
      #include

      void main(void) {
      unsigned i;
      for (i=10; i >= 0; i--) {
      if (i >= 0xFFFFFFF0) break;
      printf("i is %u\n", i);
      }
      }
      ///////////////////////////////////////////////

    • vaarallista!

      Kyllä aloittaja nyt tais tehdä kärpäsestä härkäsen. Päättymättömissä luupeissa ei ole itsessään mitään vaarallista, ne voi joissain tilanteissa olla toki harmillisia kun ei exitiä ole vaan ohjelma menee takas alkuun mutta kyllä niistä aina jollain konstin irti pääsee.

      Sen sijaan mä kokisin vaaralliseksi jotkut tietyt toimenpiteet jotka on alatason rautakäskyjä, esim. väärillä käskyillä voidaan vaikka vahingossa formatoida kovo, tai vaikka tyhjentää bios.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Saana airola ja. muusikko spekulaatiota

      Saara airolan kirja muusikko mies. Oisko redrama tai lauri tähkä? Saana oli 13 v vuonna 2014 Tekoäly sanoo : tähkä Julki
      Yhteiskunta
      14
      1612
    2. Mitäs peitsarissa on tapahtunut eilen illalla

      Mikkelissä iso poliisioperaatio https://www.iltalehti.fi/kotimaa/a/39ef020c-2d81-4d72-b720-651f458ba3e2
      Mikkeli
      65
      1612
    3. Miten kuvaisit tunteitasi

      tällä hetkellä?
      Ikävä
      135
      1221
    4. Jos saisit palata takaisin johonkin vuoteen

      Mikä vuosi se olisi? Ja mitä siinä hetkessä tapahtuisi?
      Ikävä
      125
      1114
    5. Mikä estää?

      tapaamisen, suhteen aloittamisen?
      Ikävä
      83
      797
    6. Mitä jos saisit selville

      että kaivattusi tekee susta pilaa?
      Ikävä
      164
      720
    7. Miksi ETTE suostu selvittämään . . . . . ...

      Asioita jotka jääneet selvittämättä toisen osapuolen kanssa? Kertoisitteko miksi ette suostu? Vaikka teidän mielestä
      Ikävä
      168
      711
    8. Wille Rydman on kansalaisten mielestä huonoiten onnistunut ministeri

      Onneksi olkoo Wille kärkipaikasta! Oletkin sen eteen tehnyt hartiavoimin töitä. "Ministeri Wille Rydman (ps) on kansala
      Maailman menoa
      406
      624
    9. Eilinen

      Herättikö eilinen jotain ajatuksia?
      Ikävä
      52
      582
    10. Tajuan kyllä

      että molemmilla on omat elämänsä ja kuvionsa ja rakkaansa. En odota mitään enkä ole tunkemassa mihinkään. Kai silti saa
      Ikävä
      52
      525
    Aihe