Problem 'value assigned "" to never used'

Problem 'value assigned "" to never used'

offline
  • Pridružio: 14 Jun 2010
  • Poruke: 51
  • Gde živiš: u stanu :)

Naime, kao sto sam naslov glasi, 'mali' problem koji nisam uspeo da resim preko debuggera (iskreno tek sam poceo da ucim paskal ove skolske godine, pa mozda sam i preskocio nesto ocigledno, tako da se izvinjavam ako se tako nesto desilo).
Zadatak glasi ovako:
Banka za nove sredise koje unovcavaju vize na 6 i 12 meseci daje kamatnu stopu.
Za 6 meseci 2.25% i fiksni iznos od 100 evra, a za 12 meseci kamatnu stopu 5.9% i fiksni iznos od 120 evra. Izracunati iznos kamate posle isteka roka orocavanja i ukupan iznos na racunu stedise zajedno sa kamatom.

S obzirom na to da ce se mozda nekada menjati kamatna stopa i fiksni iznos, napomenuto nam je da stavimo i te podatke kao promenljive, a ne konstante.
Evo ga moj postupak rada:
implementation {$R *.dfm} procedure TForm1.bRacunajClick(Sender: TObject); var N,K6,K12,D6,D12,Ik,UI:real; var M:Integer; begin N:=StrToFloat(eN.text); K6:=StrToFloat(eK6.text); K12:=StrToFloat(eK12.text); D6:=StrToFloat(eD6.text); D12:=StrToFloat(eD12.text); M:=StrToInt(eM.text); eIk.text:=FloatToStr(Ik); eUI.text:=FloatToStr(UI); IF M=6   then     begin     Ik:=N*K6/100;     UI:=N+N*K6/100+D6;     end; IF M=12   then     begin     Ik:=N*K12/100;     UI:=N+N*K12/100+D6;     end; end; end.
I kad pritisnem start dobijem ovo u BUILDU i ovo u samom programu





Narode, svaka pomoc ili savet su dobrodosli! Hvala! Ziveli



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

"Value assigned..." znaci da si promenljivoj dodelio vrednost, a ne koristis je nigde.
To se tebi javlja zato sto posle dodeljivanja vrednosti promenljivama ides u IF uslov, i kompajler kapira da, za recimo M=3 vrednoste dodljene promenljivama nece biti iskoriscene, pa zato dobijas ta obavestenja.

Da bi izbegao "might not be initialized", onda moras Ik i Ui da inicijalizujes negde na pocetku, pre IF-a, tj. da im dodelis neku vrednost (recimo Ik=0 ili Ik=1).



offline
  • Pridružio: 14 Jun 2010
  • Poruke: 51
  • Gde živiš: u stanu :)

Hvala na brzom odgovoru.
Okej, jasno mi je sad zasto nece da radi, ali kako ja sada to konkretno da ispravim da funkcionise, sta da dodam/izmenim (ovaj prvi deo sa "Value assigned...")?
Sto se tice drugog dela "might not be initialized", ubacio sam
Ik:=0; UI:=0; odmah iznad IF, ali idalje izbacuje istu poruku.. Mozda je to povezano sa ovim prvim?

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ne moze inicijalizacija iznad IF, jer pre toga vec koristis te vrednosti u sledecim linijama:
eIk.text:=FloatToStr(Ik); eUI.text:=FloatToStr(UI);
Moras pre tih linija da inicijalizujes te promenljive.

Drugo, sasvim ti je nelogicna pozicija te dve linije, jer ti na takav nacin te Edit komponente nece preuzeti vrednosti koje promenljive dobijaju u IF blokovima. Ne poznajem problem koji tvoja funkcija treba da resi, ali mi je logicno da te dve linije stoje na samom kraju procedure, nakon sto promenljive Ik i UI dobiju vrednosti u IF blokovima.

Ono sa "value assigned" ne mozes da popravis, a i nemas potrebe. To nije greska vec ti samo skrece paznju na deo koda koji mozda nece biti iskoriscen.

Zamisli sledeci kod:
A := 1; A := 5;
Ovde bi sigurno izasla ista poruka zbog suvisne prve linije, jer njena vrednost nije iskoriscena u kodu.
Kod tebe dobijas tu poruku zbog IF petlji jer imas jos 10 meseci za koje su te vrednosti dodeljene promenljivima beskorisne.
Ako ti je bas stalo da se otarasis tih poruka, onda moras dodeljivanje vrednosti promenljivima vrsiti u IF blokovima, ali ti to duplira kod jer moras da ponovis iste linije u oba bloka.
Mozes eventualno da ta dva IF bloka formulises da sadrze na kraju i jedan ELSE, mozda ti to eliminise ta obavestenja, ali to ne mogu da ti garantujem.

offline
  • Pridružio: 14 Jun 2010
  • Poruke: 51
  • Gde živiš: u stanu :)

bobby ::Ne moze inicijalizacija iznad IF, jer pre toga vec koristis te vrednosti u sledecim linijama:
eIk.text:=FloatToStr(Ik); eUI.text:=FloatToStr(UI);
Moras pre tih linija da inicijalizujes te promenljive.

Drugo, sasvim ti je nelogicna pozicija te dve linije, jer ti na takav nacin te Edit komponente nece preuzeti vrednosti koje promenljive dobijaju u IF blokovima. Ne poznajem problem koji tvoja funkcija treba da resi, ali mi je logicno da te dve linije stoje na samom kraju procedure, nakon sto promenljive Ik i UI dobiju vrednosti u IF blokovima.

Ono sa "value assigned" ne mozes da popravis, a i nemas potrebe. To nije greska vec ti samo skrece paznju na deo koda koji mozda nece biti iskoriscen.

Zamisli sledeci kod:
A := 1; A := 5;
Ovde bi sigurno izasla ista poruka zbog suvisne prve linije, jer njena vrednost nije iskoriscena u kodu.
Kod tebe dobijas tu poruku zbog IF petlji jer imas jos 10 meseci za koje su te vrednosti dodeljene promenljivima beskorisne.
Ako ti je bas stalo da se otarasis tih poruka, onda moras dodeljivanje vrednosti promenljivima vrsiti u IF blokovima, ali ti to duplira kod jer moras da ponovis iste linije u oba bloka.
Mozes eventualno da ta dva IF bloka formulises da sadrze na kraju i jedan ELSE, mozda ti to eliminise ta obavestenja, ali to ne mogu da ti garantujem.


Da, da, to je to, resio sam problem, hvala ti!
Znaci ovako,
Pored toga sto odredim koja promenljiva pripada kom polju pre IF f-je,
pa onda treba u obe IF f-je ISPOD formula za Ik i UI opet odrediti koje polje pripada kojoj promenljivoj (ovog puta bez M).
I to je to, sve onda radi besprekorno hvala ti jos jednom! Very Happy
Pozdrav Ziveli

Ko je trenutno na forumu
 

Ukupno su 749 korisnika na forumu :: 16 registrovanih, 2 sakrivenih i 731 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., babaroga, bigfoot, ikan, Koridor, kybonacci, loon123, novator, ozzy, ruger357, ruma, ruso, SlaKoj, t84dar, Trpe Grozni, Zimbabwe