|
I am trying to call a function in a dll which was written in com
I am uing the following
Dim myxmlobj As New serviceprovider.ProcessXML<br />
Dim returnmesg As String<br />
<br />
returnmesg = myxml.ProcessXMLFile("c:\myxml.xml")
I have a added a reference to Interop.ServicePorvider in my project.
All seems correct but the funtion fails (Giving HRESULT E_Fails), is there anything special I need to consider as I am a calling a com dll.
Cheers
-- modified at 14:03 Saturday 27th January, 2007
|
|
|
|
|
No, it should just work.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Thanks Christian,
I wish it were only so.
Cheers
Geoff
|
|
|
|
|
Hi all
is there a standard way to determine if the local machine is connected to the internet with vb would appreciate your response
Regards
Daniel
Dan
|
|
|
|
|
Hi,
Through VBscripting without user involvement is to possible send sms via GPRS modem .I need to automate sending of SMS with help of VBscripting.
ThankYou
Anju
|
|
|
|
|
want to replase pic from pictuerbox but its not worked
thats my code
dim Aids as Integer = DataSet11.Admin.Item(0).AID.Trim
Dim fileinfo As String = OpenFileDialog1.FileName.Trim '//new Pic file
Dim fileex As String = Path.GetExtension(fileinfo.Trim)
Dim newdrfile As String = "C:\GymProg\Adminpic\" + AIDS.ToString.Trim + fileex.Trim '// new dirctry file
Dim oldpic As New FileInfo(DataSet11.Admin.Item(0).Pic.Trim) '// old pic thes is Problem Because oldpic.Path = newderfile.Path
'//Delete old Pic
If File.Exists(oldpic.FullName) = True Then
oldpic.Delete() ''//The process cannot access the file "C:\GymProg\Adminpic\1.gif" because it is being used by another process.
another Process like pictuerbox1.image path
End If
'//creat new Pic
FileCopy(fileinfo.Trim, newdrfile.Trim)
Ahmed El-Badry
|
|
|
|
|
If you create an image from a file, you need to call Dispose on that object in order to free the file.
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
pict.Image.Dispose()
pict.Image = Nothing
dos not worked
thnx to help
Ahmed El-Badry
|
|
|
|
|
Then you're holding a reference somewhere. Do it when you load the image, write a load routine which loads, copies in memory and disposes of the original
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
the code is worked
convert Pic file to stream and close it and PictureBox.Bitmap= file stream The closure of data processing for Path
Dim asa As New FileInfo("C:\GymProg\Adminpic\D.gif")
Dim Op As New FileStream(asa.FullName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, 500, True)
Dim MyImage As Bitmap
Pic.SizeMode = PictureBoxSizeMode.StretchImage
MyImage = New Bitmap(Op)
Pic.ClientSize = New Size(136, 112)
Pic.Image = CType(MyImage, Image)
Op.Close()
True or fales
thnx to help me
Ahmed El-Badry
|
|
|
|
|
Iam currently wirting a vb.net 2003 dll which links to a 3rd party com dll.
I have successfuly created a com class project and registerd the dll using regasm.
There is very little docs (not a surprize) and when calling the below function
ProcessXMLFile("C:\myxl.xml)
I get a bulid error saying "Reference to a non-shared member requires an object reference"
I have found lots of refrences to this error online, but none that help in this situation.
I relise the information is a little thin, not sure I have any more info but if you need more ask and I will try and provide.
Thanks in advance
|
|
|
|
|
Sounds to me like the ProcessXMLFile method is not static, and so requires an instance of an object to call it from. As you say, not much to go on, so I'm guessing'
The other thing is, your quotes are not closed, I asume that's just a typo in your post, not in your code.
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
Thanks,
I agree that that sounds like the problem from my research.
I have no clue how I would provide an instance of the oblect (I more use to borland c++ circa 1992)
I found the following in the docs regarding the method
HRESULT ProcessXMLFile ([in] BSTR filename,
[out, retval] BSTR * errors) ;
and
Method ProcessXMLFile This method is used to process an XML document stored on disc,
and uses the following parameters:
Parameter Description
BSTR filename File name and path of the XML document.
BSTR * errors Output error string.
Cheers
|
|
|
|
|
Once you import your COM library, are you creating an instance of the stub class it provides ? If not, you've not got a COM object to call methods on. What's your actual code look like, is it
MyCOMObjectInstance.ProcessXMLFile("whatever")
Or, was the line of code exactly as you posted it ?
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
Christian,
Thanks a lot for your help, the mud becomes ever clearer.
I was calling with as posted, I changed it as you suggested and it fires the method.
Of course I now get a new error, but hey no one said it would be easy.
Thanks again
Geoff
|
|
|
|
|
Hi all,
I am using Listview control in vb.net 2005, in that i am using a coloumn header in that. I wish to change the style(back color) of the coloumn header. I searched for it in the Properties, but i cant found it. Can any one suggest me how to change the Backcolor of the coloumn header.
It's little urgetn plz
Thankx in advance
Know is Drop, Unknown is Ocean
|
|
|
|
|
Hi,
I have created button controls dynamically and included contextmenu for that. When i right click on my dynamic control and choose the menu, How do I get that dynamic controls name?
Any luck.
Rams.
Be simple and Be sample.
|
|
|
|
|
hi, can any 1 suggest me the different kind of manipulations that can be done on an image in microsoft word using vb.net .I am working with VSTO 2005
sameer
|
|
|
|
|
I didn't think there were any.
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
I set out to write a Generic function that would find controls of a desired type and pass back an array of that type. For instance I could call the function and ask for all textbox's found on a form. However, I ran into a snag. I can test if a control is of Type T, but I have know way of converting that control to Type T. The following code shows the compromise I had to make due to this limitation.
'Returns a control array full of controls that match the desired type
Public Function ControlArray(Of T)(ByVal container As Control) As Control()
'Controls to pass back
Dim list As New List(Of Control)
For Each ctrl As Control In container.Controls
'If child control is of the desired type T then
'add to list
If ctrl.GetType Is GetType(T) Then list.Add(ctrl)
Next
'Return array
Return list.ToArray
End Function
Ideally this function would look something like the code below. The big difference is I want to return an array of type T. But how can I possibly convert a generic control to an unknown type?
Public Function ControlArray(Of T)(ByVal container As Control) As T()
'Controls to pass back
Dim list As New List(Of T)
For Each ctrl As Control In container.Controls
'If child control is of the desired type T then
'add to list
If ctrl.GetType Is GetType(T) Then
'The next statement won't compile and is the major problem I
'need to work around
list.Add(DirectCast(ctrl, T))
End If
Next
'Return array
Return list.ToArray
End Function
|
|
|
|
|
You need to constrain your generic statement. In C#, you'd do it like this
public List<T> ControArray<T>(Control container) where T : Control
Not sure of the VB syntax.
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
I tried converting the code with a converter I found online but the result didn't seem to be correct. However, I think I understand what you mean, but that's not the problem. Simply put I need to convert a control to it's real type. If I could figure that out I'd be all set. Any thoughts on that? At the moment I have figured out solution. I realized I can convert the control to an object and then add it to the list. As long as Option Strict isn't on this works just fine because it just uses implicit conversion. I'm okay with that for now but I'd still like to know if there is anyway to convert a generic control to it's actual type without knowing it's type a head of time. Here is the code I'm using right now, which is working just fine.
'Returns a control array full of controls that match the desired type
Shared Function ControlArray(Of T as control)(ByVal container As Control) As T()
'Controls to pass back
Dim list As New List(Of T)
For Each ctrl As Control In container.Controls
'If child control is of the desired type T then add to list
If ctrl.GetType Is GetType(T) Then list.Add(CType(ctrl, Object))
Next
'Return array
Return list.ToArray
End Function
-- modified at 20:53 Friday 26th January, 2007
Okay, I take it back what I said about the constraint not being a problem. Well, technically it wasn't a problem but now that I have added a constraint I am now able to add a control type to my list which is of T. Now I don't need to convert to an object first, however, an implicit conversion is still needed so Option Strict can't be turned on. Thanks for your help! It worked perfectly. If you have any ideas on making this option strict friendly please let me know.
|
|
|
|
|
Actually, the core problem is, you're iterating through a collection of controls, looking for objects that are of a more specific type. One solution that would work in C# is the 'as' keyword
foreach(Control ctrl in container.Controls)
{
T specific = ctrl as T;
if (specific != null)
{
list.Add(specific);
}
}
This code makes use of the 'as' keyword, which does a conversion, or returns null if one is not possible. This removes the need for a cast, and replaces the code you've got using GetType ( which is not BAD code, but this approach changes the code rather than adds to it ).
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
Thanks once again for your help. I converted your code and 'as' converted to CType(ctrl, T) which I am familiar with. However, it seems that unlike C# a failed conversion will generate an error. I could do something similiar to your code by using TryCast instead which does return nothing if it fails. I'm not exactly sure what the technical differences are between CType and TryCast (aside from no errors that is). I think I might have to look that up. Now that I have used a constraint, CType and TryCast/Directcast work. Before I used a constraint they would not compile. It seems the constraint was all I needed and allows me to convert a control type to T. Now that I don't need to rely on a implicit conversion Option Strict is happy
|
|
|
|
|
CType is not the same, nor is DirectCast. TryCast is the same as the 'as' keyword.
Sounds like you've got it working, anyhow
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|