Autore Topic: [Risolto]Testo in una drawingarea  (Letto 1082 volte)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
[Risolto]Testo in una drawingarea
« il: 30 Novembre 2009, 10:43:10 »
Perché se scrivo:
Codice: [Seleziona]
Draw.Text(Format(hFreeSpace, "###.#"), 10, 0, 100, 14)

Dichiarando esternamente
Codice: [Seleziona]
PUBLIC hFreeSpace AS Float 'Show HDD free space

mi scrive 0?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Testo in una drawingarea
« Risposta #1 il: 30 Novembre 2009, 16:39:23 »
Scritto così, la variabile hFreeSpace è solo dichiarata, ed è inizializzata a zero.

Non capisco la stringa seguente "Show HDD free space", manca il CR?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Testo in una drawingarea
« Risposta #2 il: 30 Novembre 2009, 18:29:41 »
format formatta una stringa quindi ti conviene convertire il float in un astringa prima di formattarlo
Codice: [Seleziona]
Draw.Text(Format(cstr(hFreeSpace), "###.#"), 10, 0, 100, 14)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Re: Testo in una drawingarea
« Risposta #3 il: 01 Dicembre 2009, 13:32:55 »
la parte dove ho scritoo show....manca dell'', è un commento.
nell'apertura del form ho scritto anche questo:
Codice: [Seleziona]
hFreeSpace = Dfree("/") / 1073741824

che avevo dimenticato di postare...

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Testo in una drawingarea
« Risposta #4 il: 01 Dicembre 2009, 14:34:44 »
Perdona fsurfing, ma Format serve per formattare valori diversi da stringa, e convertirli appunto in una stringa, nel formato voluto. Se la converti prima con CStr(), format non riesce a capire cosa deve fare, o perlomeno può creare dei problemi...

Il valore passato da Lux è corretto, ma non essendo inizializzato, viene riportato il suo valore di inizializzazione, ovvero zero.
Se poi, invece, l'ha popolato con l'operazione che ha scritto in quest'ultima mail, allora c'è qualcosa che non và...

1) Qual'è il valore di DFree() senza la divisione?
2) Sei sicuro che sul tuo sistema il punto decimale viene considerato come divisore decimale? Provato con la virgola?
3) Sei sicuro che le dimensioni inserite in Draw() non siano troppo piccole?

Penso che tu debba procedere a piccoli passi, ovvero verificare se DFree() ritorna un valore corretto, se la divisione ritorna un valore rappresentabile, se il carattere punto del formato è accettato, se le dimensioni di Draw() possono contenere tutto il numerello.

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Re: Testo in una drawingarea
« Risposta #5 il: 01 Dicembre 2009, 15:51:42 »
però se provo a far scrivere il valore della divisione in una label tutto va...

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Re: Testo in una drawingarea
« Risposta #6 il: 03 Dicembre 2009, 14:53:41 »
Ho risolto.
Precedentemente avevo dichiarato la variabile hFreeSpace con Dim all'avvio del programma.
Togliendolo tutto è andato!
grazie mille a tutti!

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Testo in una drawingarea
« Risposta #7 il: 03 Dicembre 2009, 15:11:48 »
Inserisci [RISOLTO] nel titolo...grazie...;-)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Re: Testo in una drawingarea
« Risposta #8 il: 03 Dicembre 2009, 15:19:40 »
Fatto! :-)

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Testo in una drawingarea
« Risposta #9 il: 03 Dicembre 2009, 15:20:48 »
:2birre: La prossima volta però non farmelo dire perchè sennò mediante un attacco informatico ti formatto il PC e addio foto della gita a mare con l'amante!!!