Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Delphi - Problema con formula
Forum - Delphi - Problema con formula

Avatar
giacomopaty (Normal User)
Rookie


Messaggi: 53
Iscritto: 17/10/2011

Segnala al moderatore
Postato alle 1:12
Domenica, 21/10/2012
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

  1. 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

  1. 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
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 7:44
Domenica, 21/10/2012
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

  1. gradi:Integer;
  2. gradi:= StrToInt(Edit1.Text);
  3. Edit2.Text:=IntToStr(((gradi-32)*5)/9);



:k:

PM Quote
Avatar
giacomopaty (Normal User)
Rookie


Messaggi: 53
Iscritto: 17/10/2011

Segnala al moderatore
Postato alle 10:31
Domenica, 21/10/2012
Testo quotato

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

  1. gradi:Integer;
  2. gradi:= StrToInt(Edit1.Text);
  3. Edit2.Text:=IntToStr(((gradi-32)*5)/9);



:k:



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 :)

PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 12:09
Domenica, 21/10/2012
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()

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 12:39
Domenica, 21/10/2012
Testo quotato

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
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 14:30
Domenica, 21/10/2012
Testo quotato

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

  1. 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

  1. 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

  1. Function Celsius2Fahrenheit(nGradi:Extended): Extended;
  2.   begin
  3.     Result := (nGradi - 32)*5/9;
  4.   end;
  5. ....
  6. Var cGradi: Extended;
  7.     Fahrenheit: Extended;
  8. begin
  9.   cGradi := StrToFloat(Edit1.Text);
  10.   Fahrenheit := Celsius2Fahrenheit(cGradi);
  11.   Edit2.Text:= FormatFloat('0.00',Fahrenheit);
  12. 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
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 15:07
Domenica, 21/10/2012
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! :k: :pat:

PM Quote
Avatar
timpane (Normal User)
Newbie


Messaggi: 2
Iscritto: 19/08/2013

Segnala al moderatore
Postato alle 11:56
Lunedì, 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)

PM Quote