?
Solved

ArrayList in VB.NET Class

Posted on 2012-04-12
3
Medium Priority
?
417 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 53

Accepted Solution

by:
Dhaest earned 2000 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

[Webinar] How Hackers Steal Your Credentials

Do You Know How Hackers Steal Your Credentials? Join us and Skyport Systems to learn how hackers steal your credentials and why Active Directory must be secure to stop them.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses

764 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