giacomopaty (Normal User)
Rookie
Messaggi: 53
Iscritto: 17/10/2011
|
Salve a tutti, volevo creare un piccolo programma che convertisse i Celsius in Fahrenheit, ma ho un problema, il codice che ho scritto è questo:
Codice sorgente - presumibilmente Plain Text |
Edit2.Text:=IntToStr(((StrToInt(Edit1.Text)-32)*5)/9);
|
dovrei ottenere i gradi Fahrenheit, ma il compilatore mi da errore, più precisamente questo:
Codice sorgente - presumibilmente Delphi |
There is no overloaded version of 'IntToStr' that can be called with these arguments
|
adesso non mi aspetto che voi mi scriviate la formula giusta, ma vorrei almeno cercare di capire dove ho sbagliato.
Uso Delphi 7.
Grazie. Ultima modifica effettuata da giacomopaty il 21/10/2012 alle 1:13 |
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Non sono pratico di delphi, quindi ti faccio una domanda:
Sei sicuro che la funzione StrToInt esista?
Prova a fare così:
Crei una variabile Integer, gli dai in pasto StrToInt
e poi nella funzione di conversione gli inserisci la variabile che hai creato.
Esempio:
Codice sorgente - presumibilmente Plain Text |
gradi:Integer;
gradi:= StrToInt(Edit1.Text);
Edit2.Text:=IntToStr(((gradi-32)*5)/9);
|
|
|
giacomopaty (Normal User)
Rookie
Messaggi: 53
Iscritto: 17/10/2011
|
Postato originariamente da LittleHacker:
Non sono pratico di delphi, quindi ti faccio una domanda:
Sei sicuro che la funzione StrToInt esista?
Prova a fare così:
Crei una variabile Integer, gli dai in pasto StrToInt
e poi nella funzione di conversione gli inserisci la variabile che hai creato.
Esempio:
Codice sorgente - presumibilmente Plain Text |
gradi:Integer;
gradi:= StrToInt(Edit1.Text);
Edit2.Text:=IntToStr(((gradi-32)*5)/9);
|
|
Grazie della risposta, ho provato anche come hai detto tu, ma da sempre lo stesso errore, allora ho provato con FloatToStr e StrToFloat e ha funzionato, comunque IntToStr esiste. Grazie ancora |
|
systemgvp (Normal User)
Expert
Messaggi: 296
Iscritto: 14/04/2008
|
il problema è semplicemente che l''operatore "/" non lo puoi applicare a numeri non decimali, StrToInt e viceversa vale solo se i numeri sono interi, ma nel tuo caso erano tutti decimali.
Al massimo se vuoi tutti come interi per la visualizzazione metti un Trunc()
|
|
Anonymous (Member)
Guru
Messaggi: 1059
Iscritto: 30/07/2006
|
Postato originariamente da systemgvp:
il problema è semplicemente che l''operatore "/" non lo puoi applicare a numeri non decimali, StrToInt e viceversa vale solo se i numeri sono interi, ma nel tuo caso erano tutti decimali.
Al massimo se vuoi tutti come interi per la visualizzazione metti un Trunc() |
esattamente...
è da tanti tanti anni che non scrivo più in delphi.. cmq per gli interi mi sembra esistesse la parola chiave "div" al posto di "/" per fare la divisione (in pratica, sempre se non ricordo male, div fa una divisione intera e per esempio "5 div 2" dovrebbe restituire 2 che non darà problemi quando usi la funzione IntToStr visto che 2 è intero e 2.5 non lo sarebbe)
in ogni caso per quello che vuoi fare tu ti conviene mettere il FloatToStr e lasciargli due o tre decimali.. altrimenti la conversione non so se viene così bene Ultima modifica effettuata da Anonymous il 21/10/2012 alle 12:42 |
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
Postato originariamente da giacomopaty:
Salve a tutti, volevo creare un piccolo programma che convertisse i Celsius in Fahrenheit, ma ho un problema, il codice che ho scritto è questo:
Codice sorgente - presumibilmente Plain Text |
Edit2.Text:=IntToStr(((StrToInt(Edit1.Text)-32)*5)/9);
|
dovrei ottenere i gradi Fahrenheit, ma il compilatore mi da errore, più precisamente questo:
Codice sorgente - presumibilmente Delphi |
There is no overloaded version of 'IntToStr' that can be called with these arguments
|
adesso non mi aspetto che voi mi scriviate la formula giusta, ma vorrei almeno cercare di capire dove ho sbagliato.
Uso Delphi 7.
Grazie. |
Tra tante campane, suono anche il mio campanellino
come ti è stato detto il problema sono i decimali, ma oltre a questo anche la leggibilità fare tutto su una riga a volte non paga, io farei :
Codice sorgente - presumibilmente Delphi |
Function Celsius2Fahrenheit(nGradi:Extended): Extended; begin Result := (nGradi - 32)*5/9; end; .... Var cGradi: Extended; Fahrenheit: Extended; begin cGradi := StrToFloat(Edit1.Text); Fahrenheit := Celsius2Fahrenheit(cGradi); Edit2.Text:= FormatFloat('0.00',Fahrenheit); end;
|
poi se vuoi fare tutto su una riga allora devi scrivere :
Edit2.Text:=FloatToStr(((StrToFloat(Edit1.Text)-32)*5)/9);
in questo modo hai la gestione dei decimali
Ibis redibis non morieris in bello |
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Un accorgimento per il prossimo programma che carichi o la prossima versione di questo programma: Il nome, deve essere qualcosa di più, non solo un Nome buttato li così! La descrizione, più dettagliata, tipo cosa fa, se è una App Console o App GUI, etc. E poi in questa app dovresti inserire un limitatore, che se uno arriva ad un tot, la textbox gli blocca l'inserimento dei numeri! Comunque per quando riguarda il resto, app fatta bene! Bravo!
|
|
timpane (Normal User)
Newbie
Messaggi: 2
Iscritto: 19/08/2013
|
cmq per gli interi mi sembra esistesse la parola chiave "div" al posto di "/" per fare la divisione (in pratica, sempre se non ricordo male, div fa una divisione intera e per esempio "5 div 2" dovrebbe restituire 2 che non darà problemi quando usi la funzione IntToStr visto che 2 è intero e 2.5 non lo sarebbe)
|
|