Ĺadny brzuch
czesc
chcialem zapytac czy ktos widzi blad w kodzie jaki napisalem?
procedure TForm1.Button1Click(Sender: TObject); begin if losowanie1.itemindex = 0 then begin if StrToFloat(Label1.Caption) <5 then ilosc_punktow := ilosc_punktow + 0.7; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end else if StrToFloat(Label1.Caption) > 7.7 then begin ilosc_punktow := ilosc_punktow + 0.5; (Label1.Caption := floattostr(ilosc_punktow) + ' '); end; end;
wyskakuje mi taki blad jak wciskam button
obrazek bledu
Użytkownik michal1221 edytował ten post 22 wrzesień 2007, 13:46
Na której linijce się wywala?
Na której linijce się wywala?
jak wciskam "run" to wszystko dziala
dopiero jak wybiore z combobox losowanie1 i wciskam button to wywala blad
W Label1 masz liczbę zmiennoprzecinkową z kropką czy przecinkiem?
w label po wyswietleniu mam ,
bo chcialem zrobic ze jak
ilosc punktow w label < 5 wtedy do label dodaje sie 0.6
a jak jest ilosc punktow w label > 5 to dodaje np 0.4
bo moze wcale nie jest potrzebna linijka z ilosc_punktow := ilosc_punktow + 0.7;
tylko ze nie znalazlem innego przykladu
bo wiem jak to zrobic te warunki np na spineditach ale tam nie ma zmiennoprzecinkowych liczb
Użytkownik michal1221 edytował ten post 22 wrzesień 2007, 14:44
W którymś miejscu funkcja strtofloat otrzymuje pusty string. Umiesz korzystać z debuggera? Kliknij na linijkę >> if losowanie1.itemindex = 0 then << i naciśnij F5. Uruchom projekt i naciśnij buttona1. Program zatrzyma się na oznaczonej linijce. Naciskasz F8 i piszesz nam na której linijce się wysypie ;)
if StrToFloat(Label1.Caption) < 5.6 then
to sie zaznaczylo
kombinowalem i znalazlem takie wyjscie
wprowadzilem spinedit
i
if losowanie1.itemindex = 0 then begin if spinedit1.Value < 5 then begin ilosc_punktow := ilosc_punktow + 0.7; (Label1.Caption := floattostr(ilosc_punktow) + ' '); spinedit1.value:= spinedit1.Value + 1 end else if spinedit1.Value > 4 then begin ilosc_punktow := ilosc_punktow + 0.5; (Label1.Caption := floattostr(ilosc_punktow) + ' '); spinedit1.value:= spinedit1.Value + 1; end;
no ale to chyba dodatkowe utrudnienie
No to masz 100% odpowiedź, gdzie miałeś błąd ;)
juz mi dziala :))
tylko jeszcze 1 pytanie
mam
if losowanie1.itemindex = 0 then begin if StrToFloat(Label1.Caption) < 6.3 then ilosc_punktow := ilosc_punktow + 0.7; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end else if StrToFloat(Label1.Caption) > 6.2 then begin ilosc_punktow := ilosc_punktow + 0.5; (Label1.Caption := floattostr(ilosc_punktow) + ' '); end; end;
i nie spelnia 2 warunku zatrzymuje sie na 6.3 i koniec dalej nie idzie
ale ze mnie glupek nie dalem begin po 1 warunku
dzieki Cyrkiel za pomoc :)
Użytkownik michal1221 edytował ten post 22 wrzesień 2007, 16:27
Zaraz, zaczekaj :P Przecież istnieją liczby spełniające oba warunki (x<6.3 i x>6.2) :P
ale jak dalem ze 1 warunek x < 6.3
2 warunek x >6.3
to zatrzymuje sie na 6.3 i klikac mozna w button ale juz nie dodaje 0.5
a jak jest x < 6.3
x >6.2
to w 1 warunku dochodzi do 6.3 dodajac 0.7 i przechodzi w 2 warunek i dodaje 0.5
Zapewne o to Ci chodzilo:
if losowanie1.itemindex = 0 then begin if StrToFloat(Label1.Caption) < 6.3 then ilosc_punktow := ilosc_punktow + 0.7; else ilosc_punktow := ilosc_punktow + 0.5; Label1.Caption := floattostr(ilosc_punktow) + ' '; end;
deemon wlasnie o to mi chodzilo
inny zapis ale dziala tak jak ja podalem hmm
ale dzieki wielkie :) teraz to napewno bledu nie bedzie
deemon wlasnie o to mi chodzilo
inny zapis ale dziala tak jak ja podalem hmm
ale dzieki wielkie :) teraz to napewno bledu nie bedzie
A na przyszłość - pamiętaj że jest jeszcze <= i >= ;).
i znowu mam problem
chcialem dodac kolejny warunek do spelnienia ale gdy dochodzi do warunku 3 to zamiast dodawac 0.1 to dodaje 0.5
zmodefikowalem kod tak
if (losowanie1.ItemIndex = 0) then begin if (StrToFloat(Label1.Caption) < 6.3) then ilosc_punktow := ilosc_punktow + 0.7 else if (StrToFloat(Label1.Caption) >= 6.3) then ilosc_punktow := ilosc_punktow + 0.5 else if (StrToFloat(Label1.Caption) >= 9.3) then ilosc_punktow := ilosc_punktow + 0.1; end; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end;
To zobacz co napisałeś i czy w ogóle 3 warunek kiedykolwiek wystąpi. Pamiętaj że instrukcje warunkowe działają tak:
if coś then = jeżeli coś to
else if coś then = jeżeli nie, to jeżeli coś to
3 warunek nie wystepuje
wiec zapewne jest blad w zapisie skoro nie widzi >=9.3 a widzi zeby dodawac 0.1 do poprzedniego warunku
ale i tak nie mam juz pomyslu jak to zapisac
Zmień kolejność 2 warunku z 3 warunkiem. Logiki trochę. Zacznij używać debugera i breakpoint'ów.
dzieki PCSA
dopiero ucze sie delphi a debugera uzywam
ale wlasnie wyszlo ze mozna tak napisac if (StrToFloat(Label1.Caption) < 6.3) then ilosc_punktow := ilosc_punktow + 0.7 else if (StrToFloat(Label1.Caption) >= 6.3) and (StrToFloat(Label1.Caption) < 9.3) then ilosc_punktow := ilosc_punktow + 0.5 else if (StrToFloat(Label1.Caption) >= 9.3) then ilosc_punktow := ilosc_punktow + 0.1 end; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end;
Użytkownik michal1221 edytował ten post 25 wrzesień 2007, 11:29
if (StrToFloat(Label1.Caption) >= 9.3) then ilosc_punktow := ilosc_punktow + 0.1
Ten powyższy warunek jest bezsensu, zawsze sie spełni.
Tak sie zastanawiam, po co sobie utrudniać życie nie potrzebnym komplikowaniem kodu. Przecież możesz to zrobić prosto i czytelnie:
var jakas_wartosc:float; begin .... jakas_wartosc := StrToFloat(Label1.Caption); if jakas_wartosc < 6.3 then ilosc_punktow := ilosc_punktow + 0.7 else if jakas_wartosc >= 9.3 then ilosc_punktow := ilosc_punktow + 0.1 else ilosc_punktow := ilosc_punktow + 0.5;
Zmień kolejność 2 warunku z 3 warunkiem. Logiki trochę. Zacznij używać debugera i breakpoint'ów.
I dodam do tego kartkę i długopis/ołówek ;).
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
chcialem zapytac czy ktos widzi blad w kodzie jaki napisalem?
procedure TForm1.Button1Click(Sender: TObject); begin if losowanie1.itemindex = 0 then begin if StrToFloat(Label1.Caption) <5 then ilosc_punktow := ilosc_punktow + 0.7; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end else if StrToFloat(Label1.Caption) > 7.7 then begin ilosc_punktow := ilosc_punktow + 0.5; (Label1.Caption := floattostr(ilosc_punktow) + ' '); end; end;
wyskakuje mi taki blad jak wciskam button
obrazek bledu
Użytkownik michal1221 edytował ten post 22 wrzesień 2007, 13:46
Na której linijce się wywala?
Na której linijce się wywala?
jak wciskam "run" to wszystko dziala
dopiero jak wybiore z combobox losowanie1 i wciskam button to wywala blad
W Label1 masz liczbę zmiennoprzecinkową z kropką czy przecinkiem?
w label po wyswietleniu mam ,
bo chcialem zrobic ze jak
ilosc punktow w label < 5 wtedy do label dodaje sie 0.6
a jak jest ilosc punktow w label > 5 to dodaje np 0.4
bo moze wcale nie jest potrzebna linijka z ilosc_punktow := ilosc_punktow + 0.7;
tylko ze nie znalazlem innego przykladu
bo wiem jak to zrobic te warunki np na spineditach ale tam nie ma zmiennoprzecinkowych liczb
Użytkownik michal1221 edytował ten post 22 wrzesień 2007, 14:44
W którymś miejscu funkcja strtofloat otrzymuje pusty string. Umiesz korzystać z debuggera? Kliknij na linijkę >> if losowanie1.itemindex = 0 then << i naciśnij F5. Uruchom projekt i naciśnij buttona1. Program zatrzyma się na oznaczonej linijce. Naciskasz F8 i piszesz nam na której linijce się wysypie ;)
if StrToFloat(Label1.Caption) < 5.6 then
to sie zaznaczylo
kombinowalem i znalazlem takie wyjscie
wprowadzilem spinedit
i
if losowanie1.itemindex = 0 then begin if spinedit1.Value < 5 then begin ilosc_punktow := ilosc_punktow + 0.7; (Label1.Caption := floattostr(ilosc_punktow) + ' '); spinedit1.value:= spinedit1.Value + 1 end else if spinedit1.Value > 4 then begin ilosc_punktow := ilosc_punktow + 0.5; (Label1.Caption := floattostr(ilosc_punktow) + ' '); spinedit1.value:= spinedit1.Value + 1; end;
no ale to chyba dodatkowe utrudnienie
No to masz 100% odpowiedź, gdzie miałeś błąd ;)
juz mi dziala :))
tylko jeszcze 1 pytanie
mam
if losowanie1.itemindex = 0 then begin if StrToFloat(Label1.Caption) < 6.3 then ilosc_punktow := ilosc_punktow + 0.7; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end else if StrToFloat(Label1.Caption) > 6.2 then begin ilosc_punktow := ilosc_punktow + 0.5; (Label1.Caption := floattostr(ilosc_punktow) + ' '); end; end;
i nie spelnia 2 warunku zatrzymuje sie na 6.3 i koniec dalej nie idzie
ale ze mnie glupek nie dalem begin po 1 warunku
dzieki Cyrkiel za pomoc :)
Użytkownik michal1221 edytował ten post 22 wrzesień 2007, 16:27
Zaraz, zaczekaj :P Przecież istnieją liczby spełniające oba warunki (x<6.3 i x>6.2) :P
ale jak dalem ze 1 warunek x < 6.3
2 warunek x >6.3
to zatrzymuje sie na 6.3 i klikac mozna w button ale juz nie dodaje 0.5
a jak jest x < 6.3
x >6.2
to w 1 warunku dochodzi do 6.3 dodajac 0.7 i przechodzi w 2 warunek i dodaje 0.5
Zapewne o to Ci chodzilo:
if losowanie1.itemindex = 0 then begin if StrToFloat(Label1.Caption) < 6.3 then ilosc_punktow := ilosc_punktow + 0.7; else ilosc_punktow := ilosc_punktow + 0.5; Label1.Caption := floattostr(ilosc_punktow) + ' '; end;
deemon wlasnie o to mi chodzilo
inny zapis ale dziala tak jak ja podalem hmm
ale dzieki wielkie :) teraz to napewno bledu nie bedzie
deemon wlasnie o to mi chodzilo
inny zapis ale dziala tak jak ja podalem hmm
ale dzieki wielkie :) teraz to napewno bledu nie bedzie
A na przyszłość - pamiętaj że jest jeszcze <= i >= ;).
i znowu mam problem
chcialem dodac kolejny warunek do spelnienia ale gdy dochodzi do warunku 3 to zamiast dodawac 0.1 to dodaje 0.5
zmodefikowalem kod tak
if (losowanie1.ItemIndex = 0) then begin if (StrToFloat(Label1.Caption) < 6.3) then ilosc_punktow := ilosc_punktow + 0.7 else if (StrToFloat(Label1.Caption) >= 6.3) then ilosc_punktow := ilosc_punktow + 0.5 else if (StrToFloat(Label1.Caption) >= 9.3) then ilosc_punktow := ilosc_punktow + 0.1; end; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end;
To zobacz co napisałeś i czy w ogóle 3 warunek kiedykolwiek wystąpi. Pamiętaj że instrukcje warunkowe działają tak:
if coś then = jeżeli coś to
else if coś then = jeżeli nie, to jeżeli coś to
3 warunek nie wystepuje
wiec zapewne jest blad w zapisie skoro nie widzi >=9.3 a widzi zeby dodawac 0.1 do poprzedniego warunku
ale i tak nie mam juz pomyslu jak to zapisac
Zmień kolejność 2 warunku z 3 warunkiem. Logiki trochę. Zacznij używać debugera i breakpoint'ów.
dzieki PCSA
dopiero ucze sie delphi a debugera uzywam
ale wlasnie wyszlo ze mozna tak napisac if (StrToFloat(Label1.Caption) < 6.3) then ilosc_punktow := ilosc_punktow + 0.7 else if (StrToFloat(Label1.Caption) >= 6.3) and (StrToFloat(Label1.Caption) < 9.3) then ilosc_punktow := ilosc_punktow + 0.5 else if (StrToFloat(Label1.Caption) >= 9.3) then ilosc_punktow := ilosc_punktow + 0.1 end; (Label1.Caption := floattostr(ilosc_punktow) + ' ') end;
Użytkownik michal1221 edytował ten post 25 wrzesień 2007, 11:29
if (StrToFloat(Label1.Caption) >= 9.3) then ilosc_punktow := ilosc_punktow + 0.1
Ten powyższy warunek jest bezsensu, zawsze sie spełni.
Tak sie zastanawiam, po co sobie utrudniać życie nie potrzebnym komplikowaniem kodu. Przecież możesz to zrobić prosto i czytelnie:
var jakas_wartosc:float; begin .... jakas_wartosc := StrToFloat(Label1.Caption); if jakas_wartosc < 6.3 then ilosc_punktow := ilosc_punktow + 0.7 else if jakas_wartosc >= 9.3 then ilosc_punktow := ilosc_punktow + 0.1 else ilosc_punktow := ilosc_punktow + 0.5;
Zmień kolejność 2 warunku z 3 warunkiem. Logiki trochę. Zacznij używać debugera i breakpoint'ów.
I dodam do tego kartkę i długopis/ołówek ;).