Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Classi e gestione dei loro errori

    Razzi, aiutatemi voi vi prego.

    Ho il seguente problema:

    se creo una classe (modulo di classe):

    nome:Persona
    ------------------------------------------------
    Option Explicit
    Private Nome as String

    Property let Nome(Valore as String)
    If Valore="" then Err.Raise 600,,"Descrizione"
    End Property
    ------------------------------------------------

    Poi ad esempio all'interno di una form dichiaro una variabile di questo tipo:

    ------------------------------------------------
    Private Sub Form_Load()
    Dim Pers as Persona
    Set Pers=New Persona
    Pers.Nome=""
    End Sub
    ------------------------------------------------

    Ovviamente avendo specificato nella Property Let Nome che se passo una stringa vuota mi spara un errore eseguendo il programma scatenerà subito l'errore "600 Descrizione".

    Ora il mio problema è il seguente: Come diavolo faccio a far uscire questo errore dalla classe?
    Se io ad esempio facessi questo:

    ------------------------------------------------
    Private Sub Form_Load()
    Dim Pers as Persona
    Set Pers=New Persona
    On Error Resume Next
    Pers.Nome=""
    End Sub
    ------------------------------------------------

    Quello che di logica dovrebbe accadere è che l'istruzione "Set Pers=New Persona" genera errore ma lo gestisce ignorandolo e passando oltre, invece non va così, la classe si tiene l'errore al suo interno e blocca comunque l'esecuzione dell'applicazione.

    Se qualcuno di voi sa dirmi come far uscire l'errore dalla classe ne sarei felicissimo!

    Grazie ancora :quote:

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    :master:

    quindi anche se metti un OnError GoTo ... non va nella gestione degli errori ma ti si blocca?

  3. #3
    Il comportamento è normale, in quanto il debugger si posiziona proprio sopra la riga che ha generato l'errore. Per fare come dici tu, devi utilizzare una classe compilata, in questo caso il debugger si ferma sulla riga dove assegni pers.Nome = "".
    Chi non cerca trova.

  4. #4
    Mmmmhhhhh
    Come faccio a compilare la mia classe?

  5. #5
    Crei un progetto DLL ActiveX e ci infili dentro la tua classe. Dopo di che, dal progetto exe iniziale, vai nel menu Progetto/Riferimenti e aggiungi questa DLL. A questo punto, nel tuo codice hai a disposizione la classe contenuta nella DLL. Non sono sicuro però che questa sia la strada migliore per le tue esigenze, fammi sapere.
    Chi non cerca trova.

  6. #6
    Ti ringrazio 1k :quote:

    Mi hai veramente salvato il culo, quindi per la parcondicio di devo un culo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.