Ciao,
Quando premo sul pulsante calcola e le caselle sono tutte vuote in totale rimborsi leggo: 6,20261617855015E-307
in spese auto: 0
e in Totale: 2,67149116420932E-297
Non so dove pesca questi numeri se nelle edit non inserisco nulla.
Forse devo inizializzare le variabili poichè pescano sporcizia?
invece quando scrivo in tutte le caselle i risultati non sono giusti.
Ringrazio
procedure TForm1.BCalcolaClick(Sender: TObject);
var
n1, n2, n3, n4, n5, n6, n7, n8, c, a, b: real;
begin
try
n1 := strtoFloat(Km_Percorsi.Text); //converto da stringa a real
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
n2 := strtoFloat(Consumo_Auto.Text);
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
n3 := strtoFloat(Costo_Carburante.Text);
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
n4 := strtofloat(Spese_Viaggio.Text);
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
n5 := strtofloat(ristorante.Text);
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
n6 := strtofloat(albergo.Text);
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
n7 := strtofloat(totale_rimborsi.Text);
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
n8 := strtofloat(Spese_auto.Text);
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
c := ((n1 / n2) * n3) + n4 + n6 + n5 + n7 + n8;
except
on EDivByZero do
ShowMessage('Attenzione stai dividendo per zero!');
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
a := (n1 / n2) * n3;
except
on EDivByZero do
ShowMessage('Attenzione stai dividendo per zero!');
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
try
b := n5 + n6 + n4;
except
on ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori');
end;
//scrivo nella casella di testo e riconverto la variabile
Spese_Auto.Text := Floattostr(a);
//scrivo nella casella di testo e riconverto la variabile
totale_rimborsi.Text := Floattostr(b);
//scrivo nella casella di testo e riconverto la variabile
Totale.Text := Floattostr(c);
end;
ciao Simon
prova così:
procedure TForm1.BCalcolaClick(Sender: TObject);
var
n1, n2, n3, n4, n5, n6, n7, n8, c, a, b: real;
begin
// inizializzazione
n1 := 0;
n2 := 0;
n3 := 0;
n4 := 0;
n5 := 0;
n6 := 0;
n7 := 0;
n8 := 0;
try
if Trim(Km_Percorsi.Text) <> '' then
n1 := strtoFloat(Km_Percorsi.Text); //converto da stringa a real
if Trim(Consumo_Auto.Text) <> '' then
n2 := strtoFloat(Consumo_Auto.Text);
if Trim(Costo_Carburante.Text) <> '' then
n3 := strtoFloat(Costo_Carburante.Text);
if Trim(Spese_Viaggio.Text) <> '' then
n4 := strtofloat(Spese_Viaggio.Text);
if Trim(ristorante.Text) <> '' then
n5 := strtofloat(ristorante.Text);
if Trim(albergo.Text) <> '' then
n6 := strtofloat(albergo.Text);
if Trim(totale_rimborsi.Text) <> '' then
n7 := strtofloat(totale_rimborsi.Text);
if Trim(Spese_auto.Text) <> '' then
n8 := strtofloat(Spese_auto.Text);
except
on e: ECONVERTERROR do
ShowMessage('Assicurarsi di aver inserito correttamente i valori' + #10 + e.Message);
end;
[...]
Ciao ho risolto così: ;)
procedure TForm1.BCalcolaClick(Sender: TObject);
var
n1, n2, n3, n4, n5, n6, n7, n8, n9, c, a, b: real;
begin
//---------------------------inizializzo--------------------------------
n1 := 0;
n2 := 0;
n3 := 0;
n4 := 0;
n5 := 0;
n6 := 0;
n7 := 0;
n8 := 0;
a := 0;
b := 0;
//-------------------------------- totale rimborsi---------------------
try
if Trim(ristorante.Text) <> '' then
n5 := strtofloat(ristorante.Text);
if Trim(albergo.Text) <> '' then
n6 := strtofloat(albergo.Text);
if Trim(Spese_Viaggio.Text) <> '' then
n4 := strtofloat(Spese_Viaggio.Text);
b := n5 + n6 + n4;
//scrivo nella casella di testo e riconverto la variabile
totale_rimborsi.Text := Floattostr(b);
except
ON ECONVERTERROR do
MESSAGEDLG('Assicurarsi di aver inserito correttamente i valori!',
mtError, [mbOK], 0)
else
begin // In tutti gli altri casi di errore
MessageDlg('Prestare Attenzione!', mtError, [mbOK], 0);
Ristorante.Text := ''; //n5 // ripulisce le caselle
Albergo.Text := ''; //n6
spese_viaggio.Text := ''; //n4
end;
end;
//-----------------------------spese auto e totale ---------------------
try
if Trim(Km_Percorsi.Text) <> '' then
n1 := strtoFloat(Km_Percorsi.Text);
if Trim(Consumo_Auto.Text) <> '' then
n2 := strtoFloat(Consumo_Auto.Text);
if Trim(Costo_Carburante.Text) <> '' then
n3 := strtoFloat(Costo_Carburante.Text);
a := (n1 / n2) * n3;
//scrivo nella casella di testo e riconverto la variabile
Spese_Auto.Text := Floattostr(a);
//eseguo il totale
Totale.Text := Floattostr(a + b);
except
ON EZERODIVIDE do
MESSAGEDLG('Divisore nullo!', mtError, [mbOK], 0);
ON ECONVERTERROR do
MESSAGEDLG('Assicurarsi di aver inserito correttamente i valori!',
mtError, [mbOK], 0)
else
begin // In tutti gli altri casi di errore
MessageDlg('Inserisci i valori!', mtError, [mbOK], 0);
Km_Percorsi.Text := ''; // n1 // ripulisce le caselle
Consumo_Auto.Text := ''; // n2
Costo_Carburante.Text := ''; //n3
Totale_Rimborsi.Text := ''; // n7
Spese_Auto.Text := ''; // n8
Spese_Viaggio.Text := ''; // n4
Totale.Text := ''; //n9
Albergo.Text := ''; //n6
Ristorante.Text := ''; //n5
end;
end;
end;
Vi saluto