|
If you have access to Visual Studio 2005 you can do it in two steps. VS2005 has a converter from VB6 to VB2005, and 2010 has a converter from 2005.
Whilst that may be helpful if it is available to you as an option you still need to understand VB.NET as the converter will leave many things that have to be tweaked by hand.
|
|
|
|
|
What is the difference between using Sub_reports and grouping data in vb 2008?? Any links??
|
|
|
|
|
I'm trying to convert (from C++) a call to a DLL. I know that this requires a delegate etc but i am not getting very far as i believe i have a total misunderstanding of how delegates work with respect to pointers. The code i'm trying to convert is;
int __stdcall _RFID_Comms (char *sTx, char *sRx, WORD sRxSize, WORD timeout)
Parameters:
sTx - A pointer to a byte sized transmit buffer
sRx - A pointer to a byte sized receive buffer
sRxSize - Receive buffer size
timeout - The maximum length of time to wait in mS for incoming data.
I've converted this to;
Public Delegate Sub DelegateTagComms(ByVal sTx As IntPtr, ByVal sRx As IntPtr, ByVal sRxSize As UShort, ByVal timeout As UShort)
<DllImport("myCom.dll", CharSet:=CharSet.Unicode)> Public Function RFID_Comms(ByVal DTC As DelegateTagComms) As Integer
End Function
But i'm not sure how to use this conversion as many attempts cause a 'Fatal Exception'. As i'm working on a PDA program i cant get much from the error.
If someone can explian how delegates work with DLL calls it would be much apprieciated.
|
|
|
|
|
Why are you creating a delegate?
If the C++ code (I believe it is exported as C code, or else it will have a mangled name) is receiving the parameters like you are showing, then you should write the dll import of RFID_Comms receiving the parameters as you did to the delegate.
Ŧhat is, something like:
<DllImport("myCom.dll", CharSet:=CharSet.Unicode)> Public Function RFID_Comms(ByVal sTx As IntPtr, ByVal sRx As IntPtr, ByVal sRxSize As UShort, ByVal timeout As UShort) As Integer
In fact I am not pretty sure if VB.NET uses a different way of doing it, but in C# it will be pretty similar to this code that I just presented, but it will be declared as extern and static too.
|
|
|
|
|
Ok, that is what i had to start with;
<DllImport("myCom.dll", CharSet:=CharSet.Unicode)> Public Function RFID_Comms(ByVal sTx As IntPtr, ByVal sRx As IntPtr, ByVal sRxSize As UShort, ByVal timeout As UShort) As Integer
End Function
And the call....
sTx = Marshal.AllocHGlobal(100)
sRx = Marshal.AllocHGlobal(300)
sTx = StringToBSTR("RSD" & vbCr)
result = RFID_Comms(sTx, sRx, 3000, 1000)
lblOuput.Text = "Result: " & result
txtBxOutput.Text = PtrToStringUni(sRx)
AS i was getting a timeout error return code (result) i assumed i was going asbout it the wrong way.
Though i should have trusted myself as this code works (obtaining some version info from the DLL);
<DllImport("myCom.dll", CharSet:=CharSet.Unicode)> Function RFID_wGetVersion(ByVal s As IntPtr, ByVal size As UShort) As Integer
End Function
Dim memString As String
Dim addrPTr As IntPtr = Marshal.AllocHGlobal(40)
res = RFIDP1_wGetVersion(addrPTr, 40)
memString = PtrToStringUni(addrPTr)
lblOuput.Text = "Result: " & res
txtBxOutput.Text = memString
lblOuput.Refresh()
Marshal.FreeHGlobal(addrPTr)
You may have guessed but this prog reads an RFID tag. It is possible i'm missing another command (switch on and the like). I will persevere and recheck the other requisites for tag reading and post back. Thank you for confirming my initial thoughts and that I had got the function correct!
|
|
|
|
|
Delegate?? Calls to an external library do not require you to create a delegate.
Your declaration should look more like this:
Declare Function RFID_Comms Lib "myCom.dll" Alias "LibraryFunctionNameHere" (sTx As String, sRx As String, sRxSize As UShort, timeout As UShort)
It's very strange to see Short integers being used where they are. These may actually be Integers. If you're wrong, chances are good you'll get a message about unbalancing the stack.
|
|
|
|
|
Dave Kreskowiak wrote: It's very strange to see Short integers being used where they are.
In the 'screed' for the DLL and consequent C++ code it gave parameters as Char so i just decided to use UShort.
|
|
|
|
|
UShorts are not the same as chars!
|
|
|
|
|
Excuse my ignorance but what should i use?
|
|
|
|
|
|
Indeed - cant believe i missed that!
However, i am still no closer to solving my problem and have tried numerous variations of the function and parameters.
Will probably sleep on this and fresh start tomorrow!
|
|
|
|
|
Just in case someone comes across this post looking for answers themselves, i solved the main problem by actually turning the PCB board on with a software command
But to try and answer the pointers delegate question here are my thoughts; First of all it can be confusing when you first look at it - well for me at least. If you look at converting C++ to VB there is always talk about Delegates as VB doesn't really have pointers, ... or does it? I knew already (from previous project) that pointers work and i had used them and delegates and 'addressof method' and various other stuff to interact with hardware and a DLL, which at the time seemed complicated to me but it worked, so why should i worry. Also why should it be different this time? This is one reason i ruled out the passing of 'String' instead of 'IntPtr' in the Function. And as it turned out relying on the 'string' being a 'kind of pointer' was not the way to a solution. To be honest using VB to access hardware etc is not the norm i know, but i am VB orientated not C++
In the current project the hardware and DLL interact to respond to a command and send back info to an address in ASCII format. So in the end i just had to be simple;
Declare Function
Create send Pointer and allocate some memory
Convert Code to ASCII
Copy the ASCII command to the Pointer
Create receive pointer (sRx) and allocate some memory
Call Function
Finally Decode the returned ASCII, which requires copying the "unmanaged data" to "managed data" and then converting.
Public Declare Function RFIDP1_TagComms Lib "myCom.dll" Alias "RFIDP1_TagComms" (ByVal sTx As IntPtr, ByVal sRx As IntPtr, ByVal sRxSize As Integer, ByVal timeout As Integer) As Integer
tagRead = "SRD"
Dim code() As Byte = System.Text.Encoding.ASCII.GetBytes(tagRead)
Dim codeLen As Integer = code.Length
result = PwrCtrl(1, True)
Threading.Thread.Sleep(500)
txtBxOutput.Text = "Module On"
Dim pointer As IntPtr = Marshal.AllocHGlobal(codeLen)
Marshal.Copy(code, 0, pointer, codeLen)
Dim sRx As IntPtr = Marshal.AllocHGlobal(127)
result = RFIDP1_TagComms(pointer, sRx, 127, 500)
If result = 0 Then
lbltagResult.Text = "Tag Read"
Else
lbltagResult.Text = result
End If
deCode(sRx)
Public Sub deCode(ByVal addr As IntPtr)
Dim managedArray2(127) As Byte
Marshal.Copy(addr, managedArray2, 0, 127)
Dim enc As New System.Text.ASCIIEncoding()
txtBxTN.Text = enc.GetString(managedArray2, 0, 18)
End Sub
So overall 'easy when you know how'
|
|
|
|
|
Is there any way to pass the value to scheduled task(.vbs file scheduled by same script) from vb script ?
|
|
|
|
|
Pass WHAT value to WHAT task?? Are you asking how to pass a value to whatever the task executes?
|
|
|
|
|
|
I have try to make exe file with vb 2010 and MS Access as database the result is not properly working and i get some error as follow:
System.Data.OleDb.OleDbException (0x80004005): Could not find file 'C:\Users\Ardana\AppData\Local\Apps\2.0\Data\C24JK049.G57\17RJNZZ5.CNB\kamu..tion_12200d4ff2448982_0001.0000_c7b275035b9dba0b\Data\dbfoto.accdb'.
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at kamus_tanaman_new2.dbfotoDataSet2TableAdapters.tbfotokuTableAdapter.Fill(tbfotokuDataTable dataTable)
at kamus_tanaman_new2.tampil.tampil_Load(Object sender, EventArgs e)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.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.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
kamus tanaman new2
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Ardana/AppData/Local/Apps/2.0/ROQA591L.4ER/NHQGYEOJ.BHY/kamu..tion_12200d4ff2448982_0001.0000_c7b275035b9dba0b/kamus%20tanaman%20new2.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 10.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data.DataSetExtensions
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Transactions
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitdebugging="true">
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
I just a new be can any ones tell me how the step by step doing this, thanks
Ardana
ardanam@gmail.com
|
|
|
|
|
Two reasons.
0) There's no database file(dbfoto.accdb) in that path
1) Or you're referring the wrong path.
thatrajaCode converters | Education Needed
No thanks, I am all stocked up. - Luc Pattyn
When you're wrestling a gorilla, you don't stop when you're tired, you stop when the gorilla is - Henry Minute
|
|
|
|
|
send me link student birthday reminder
|
|
|
|
|
No, we're not doing your homework for you, and neither is anyone else.
If you've got a specific question about where you're stuck writing this code, that's where we'll help.
Besides, VB6 is long since dead.
|
|
|
|
|
I'm in a Visual Basic 2010 class. We have a homework assignment and I was hoping I could get some help. down is the homework
the file Words.txt contains a list of word S. Write a program that displays the words in a list box sorted by the number of different vowels(A.E.I) in the word. When two words have the same number of different vowels,they should be ordered first by their length(descending) and then alphabetically. the display should show both the word and the number of different vowels in the word.
here is the file's contents.
visual
two
tsk
sub
special
shh
sequoia
pulverize
psst
organized
open
next
important
for
facetious
equal
educate
discourage
dialogue
courage
close
cauliflower
brrr
break
basic
|
|
|
|
|
Ok, what do you need help with? We will not do your homework for you, you need to show some effort. We can help with specific pieces, but we aren't going to do the whole thing.
|
|
|
|
|
its work i already.
click here to see the result[^]
Public Class FrmDisplay
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub FrmDisplay_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
End Sub
Private Sub BtnDisplayWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDisplayWord.Click
Dim words() As String = IO.File.ReadAllLines("words.txt")
Dim query = From word In words
Order By VowelCount(word) Descending, word.Length Descending, word Ascending
Select VowelCount(word) & " " & word
For Each word In Words
ListResults.DataSource = query.ToList
Next
End Sub
Private Sub BtnRetour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRetour.Click
Me.Hide()
frmMain.Show()
End Sub
End Class
|
|
|
|
|
And? You stated the homework assignment, something you are expected to do.
You then posted your code.
So.... is there a question here? Or are you simply asking people to review/comment on what you've done?
|
|
|
|
|
I am simply asking people to review my code
|
|
|
|
|
Your VowelCount method isn't present in that class. We can't comment on it if we can't see it.
|
|
|
|
|