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 conversione da intero a stringa
Forum - Delphi - Problema conversione da intero a stringa

Avatar
giacomopaty (Normal User)
Rookie


Messaggi: 53
Iscritto: 17/10/2011

Segnala al moderatore
Postato alle 23:26
Venerdì, 07/12/2012
Salve a tutti, ho un problema che proprio non riesco a risolvere, ecco il codice:

Codice sorgente - presumibilmente Plain Text

  1. Form1.Edit13.Text:=IntToStr((Format('%d',[Integer(FWbemObject.Capacity)]))/1024/1024);



come potete vedere è scritto in modo adeguato, ci sono altre righe di codice identica a questa e funzionano, ma questa mi da errore di Stringa non compatibile con Intero:

Codice sorgente - presumibilmente Delphi

  1. Incompatible types: 'string' and 'Integer'



voglio capire perchè!

Grazie a tutti.

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 0:10
Sabato, 08/12/2012
personalmente non capisco il giro che hai fatto.. cmq,
il format ti ritorna gia una stringa, dunque devi rigirarlo in numero, ma dato che ci hai messo un "/" devi trasformarlo da float a stringa, ad occhio:
Form1.Edit13.Text := floatToStr(StrToInt(Format('%d',[Integer(FWbemObject.Capacity)]))/1024/1024);
                      


Ibis redibis non morieris in bello
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:11
Sabato, 08/12/2012
Con la Format ottieni una stringa che poi tenti di dividere due volte per 1024 ... non si fanno operazioni aritmetiche con le stringhe ...

Controlla le parentesi ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
giacomopaty (Normal User)
Rookie


Messaggi: 53
Iscritto: 17/10/2011

Segnala al moderatore
Postato alle 0:49
Domenica, 09/12/2012
Grazie a tutti e 2 per la risposta, ma ho risolto facendo così:

Codice sorgente - presumibilmente Plain Text

  1. Form1.Edit13.Text:=FloatToStr(Trunc((memory.dwTotalPhys/1024/1024)));



Mah, valle a capire le macchine.

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 0:58
Domenica, 09/12/2012
La funzione "TRUNC" ritorna un intero dunque FloatToStr è superfluo, in questo caso va bene IntToStr.

http://www.freepascal.org/docs-html/rtl/system/trunc.html


Ibis redibis non morieris in bello
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 10:17
Martedì, 18/12/2012
Puoi usare :

//parte intera di un numero
VarReal:=Int(VarReal); //3.14 -> 3 ma real

//parte decimale di un numero
VarReal:=Frac(VarReal); //3.14 -> 5687 real

//da real a integer

//parte intera di un numero arrotondata
VarInteger:=Round(VarReal); //35.56 -> 36

//parte intera di un numero NON arrotondata
VarInteger:=Trunc(VarReal); //35.56 -> 35

PM Quote