Ĺ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
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!!!!!!!!!!!!!!!!
