I've got some functions I need to call that are in some DLL files that have been written in Delphi 5 in a VB.NET 2005 application. I'm able to use the DllImport function to access the functions just fine; however, I'm having an issue with the Delphi string data type and passing it to and from the .NET application.
[Code]...
It takes two string parameters and one double. I can call this function from VB.NET just fine, but it will error as soon as it tries to use one of the string variables (so in this case, when it passes them to another function) and I've found that the string values in Delphi are junk when they've been passed to .NET. I'm guessing that the string objects behave and/or are encoded differently between .NET & Delphi 5, and that I have to apply some sort of Marshaling to the function parameters in .NET, but I've tried all of the different types of marshaling and nothing has worked. Unfortunately, I haven't been able to find anything about this issue on the internet.
Does anyone know how I can call this Delphi function from .NET and have it pass the string values in a manner so that they won't be corrupted when stored in Delphi?
I need to send a short string, (less than 30 bytes, but sent every second), from one VB application, to a Delphi application.. is this possible, using CopyDataStruct, WM_COPYDATA and SendMessage functions in Windows?
I have a C++ dll that contains a callback. The callback has one parameter that is passed in and one parameter that is passed out. The parameter that is passed from C++ is a variant. So, we are going from a variant in C++ to an object in VB.NET. The function works. However, It seems that there is a memory leak on the VB.Net side. This must be a Marshaling issue. I have tried to use the MarshalAs Functions, but to no avail.
VB.NET Declare Function EnableWriteNotification Lib
I'm having trouble using a COM based DLL in that one of the parameters is of type VARIANT.
The C++ definition of the structure is as follows:
typedef struct CSimData { DWORD dwSigId;
[Code].....
From debugging i've been able to determine that the COM server is getting no value in vValue. Is there some sort of Marshaling that needs to be done to be able to set that VARIANT up on my side so that it can use it?
I have a VB6 program which calls a COM method, passing 2 arrays as parameters and expecting 2 arrays to be populated in response.The code is this, where ItemIDs and ItemClientHandles are the input array parameters and MyItemServerHandles and Errors are populated by the COM object.
Dim ItemIDs(2) As String Dim ItemClientHandles(2) As Long Dim Errors() As Long ' Array for returned Item related errors Dim MyItemServerHandles() As Long ' Server Handles for Items
I am trying to get some data from a C Dll via a structure and I am getting incorrect values back. I tried a couple of examples I found but they do not work. Since I do not know the proper way. I do not know how to fix it. Can anyone give me any advice, hints, redirection or any assistance what-so-ever. I've been struggling with this for weeks.
I have to create an array of structure type in VB.net. but I am getting error while marshaling this error. I have to pass this array of structure type in to Dll function. Code: Structure declaration: <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _ Public Structure dx_entry <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=10)> _ Public dx As String [Code] .....
I am getting the following error: An unhandled exception of type 'System.ArgumentException' occurred in Audit_Demo_2307.exe Additional information: Type dx_entry[] can not be marshaled as an unmanaged structure; no meaningful size or offset can be computed.
I am using Delphi 7 to try to use a .DLL created by VB.net. When I run TDUMP.EXE on the .DLL, it reports no exported data available. The VB.Net .DLL uses "RaiseEvent" to return data.[code]
.NET converter (either C# or VB.NET)? I've inherited a bunch of Delphi code, never seen Pascal before and rather than learn it, I'd rather just try to use an automated converter, if available, and clean up the code after that. Can't seem to find this kind of tool anyway I search
I've designed a Windows Service in Visual Basic 2005 that needs to call some functions from a DLL written in Delphi 5. If I try to add this DLL as a reference, I get this error:
"A reference to 'C:ProjectsServiceProMDPUpdateServiceMessageStubApplicationSPHost.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component."
I assume that it is just not possible to add this DLL as a reference to my VB2005 project, since the DLL was written in an old version of Delphi, correct? This isn't a big deal, as I can just use the DllImport function from System.Runtime.InteropServices, but if it is possible, adding it as a reference would be preferred.
My other question is, how would you be able to call a function from the DLL using DllImport, if the function you are trying to call takes a Delphi record data type as a parameter (if this is possible)? If possible, would I need to pass each field in the record separately or would I be able to define a structure in my VB app that mirrors the record definition in the Delphi DLL and pass that? Or, would it be best if I just created another function in the Delphi DLL that took various string/integer/boolean/etc. parameters that I could call from VB that would then call the original function in Delphi? I tried searching the internet for this specific question, but I couldn't find anything that looked useful.
I've gotten a DLL from a supplier. Most functions I can call just fine, but some crash (System.ExecutionEngineException, doesn't even do with a try-catch...). The thing is that the ones that work are called with simply types, and the ones that crash have a type/class/structure in it.The documentation states how to call with "Visual Basic" without stating version. Here's how it looks..[code]I did figure out to use "Integer" in stead of "Long" and the strings needed some work but are fine now.Now... The "Type" doesn't exist in VB.NET so what should I do. Tried a class but that didn't work.I can call the DLL with "bad" data and get a good reply, eg "this and that is wrong with the input", but when I set that straight it crashes. I suspect that it's when it starts to write in the memory allocated by me and that does not match what the DLL expect.
BTW when I look at the class I made, I can see that - at least VS - lists the members in an alfabetical order. Is that how it's arranged in memory and could that be the problem if the order is different from the one expected by the DLL. I would epect that the total size was the same irrespective of order, so the problem would arise when I try to read the data and I would get junk.
I get to convert a Delphi application to VB.Net.My last project i had to convert a Java app to VB.Net.Anyway I have most of the application converted however there are a few items that i have been unable to find the .Net equivalent. Most are from the Delphi. Sysutils class.
Dim ThisModule As IntPtr Dim Proc As Process() = Process.GetProcessesByName("Sol") For i = 0 To Proc(0).Modules.Count - 1
[code]....
I have made this code, and works perfectly, but now... i want to make it in Delphi, the problem is... i have not the enough knowledge for make it, and... in google, i haven't found the information i need.
I have a Delphi written DLL that exposes some interfaces to a vb.net application. The interfaces inherit from IUnknown (but this could be changed if required), simplified example:
Now I want to transfer a collection of IWindow to vb.net, and in the vb.net application I want to be able to loop through it with a for in loop.
I read that it's possible using IEnumerable/IEnumerator but I don't quite understand how to implement them. Are there any good tutorials about this, specifically showing the declarations on both side? Example code would be great.
Please note that I prefer not create a com dll that should be registered and imported. Currently I export a function that enabled me to obtain an interface.
I have a Delphi program that communicates with a vb.net dll that I created. The vb.net dll communicates with a Fluke scope meter via an RS232 connection. I have created a program that communicates correctly via RS232, giving me the anticipated value. Though, when I package this up as a dll and access the dll from my Delphi program I always receive a value of "1", rather than the value I was expecting (most cases a value in and around 240).I know that my delphi program is definitely communicating correctly with the dll and that my dll is definitely communicating with the scope meter
Here is my vb.net code: Public Interface IFlukeComm Function GetReading(ByVal Command As String, ByVal PortNum As Integer) As String
I have an old program from 2002, which was coded in Delphi 7. Now i would like to rewrite the whole program, and expand in Visual Basic. how to convert my old code to VB2010? The code is very simple. I fill a database with Comboboxes and TextBoxes .Text. [Code]
In Delphi when we needed to allow the system to finish painting an object or something like that we could add a processmessages that would then let the system finish what it was doing before going on with the code.This was always handy when we wanted to show a message like "Please wait"before the start of a lengthy process.So then. What is the equivalent way of doing this in VB.
I have generated a component in Delphi 2007 Code Gear and I need to migrate it to .NET to be used by VB.NET platform.I generated an ActiveX dll but I have been told that only the declaration of the class is visible in .NET.Actually the component I have generated is inherited by another component of which I have only the .dcu files. My new component is exactly similar as the parent one except from that I have overridden the constructor create.I wonder why the .NET, although it accepted the component, it did not provide the inherited properties, methods etc.
I am working on Some USB reader device..i got only delphi 7.0 example code...i can able to understand some code remaining cant so below is that code.
function ReadCard(fUSB:Byte;Buffer:PChar):Integer; stdcall; external 'proRFL.DLL'; function GetDLLVersion(sDllVer:PChar):Integer; stdcall; external 'proRFL.DLL';
I've been given this simple VB application and library which I'm told can open a door/turnstyle attached to the printer port at 0x378 base address.'Inp and Out declarations for port I/O using inpout32.dll.
Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" _ (ByVal PortAddress As Integer) _ As Integer
[code]....
how to declare the library functions and what to declare the variables as (&H378 is obviously not an integer)
I want the Function to accept List(Of String), Array & String and similarly return List(Of String), Array & String respectively. The Function simply adds a string (month) to the input collection. I just want to use it for string, array and list with needing to think of conversions.