PDA

Prikaži potpunu verziju : Pomoć oko elementarnog zadatka u Delphiju


stefdza90
23.12.2008, 16:48
ko pomogne dobije pivo od mene za novu, spasavate me ucenja za vreme raspusta :D

koji kod treba da umetnem u ovaj da se ispisuje poruka da nije dozvoljeno unosenje slova ako se u neku od 2 edit kontrole upise slovo (bilo veliko bilo malo)? znam da treba da se koristi val funkcija ali uzasno slabo stojim sa inf pa bi mi pomoc bila preko potrebna...

hvala unapred!



procedure TForm1.btIzracunajClick(Sender: TObject);
var A,B:Integer;
begin
If edA.Text='' then
begin
ShowMessage('Nije unet prvi broj');
lbRez.Caption:='';
exit;
end;

If edA.Text='0' then
begin
ShowMessage('Prvi broj ne sme biti nula');
lbRez.Caption:='';
exit;
end;

If edB.Text='' then
begin
ShowMessage('Nije unet drugi broj');
lbRez.Caption:='';
exit;
end;

If edB.Text='0' then
begin
ShowMessage('Drugi broj ne sme biti nula');
lbRez.Caption:='';
exit;
end;

A:=StrToInt(edA.Text);
B:=StrToInt(edB.Text);
lbRez.Caption:=FloatToStr(-B/A);
end;

end.

GoranKostic
23.12.2008, 20:39
Mozes problemce da resis na dva nacina.

Prvi nacin je da koristis try except petlju.

Prvo definisi promenljivu tipa integer, nazovimo je broj u ovom primeru, a onda iskoristis sledeci kod:


try
broj:=strtoint(edit1.Text);
except
showmessage('Nije dozvoljen unos slova i specijalnih karaktera. Unesena vredost nije numerik');
end;


Kod ce uraditi sledece: u promenljivu broj koja je integer ce pokusati da ubaci vrednost iz polja edit1 i to tako sto ce string da konvertuje u integer. Ako ne uspe da konvertuje, a nece uspeti ukoliko je uneseno neko slovo, specijalni znak, a ne cist broj, prijavice gresku showmessage porukom.

Dakle ubaci navedenu try ... except petlju u svoj kod, da sad ne pisem kompletno kod koji ti treba, mislim da ces se snaci.

Drugi nacin, verovatno i laksi, je da umesto edit komponente koristis maskedit komponentu kojom mozes da ogranicis sta moze da se unosi, i lepo ogranicis da se unose samo cifre, i uopste ti i nece trebati provera da li je unesen broj ili sadrzi i slova i specijalne karaktere.

stefdza90
23.12.2008, 22:52
ok,hvala na odgovoru, a jel postoji neka varijanta preko val da se resi problem?

te komande koje si naveo jos nismo radili, a profanka je prilicno gadna pa ako vidi da sam koristio nesto sto nismo radili a jurim 2 moze da bude problema... ona licno mi je rekla da sa dosadasnjim gradivom taj problem moze da se resi samo preko val...

GoranKostic
23.12.2008, 23:28
Sa Val komandom ces otprilke ovako da uradis:

procedure TForm1.Button1Click(Sender: TObject);
var broj,greska:integer;
begin
Val(Edit1.Text, broj, greska);
if (greska=0) then
showmessage('sve je ok broj je numerik')
else
showmessage('karakter broj '+inttostr(greska)+'. nije broj');
end;

U tom primeru na klik na button1 se izvrsava procedurica koja iz edit1 uzima tekst i proverava da li neki karakter nije numerik, i prikazuje koji karakter nije numerik. Ako nema greske, tj. karaktera koji nije broj, val komanda vrednost edit1.text prebacuje u integer varijablu broj.