ďťż

Ładny brzuch

Mam problem z kodem:

procedure TForm1.Button1Click(Sender: TObject);
begin
try
zakres:= strtoint(Edit2.Text);
setlength(wylos, zakres);
except
on E:Exception do
begin
Showmessage('Błąd!');
exit;
end;
end;
losuj;
end;

procedure TForm1.losuj;
var wylosowana: integer;
begin
randomize;
wylosowana:= random(zakres);
if wylos[wylosowana]=false then
begin
wylos[wylosowana]:= true;
Edit1.Text:= inttostr(wylosowana);
ListBox1.Items.Add(inttostr(wylosowana));
end else
losuj;
end;


gdy podam zakres np. 10 to wylosuje ion 10 liczb po czym wykoczy komunkta:

Stack overflow

Jak temu zapobiec?



od zarazy, glodu, takiego kodu uchowaj nas Panie...

po pierwsze: WCIECIA. nie dziwie sie ze takiego bledu nie zauwazyles, skoro w tym kodzie nic nie widac.....
po drugie: DEBBUGER. nie chodzi o to, ze zrobiles prosty blad, kazdy sie myli, ale forum nie jest od znajdowania najprostszych bledow w kodzie... jesli sam nie nauczysz sie uzywac debbugera do znajdowania tak prostych bledow bedziesz tu wchodzil z kazdym problemem i nic sie nie nauczysz...

Debugger
LUB
własny Logger
LUB
ołówek + kartka papieru + mózg + książka do Delphi.

Nie mam pytań.
Jaro3k: ja nie używam w ogóle Debuggera :)
Ale Tobie, krzysztof1991 polecam, i to bardzo.

PS. 1991 - to Twój rok urodzenia?


PS. 1991 - to Twój rok urodzenia?



"ołówek + kartka papieru + mózg + książka do Delphi."

to rozwiazanie w tym przypadku jest wystarczajace, ale jesli ktos jest slaby w tej dziedzinie to moze byc zbyt trudne.

"Debugger
LUB
własny Logger"

ja preferuje oba rozwiazania rownolegle. debbuger jednak jest bardzo przydatny, zwlaszcza na poczatku przygody z programowaniem...

//EDIT: powiedzielismy Ci jak go znalesc, to chyba nawet wiecej niz prosiles, bo to przyda ci sie w przyszlosci do znajdowania setek, a nawet tysiecy kolejnych bledow...
Użytkownik jaro3000 edytował ten post 22 sierpień 2005, 16:56
to wyskakuje ze blad powoduje:

procedure TForm1.losuj;
var wylosowana: integer;
begin
randomize;
wylosowana:= random(zakres);
if wylos[wylosowana]=false then
begin
wylos[wylosowana]:= true;
Edit1.Text:= inttostr(wylosowana);
ListBox1.Items.Add(inttostr(wylosowana));
end else
losuj;
end;

procedura losuj.
usunałem ja i jest jeszcze gorzej. Program nie losuje wszytsich liczb na raz, tzn. miedzy niektórymi sa przerwy musze kliknac kilka razy buttona zeby było wylosowanych komplet liter. A jak progra,m wylosuje wszystkie liczby to nic sie nie dzieje.

Masz nieskończoną rekurencję w kodzie.
Ale skoro rozmawiamy o tym na GG, to ja tu się nie będę powtarzał.

TeMPOraL.
:: [ CHAK DE PLANET ] :: [ Ad Astra Per Aspera ] ::

A czy ktos mógłby mi powiedzeic, jak wyeliminowac ten bład??

NIE.
Ad Astra Per Aspera :P

ale sam tego nie wyeliminuje!!!!!!!!!!!!!!!!

Ad Astra Per Aspera.
To moje ostatnie słowo w tym temacie.
Niech ktoś to locknie :)


ale sam tego nie wyeliminuje!!!!!!!!!!!!!!!!

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •