Convert String Value To Type And Pass As Type Parameter.
Nov 19, 2010
i am getting all filenames from a directory.parsing out the directory names & the .vb extension then converting those filesnames to classes.Every file in the LPCriteria direcotry is its own class with a "Evaluate" function.[code]
I'm trying to create a function that searches up a WebControl's parent-child relationship (basically the opposite of WebControl.FindControl(id as String), but looking for a specific WebControl type).
Example
I have a user control in an ItemTemplate for a GridViewRow. I'm trying to reference the GridViewRow from the user control. The user control may or may not be inside a div or other types of controls, so I don't know exactly how many parent's up to look (i.e. I can't just use userControl.Parent.Parent). I need a function that will find the first GridViewRow that it finds on the way up the parent-child hierarchy.
I need to create a function which have either 1 parameter with a string as data type or 2 parameters with double as data type.Something like the substring method.
In a VS 2008 ASP.net 3.5 aspx.vb file, Response.Write(DDL.SelectedItem) worked very well.But "Dim filenameDDL As String = DDL.SelectedItem.Text" did not. Then I tried the following codes and found the problem -- Conversion from type 'ListItem' to type 'String' is not valid.
I have a TreeView, which contains nodes. When a user clicks on a node, corresponding CrystalReport document should be created and displayed.For example, names of my nodes are: "PeriodReport1", "PeriodReport2", "PeriodReport3". My CrystalReport documents are named same: "PeriodReport1", "PeriodReport2", "PeriodReport3".How can I create and display right type of crystal reports document? I could do something like this:
I've got this Function: Public Class QueryStringUtil Public Shared Function GetQueryStringValue(Of T As Structure)(ByVal queryStringVariable As String) As T Dim queryStringObject As Nullable(Of T) = Nothing If queryStringVariable <> Nothing Then If HttpContext.Current.Request.QueryString(queryStringVariable) IsNot Nothing Then queryStringObject = CTypeDynamic(Of T)(queryStringVariable) End If End If Return queryStringObject End Function End Class
When I try to call it like this: Dim intTest As Integer = QueryStringUtil.GetQueryStringValue(Of Integer)("stuff") Dim stringTest As String = QueryStringUtil.GetQueryStringValue(Of String)("stuff") Dim datetimeTest As DateTime = QueryStringUtil.GetQueryStringValue(Of DateTime)("stuff")
stringTest gives me the error: 'String' does not satisfy the 'Structure' constraint for type parameter 'T'.
I want our other developers to not worry about having to convert a class to a structure or some stuff like that when they call this function. I just want them to be able to put a standard type in the (Of T) and have it work. I don't mind writing in extra calculations to achieve that. The other problem is I also need the function to be able to return an actual null value, so I kind of need the queryStringObject as Nullable(Of T). Which means I have to have T as Structure otherwise it tells me that won't work. So looks like if I change what T is I need to run some calculation to delcare the var as nullable or not.
I tried overloading this method so that one returns T and one returns Nullable(Of T) like so: Public Shared Function GetQueryStringValue(Of T As Class)(ByVal queryStringVariable As String) As T Public Shared Function GetQueryStringValue(Of T As Structure)(ByVal queryStringVariable As String) As Nullable(Of T) And naturally it's telling me it can't do that since they just differ by return types. Is there anyway to overload this? I really don't want to have two functions.
I want to pass an optional parameter to a function of type System.Drawing.Color. The problem I am having is that when I declare the function it says "Constant expression is required" but I have tried variations of the following, including integers, full qualified indentifiers, even old vbWhite constants to no avail.
I want to use explicit conversion (CType function in VB.NET) to convert the variable d from double type to integer type and store the result as 132.
Imports System.Console Module Module1
Sub Main()
[CODE]...
This is my code. But Visual Basic tells me an error: Error1Type 'i' is not defined.C:\Users\mihaispr\Desktop\Conversie explicita\Conversie explicita\Module1.vb1922Conversie explicita
I've pieced together some information from other posts but I'm stuck. The first part works fine. Basically I query the database using LINQ and then I loop through the results generating a report.
fast way in VB to go from a string to a generic type T constrained to a valuetype (Of T as Structure), when I know that T will always be some number type?This is too slow for my taste:
But it seems to be the only sane method of getting from a String --> T. I've tried using Reflector to see how Convert.ChangeType works, and while I can convert from the String to a given number type via a hacked-up version of that code, I have no idea how to jam that type back into T so it can be returned.
I'll add that part of the speed penalty I'm seeing (in a timing loop) is because the return value is getting assigned to a Nullable(Of T) value. If I strongly-type my class for a specific number type (i.e., UInt16), then I can vastly increase the performance, but then the class would need to be duplicated for each numeric type that I use.
It'd almost be nice if there was converter to/from T while working on it in a generic method/class. Maybe there is and I'm oblivious to its existence?
Conclusion:Testing the three provided implementations below and my original DirectCast/ChangeType form, @peenut's approach of using a prepared delegate to fetch the Parse method from a basic type works. No error checking is done, however, so implementors need to remember to only use this with valuetypes that have a Parse method available. Or extend the below to do error checking.
All runs were done on a 32bit system running Windows Server 2003 R2 with 4GB of RAM. Each "run" is 1,000,000 executions (ops) of the method to be tested, timed with StopWatch and reported back in milliseconds.
Original DirectCast(Convert.ChangeType(myStr, GetType(T)), T):
1000000 ops: 597ms Average of 1000000 ops over 10 runs: 472ms Average of 1000000 ops over 10 runs: 458ms
[code]....
Comparatively, peenut's approach is almost 200ms faster when executed 1,000,000 times in a tight loop, so his approach wins out.
Is there are any way to convert boolean type into "ON"/"OFF" using string formatter Like: Dim inpValue as Boolean Dim outValue = String.Format("0:ON;OFF", inpValue) ' should show OFF as output I cannot use code or IFormatProvider
Does anyone know of a fast way in VB to go from a string to a generic type T constrained to a valuetype (Of T as Structure), when I know that T will always be some number type?This is too slow for my taste:
But it seems to be the only sane method of getting from a String --> T. I've tried using Reflector to see how Convert.ChangeType works, and while I can convert from the String to a given number type via a hacked-up version of that code, I have no idea how to jam that type back into T so it can be returned.
I'll add that part of the speed penalty I'm seeing (in a timing loop) is because the return value is getting assigned to a Nullable(Of T) value. If I strongly-type my class for a specific number type (i.e., UInt16), then I can vastly increase the performance, but then the class would need to be duplicated for each numeric type that I use.
It'd almost be nice if there was converter to/from T while working on it in a generic method/class. Maybe there is and I'm oblivious to its existence?
Conclusion:Testing the three provided implementations below and my original DirectCast/ChangeType form, @peenut's approach of using a prepared delegate to fetch the Parse method from a basic type works. No error checking is done, however, so implementors need to remember to only use this with valuetypes that have a Parse method available. Or extend the below to do error checking.
All runs were done on a 32bit system running Windows Server 2003 R2 with 4GB of RAM. Each "run" is 1,000,000 executions (ops) of the method to be tested, timed with StopWatch and reported back in milliseconds.
Original DirectCast(Convert.ChangeType(myStr, GetType(T)), T):
1000000 ops: 597ms Average of 1000000 ops over 10 runs: 472ms Average of 1000000 ops over 10 runs: 458ms
[code]....
Using System.Reflection and calling InvokeMethod to get at the Parse method:
1000000 ops: 12213ms Average of 1000000 ops over 10 runs: 11468ms Average of 1000000 ops over 10 runs: 11509ms Average of 1000000 ops over 10 runs: 11524ms
[code]....
Konrad's approach to generate IL code to access the Parse method and store the call into a delegate:
1000000 ops: 352ms Average of 1000000 ops over 10 runs: 316ms Average of 1000000 ops over 10 runs: 315ms
[code]....
peenut's approach of using a delegate to access the Parse method directly:
1000000 ops: 272ms Average of 1000000 ops over 10 runs: 272ms Average of 1000000 ops over 10 runs: 275ms
[code]....
Comparatively, peenut's approach is almost 200ms faster when executed 1,000,000 times in a tight loop, so his approach wins out. Although, Konrad's wasn't far behind and is itself a fascinating study of things like ILGenerator.
I'm trying to add a new record to my database but i keep getting the message - "conversion from type DBnull to type string is not valid". I think its something to do with the Employee ID when VB attempts to save it to the database my code is below
Imports System.Data.OleDb Public Class Add Private Sub DisplayRow()
I now have SQL Parameters set up and I'm using them to save/delete/add my data. This all works well, except when it's trying to save a combobox to the datatable it appears with the error above.Majority of my comboboxes have datasources, and the valuemembers of these are the actual list items, not the ID's of the list items.I'm not sure why this error could be happening, I'm fairly sure I've connected everything to the binding source correctly; I've checked it a few times.Does anybody know what the cause of this could be? I've looked around a bit and I haven't found much
I'm new to VB 2005, the code below is actualy coded from VB 6 and just converted it to VB 2005. I'm having trouble with line that's on bold letters.In VB 6 this works just ok. By the way the error message is "Unable to cast object of type 'System.String' to type 'ADODB.Connection'." [code]
Error 1Server Error in '/ Application. -------------------------------------------------------------------------------- Conversion from type 'DBNull' to type 'String' is not valid. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidCastException: Conversion from type 'DBNull' to type 'String' is not valid. Source Error: Line 64: Line 65:
I am getting the error "Conversion from type 'DataGridViewTextBoxCell' to type 'String' is not valid." When trying to display a cell from DGV in a listbox.I have my variable for the cell reference as follows:
Dim a As Object a = DataGridView1(4,1)
To insert it in the listbox as follows:
lstLetter.Items.Add(String.Format(a))
I tried:
lstLetter.Items.Add(a)
This will not actually display the entry inside the referenced cell, it shows this in my listbox instead:
I was tried to get quantity from db make use of the selection in list box. I got answered with listbox1. If i selected the item in listbox1 the quantity would appear in textbox1. But in this same code will not work for listbox2 with textbox4.. Here i given the code...
$Con.open() $Dim cd as new oledb.oledbcommand("Select Quantity from tlist where tool_name"& "'"listbox2.selecteditem & "'" & "", con)
[Code]....
Here i got the error as "Conversion from type DBNull to type string is not valid"
I've been getting this error when pulling data from a recordset. It is coming from a null entry and as a newbie to VB2008 I'm not sure how to get around this.
here is my code lblShipping.Text = reader("CARRIERCODE")
the error:Conversion from type 'DBNull' to type 'String' is not valid. Basically what i'm attempting to accomplish is to see if there is anything in that field. If so put it into the text box if not leave it blank.
Following is my code. Private Structure DISPLAY_ELEMENT_TYPE
[Code]...
Actually this is vb6 to .net converted code. I m getting compile error at following line
temp = Lset(DispElem(i)) bcz Lset is not supported in .Net Lset accept string data type for first parameter and interger for second.If you know any alternet solution or if you have any source code for Explicit convert UDT to string type and vice versa.