Crazione di un Tipo di dato

martedì 04 dicembre 2012 - 12.15

Osiride80 Profilo | Newbie

Ciao a tutti,
ho una domanda un po così.. se volessi creare un tipo di dato che accetta solo numeri tra 1 e 100 qual'è la soluzione migliore?

così potrei scivere:

Dim numero as MioDato
numero = 1000

e ricevere un errore immediato come avviene per l'asseggnazione di un valore sballato ad un integer

dim numero as integer
numero = 50000

Davide1986 Profilo | Junior Member

Non so se ti può essere utile ho buttato giù una classe veloce di nome MioDato che ho implementato solo la funzione che Verifica , restituisce TRUE se il valore è >=1 e <=100 altrimenti FALSE.

Linguaggio Visual Studio VB.NET :

Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim prova As New MioDato Dim esito As Boolean esito = prova.Verifica(1000) MsgBox("FALSE = " & esito) esito = prova.Verifica(500) MsgBox("FALSE = " & esito) esito = prova.Verifica(10) MsgBox("TRUE = " & esito) End Sub Private Class MioDato Dim _valore As Integer Property Valore() As Integer Get Return _valore End Get Set(ByVal value As Integer) _valore = value End Set End Property Dim _valueVerifica As Integer Property Verifica(ByVal _valore As Integer) As Boolean Get If (_valore >= 1) And (_valore <= 100) Then Return True Else Return False End If End Get Set(value As Boolean) value = False End Set End Property Public Sub New() End Sub Public Sub New(ByVal nn As Integer) Me.Valore = nn End Sub End Class End Class
Blog ImaginSystems
http://blogs.dotnethell.it/imaginsystems
http://www.alpacasrl.it

Osiride80 Profilo | Newbie

Ciao davide e grazie per il tuo intervento.
La tua soluzione è un espendiente che avevo provato, purtroppo non l'ho trovata funzionale, ma ho pensato ad un'alternativa che potrebbe essere risolutiva.
Se qualcuno avesse altre idee sono ben accette. Di seguito la mia alternativa:

Il codice lo riporto in vb6 dato che il programma che sto sviluppando è in questo linguaggio.

Modulo di classe cMioDato

Option Explicit

Private m_numero As Integer

Property Get numero() As Integer
numero = m_numero
End Property

Property Let numero(ByVal iNumero As Integer)
If iNumero >= 1 And iNumero <= 1000 Then
m_numero = iNumero
Else
Dim lErr As Long, sErr As String
lErr = Err.Number: sErr = "Il numero massimo inseribile è compreso tra 1 e 1000 inclusi"
Err.Raise lErr, , sErr
End If
End Property

Impostando la proprietà Numero di default si avrà un risultato di questo tipo

dim MioDato as new cMioDato
MioDato = 2000

Il compilatore scatena l'errore come quello di errata assegnazione ad un integer:

dim a as integer
a = 50000

Una cosa molto CURIOSA che ho notato è che nel metodo Raise dell'oggetto Err, il parametro source non viene stampato.. qualcuno mi conferma questa cosa?

Grazie a quanti risponderanno ancora.

Nel caso la soluzione da me scritta fosse quella che si considera definitiva per il problema da me presentato scrivetelo in una risposta e chiudete tranquillamente il post.

Ciao.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5