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
Visual Basic 6 - errore di run-time 364 : l'oggetto è stato scaricato
Forum - Visual Basic 6 - errore di run-time 364 : l'oggetto è stato scaricato

Avatar
peppino84 (Normal User)
Rookie


Messaggi: 27
Iscritto: 11/09/2010

Segnala al moderatore
Postato alle 16:14
Giovedì, 27/10/2011
salve ragazzi
ho un piccolo problemino;

in un form ho una serie di textbox ed un commandbutton
alcune costituiscono i campi di inserimento dei dati in input ed altre mi restituiscono degli output

succede che se non inserisco alcun valore in qualche campo mi da un errore di run-time (364)
è evidente che l'iter di calcolo necessita obbligatoriamente di un valore finito in input (anche zero)

l'obbiettivo sarebbe quello di fare in modo che nella textbox in cui non ho inserito nulla compaia lo zero

ad esempio:
Codice sorgente - presumibilmente Visual Basic 6

  1. x=val(text1.text)
  2.    if "la casella text1.text è vuota" then
  3.    text1.text=0
  4.    endif



grazie per l'attenzione

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:24
Giovedì, 27/10/2011
Non vedendo il codice completo non ti posso dire ma ho perplessità sull'errore ...

Comunque, se la textbox è vuota lo controlli semplicemente con

If Text1.Text="" Then


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
peppino84 (Normal User)
Rookie


Messaggi: 27
Iscritto: 11/09/2010

Segnala al moderatore
Postato alle 0:15
Venerdì, 28/10/2011
in realtà non è cosi semplice;
nella textbox potrebbe scausalmente finirci uno spazio " " e cosi ridarebbe l'errore
oggi ci ho perso qualche oretta e ho trovato la soluzione...
molto banalmente:

Codice sorgente - presumibilmente VB.NET

  1. x=val(text1.text)
  2.          if Not (IsNumeric(x)) then
  3.          text1.text=0
  4.          endif



inoltre in questo modo mi riparo anche dalla possibilità che si faccia partire il ciclo con un testo non numerico inserito
con questo forum ho scoperto le funzioni IsDate IsEmpty IsNull IsNumeric

grazie per la collaborazione
buon lavoro

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:09
Venerdì, 28/10/2011
Per avere risposte precise bisogna fare domande precise.

Hai chiesto di inserire uno 0 se il textbox era vuoto. Avresti dovuto chiedere di validare l'input numerico.


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
peppino84 (Normal User)
Rookie


Messaggi: 27
Iscritto: 11/09/2010

Segnala al moderatore
Postato alle 13:47
Venerdì, 28/10/2011
anche un semplice space è considerato vuitao ma "" è diverso da " "

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:51
Venerdì, 28/10/2011
Testo quotato

Postato originariamente da peppino84:

anche un semplice space è considerato vuitao ma "" è diverso da " "



Un semplice spazio non è considerato affatto vuoto.


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
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Segnala al moderatore
Postato alle 14:55
Venerdì, 28/10/2011
punto 1
  
   usa la funzione TRIM$(textbox1.text)

che togli gli eventuali spazi

per cui il tuo if diventa     if TRIM$(textbox1.text) <> "" then


punto 2
    convalida il dato inserito al textbox1.keypress

    If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> vbKeyBack And Then
        KeyAscii = 0
    End If

PM Quote
Avatar
peppino84 (Normal User)
Rookie


Messaggi: 27
Iscritto: 11/09/2010

Segnala al moderatore
Postato alle 18:30
Venerdì, 28/10/2011
a NESSUNO :
è vero ... scusa ... dopotutto uno spazio occupa uno spazio
grazie

a Poe85 :
la soluzione che hai proposto è un pochino troppo spinta per me ...
ma mi hai fatto pensare ad un altro problema relativo alla punteggiatura ...
il codice che sto scrivendo acquisisce daiti in input (tutti numerici) sul mio uso il punto come separatore decimale ma se porto l'eseguibile su un pc che usa la virgola saltano i decimali e succede il caos....
immagino si tratti di codice Ascii ...

che faccio??
grazie

PM Quote
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Segnala al moderatore
Postato alle 17:00
Lunedì, 07/11/2011
ci sono varie modi per farlo uno dei quali con le API...
(ma la soluzione dovrebbe essere come hai detto tu "troppo spinta")

per fare una cosa semplice guarda il codice ascii e al massimo lo cambi...
mi spiego

stabilisci quale separatore vuoi...
se viene premuto l'altro cambia il codice ascii obbligando l'utente ad usare il separatore da te scelto...se hai spazio al massimo metti una label di esempio "es: 123456.789"


PM Quote