Passing Subs And Functions With Varying Signatures Into A Class
Dec 28, 2011
I have a number of unrelated subs and functions that do various things on my server (e.g. Lighting control, data caching, server maintenance, etc). They are all in various classes which I have coalesced into a single solution.My goal is to create a single, simple interface which each of these disparate classes can be integrated and called from a command line interface. Instead of hard-coding a longish case statement which parses arguments and passes them to the various subs, I wanted to make a generic class which can be instantiated with a minimum of information and put into a data structure. Ideally, adding a new function would involve:
1.) Providing the function pointer (Delegate). The delegates will have various signatures. This is the crux of the question.
2.) Providing ancillary info such as the command-line callable name, number of arguments, argument types, etc.
I have a 100% working class called "node" which is basically a hierarchical tree of node instances. I can use this to simply organize function calls in related branches. All is working quite well.NodeFunctionDelegate(ByVal args As String) As String.The node takes the arguments passed to it by the command line and sends it as the "args" string as comma-separated. The delegate function then needs to know how to split up these comma-separated values, type them, tryparse them and etc. It then must return some string.It works, but it involves writing a middle-man function stub which can receive the argument string from the node class, do the parsing and type checking, and then call the destination function.My goal is to eliminate this trivial middle-man function. The problem is, I can't figure out how to create a variable-signature delegate for the node class.
This is very basic about the layout of classes, subs etc. 1. Should all my subs & functions always be inside a class? I haven't used classes too much before, mostly just a bunch of subs in a form file. Now I downloaded a sample program which I want to develop. This has all the code of the form inside "Public Class Form1": [Code] The code is an example of use of the ZedGraph library. It produce a simple window with one graph/chart. Now I want to develop this code with several tabs, a dusin different charts, file I/O and so on. I'm ok with most of the specific coding, but my question is on the general coding;
2. Should I continue my subs&functions inside this form? inside this class? inside a new class? Earlier when I've NOT been using class, I can make global variables by placing the "Dim" outside the subs. This does not seem to work within a class. 3. Should I avoid global variables all together, or how is this done without always passing arguments?
Also I will make more forms, for program options etc. 4. Should these forms be coded as classes? or just subs&functions in a form? Obviously I'm not well trained on the proper use of classes and have trouble to find this easily explained.
Namespace MyClassLib Public Class MainClass Public Sub New()
[CODE]...
Is it possible to make it so that the user using the Class Library has to declare a new Instance of MainClass() before using Subs/Functions in Class2 or Class3?
When you refrence a Function like this one:[code]You may want to be able to get more out of that, like this.[code]So how would I be able to add subs or functions onto a sub or function like that?
I don't mean to sound unintelligent, but is there a way to insert your functions and subs into visual basic and call them from and program made in visual basic? I don't want to have to put the code in over and over again.
I was wondering how to implement a vb script file with functions and subs that can be used in all code pages of a project. Similar to the old VB 6 bas files.
Option Explicit On Option Strict On Public Class frmMain Private Sub btnSub_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles btnSub.Click Call CalcSumSub(CLng(txtN.Text)) [Code] ..... I'm not receiving any errors or any thing I just need figuring out the logic in this program. The Program Needs to Accept Input in One text box and adds n numbers together and displays the sum using only subroutines and Functions. Attached File(s) Assignment5.txt (4.49K) Number of downloads: 84
Earlier I was working on a project, and I added a StatusToolStrip and the the ToolStrip I added a label and a progress bar. The label will say the current sub or function that is in progress and the progress bar will show how far along it is through the sub or function. I have tried this myself but I cannot figure it out as I rarely use progress bars.
An example of a code that I would like the progress bar to show would be like this: Private Sub StopServer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StopServer.Click 'Checks to give server notice If My.Settings.warningmessages = True Then Dim cmd As String = My.Settings.warningmessagetext(2) [Code] .....
So while the sub is running the label would say "Stopping Server" and the progress bar would show how far along the sub is.
When I code in PHP I usually keep my functions in a separate file functions.php, I am going to write a small function in VB, is it ok to keep all my functions and subs in the 1 file linke in PHP? will they be available in all my form code?
I am porting an app from VB6 and I run into problems with references to functions and subs. Basically, let's say I have 2 classes added to the project, like this.
Public Class OOOOO Public Shared Sub BBBBBBB(ByVal FileName As String) ... Call CCCCCC() Call DDDDDD() etc. ... End Sub [Code] .....
I had to make the BBBB() shared to be able to call it from another function AAAAAA() from another class PPPPP. However, I get error on the references in the BBBBB(), that CCCC() and DDDD() have to be made also shared (so instead of 1 error I got number of errors). When I tried to make them shared as well, I got tens and tens of errors due to other references of both variables and functions.
I'm having an issue where I need to pass the value in a variable from one sub to anotherHere is the scenario. I have two forms; Main_Form and frmClient. I take a value from frmClient and pass it into a sub called Form_Activate located in Main_Form. I then need to take the value from Form_Activate and use it in a sub called when the user selects a menu item in the toolstrip.Starting point is frmClient and the code there is this:
Private Sub Button1_Click(ByVal sender as System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Client As Integer
I have an application that queries DHCP and pulls scope/subnet information. There are roughly 8k scopes on our network to query so reporting this data takes a little bit of time. I currently have this running on it's own thread and reporting to a progress bar so the applications doesn't seem inactive.
The DHCP api functions can report a total, a max read and a resume argument. This means that I can, in theory start 4 threads and have each thread read through 2k subnets, so it will only take 1/4 of the time to read all this data. Would I need to create four separate background worker handlers, do_works, runworkcomplete, report progress etc.?
I'm almost sure that I've seen this somewhere, but I can't find it anymore. Or maybe I'm imagining it, which would'nt be strange either.
When creating a sub or function and adding parameters used when calling it.
-Is it possible to list the parameters that I can enter when using it somewhere in my code?
E.g.
Public Sub MessageMain(ByVal Message As String, ByVal MessageType As String (List of possible values for MessageType)) Same for example as when you have boolean values in a sub/function. As soon as you use that somewhere in your code intellisense will present you with True/False to select.
I'd like the same for parameters in subs or functions I create and calling them from somewhere in my code. Saves me the trouble of remembering which options are available for those parameters.
i have an sql database in my application and everything is working fine apart from one aspect.My random row picker code is located in one button on_click event. Is there a way of passing it over to other subs/on_click events?
I wanted to get your feedback on a design/coding issue. I have a treeview which represents the device tree in device manager. I also have two listviews which display information about the currently selected device on the treeview. I'm only concerned with the first listview at this point. The information displayed in the listview varies depending on the selected device. I'm using the node index to track which device class and device is selected and I pass this into the device class Display method. I hate the idea of a big Select Case statement. Then there is also the dynamic nature of the device tree to consider.
I have an application that I am reworking. It has many reports and a pain to compile and roll out.I'd like to make a root user interface that "calls" the functions and subs remotely.I was concidering pulling them and making formless exe's of them, passing the needed criteria via command line. Yet still be able to update and control them.
I want to create constructor that can create container with these properties:
1. Only Diameter, in new sub define it round shape.
2. Diameter and Volume.
3. Length and Width (for rectangle shape)
All are double data type, but problem is 2 and 3 are conflict.How to let program know I want to create round shape container or rectangular shape container?
I'm trying to pass an array from a 2D Array to a function that takes a 1D array, but each time I do I get the error Number of indices is less than the number of dimensions of the indexed array.. I know using a structure would solve the problem, but unfortunately the assignment is to use a 2D Array instead of a structure. I've declared the 2D array as such:
Const MAX_ARR_SIZE = 63 Public HouseholdCollection(MAX_ARR_SIZE, 2) As UInteger Const IDENTIFICATION_CODE = 0 Const MEMBER_COUNT = 1
I would like to have custom methods to pass data between function, or to keep it in memory throughout the program.
Example:
Private function info() Addr1 = addr1.text Addr2 = addr2.text City = city.text
[code]....
Could I run this function towards the beginning of the program and use it throughout until the form is disposed? I can't seem to get the information to stick once I get out of the function, I will need to use the same information multiple times throughout the application so I figured if I could make a function to keep the info rather than declaring the 5 lines in every option but anytime I call the method, it fills it correctly then when I get back to the main function the info goes back to 'nothing'. is it possible to pass data around between functions like you could in Java?
I want to know if it's possible to retrieve the variables name from when it was passed into a certain function. For example, if I call parseId(myId) to a function with the signature parseId(id), i can obviously retrieve the value of 'id'. However, is there any way I can retrieve 'myId' as a string (without passing it as another value)? Specifically in vb.net, but I'm interested in how it would work in any given language.
topfunction(myarray, yourarray) dim function topfunction(byval array1() as integer, byval array2() as integer) dim function subfunction1(byval array1() as integer)
Code: ChartBuffer = GetCurrentChart(ChartBuffer) The error says Conversion from type 'Integer()' to type 'Integer' is not valid.
Apparently I have some type casting issues, the problem is I'm not trying to cast any types at all. I'm trying to set one array chartbuffer equal to the array returned from GetCurrentChart.
[Code]...
In the constructor of this class I am trying to set the buffer equal to the loaded chart because if I try to write information to a buffer that isn't already initialized, and then save it, it will overwrite stuff that might already be saved in the file as 0's or something, and I don't want it to do that. To prevent this from happening I'm simply going to initialize the buffer in the constructor by setting it equal to the loaded chart. Finally after that is all done I can write new information to the buffer and save it to the file without writing a mostly empty buffer (full of zero's) to the chart that is saved with information in it already.