Solved

ArrayList in VB.NET Class

Posted on 2012-04-12
3
395 Views
Last Modified: 2012-06-27
I am creating my first ever custom class.

Code currently us...

Public Class AQL_SMS
    Public Username As String
    Public Password As String
    Public Destination As ArrayList
    Public Message As String
    Public Originator As String
    Public Max_Concat As String
    Public Sendtime As Date
    Public Unix_Sendtime As Integer
    Public ReplaceSMS As Boolean
    Public Flash As Boolean
    Public Dlr_URL As String

    Public Sub New(ByVal _username As String, ByVal _password As String)
        Username = _username
        Password = _password
    End Sub


    Public ReadOnly Property Destinations As String
        Get
            Dim tmpjoin As String = ""
            Dim str As String
            For Each str In Destination
                tmpjoin = String.Concat(tmpjoin, str.ToString & ",")
            Next
            tmpjoin = tmpjoin.Substring(0, tmpjoin.Length - 1)
            Return tmpjoin
        End Get
    End Property
End Class

Open in new window


This is a class based upon http://www.aql.com/sms/integrated/sms-api/

I have set Destination as an ArrayList as it should be able to contain multiple destination numbers.

I have declared in my progect code as follows...

Public Class frmClassView
    Public SMS As New AQL_SMS("my_username", "my_password")

    Private Sub btbSMS_Click(sender As System.Object, e As System.EventArgs) Handles btbSMS.Click
        SMS.Destination.Add("01234567891")
        SMS.Destination.Add("01234567891")

        tmrAutoSMSPropertyCheck.Start()
    End Sub

    Private Sub tmrAutoSMSPropertyCheck_Tick(sender As System.Object, e As System.EventArgs) Handles tmrAutoSMSPropertyCheck.Tick
        lblUsername.Text = SMS.Username
        lblPassword.Text = SMS.Password
        lblDestination.Text = SMS.Destinations
        lblMessage.Text = SMS.Message
        lblOriginator.Text = SMS.Originator
        lblMax_Concat.Text = SMS.Max_Concat
        lblSendtime.Text = SMS.Sendtime
        lblUnix_Sendtime.Text = SMS.Unix_Sendtime
        lblReplaceSMS.Text = SMS.ReplaceSMS
        lblFlash.Text = SMS.Flash
        lblDlr_URL.Text = SMS.Dlr_URL
    End Sub
End Class

Open in new window


However I get the error...

System.NullReferenceException was unhandled
  Message=Object reference not set to an instance of an object.
  Source=WindowsApplication1
  StackTrace:
       at WindowsApplication1.frmClassView.btbSMS_Click(Object sender, EventArgs e) in C:\Users\terry\AppData\Local\Temporary Projects\WindowsApplication1\frmClassView.vb:line 5
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:

at the

SMS.Destination.Add("01234567891")

Open in new window


line.

Why, and how do I fix this to work as I expect it to?
0
Comment
Question by:Terry Rogers
3 Comments
 
LVL 53

Accepted Solution

by:
Dhaest earned 500 total points
ID: 37836497
The object is not yet declared.
You can easily solve it in your constructor

Public Sub New(ByVal _username As String, ByVal _password As String)
        Username = _username
        Password = _password
        Destination = new ArrayList()

    End Sub
0
 
LVL 17

Expert Comment

by:nepaluz
ID: 37836502
A Couple of things.
1.This line
Public SMS As New AQL_SMS("my_username", "my_password")

Open in new window

should give you an error as it should be
Public SMS As New AQL_SMS With {.Username = "my_username", .Password = "my_password"}

Open in new window

2.  you have to create your ArrayList (or initialise it) then pass it to your initialised class,e.g
SMS.Destination = New ArrayList From {"01234567891", "01234567891"}

Open in new window

or
Dim Dest As New ArrayList
Dest.Add("01234567891")
Dest.Add("01234567891")
SMS.Destination = Dest

Open in new window

0
 
LVL 1

Author Closing Comment

by:Terry Rogers
ID: 37836518
This worked perfectly. Thankyou! :)
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now