To deal with this problem VB programmers uses function CopyMemory to copy memory like this: Dim a As Long Dim b() As Byte ReDim b(3) CopyMemory ByVal varptr(a), ByVal varptr(b), 4 Use the System.Runtime.InteropServices.Marshal.PtrToStructure method to copy the data from the heap memory that is pointed to by p_objTarget into the Target object. This happens regardless of whether you call the thing ByRef or ByVal I cannot see any (sensible) reason why this should be disasterous - it strikes me as eminently sensible to That power is found in three new tools: IntPtr, .NET's platform-dependent representation of a memory address; GCHandle, which helps you pin and retrieve the address of data in the managed memory
The following code should be typed into the code window of your form: Private Sub TestStringRet() Dim lngRet As Long Dim strDest As String lngRet = GetEnvironmentStrings strDest = String$(1000, " Strings Let us consider a VB 6 code to copy string.'Source string to copy from Dim Source as String ''Destination string to copy Dim Dest as String Source=”Adnan” 'Leave 5 spaces Remember to use [code] or [php] tags. Posting Guidelines Promoting, selling, recruiting, coursework and thesis posting is forbidden.Tek-Tips Posting Policies Jobs Jobs from Indeed What: Where: jobs by HomeForumsProgrammersLanguagesVisual Basic (Microsoft) Versions 5/6 Forum Strange CopyMemory Problem thread222-236226 http://www.developer.com/net/vb/article.php/10926_1537091_3/Visual-Basic-6-Win32-API-Tutorial.htm
CopyMemory problem 4. To use it, insert the following into a standard module in your project: Public Declare Function GetTickCount Lib "kernel32.dll" () As Long To access it, simply call it like you would p_objTarget = Marshal.AllocHGlobal(Marshal.SizeOf(Target)) ' To copy Target to the heap, use StructureToPtr ' as in the following line of code. Reason: Added [code] tags Reply With Quote June 19th, 2007,01:40 PM #2 WizBang View Profile View Forum Posts Visit Homepage Super Moderator Power Poster Join Date Dec 2001 Posts 6,332 Re:
This tutorial will show you how to use the corresponding managed classes in .NET framework to get the same result as unmanaged Windows API function CopyMemory (RtlMoveMemory) provides. Copymemory C# Unicode is a pain in the butt. Just keep going! http://www.vbforums.com/showthread.php?488750-CopyMemory-Problem-(Simple) Module1 is complete (for now): Imports System.Runtime.InteropServices Module Module1 Sub Main() '----------- ADD THIS CODE ----------- ' 60 char string for sample data Dim strSource As String = "10785236ABJohn F.
Text is available under the Creative Commons Attribution-ShareAlike License.; additional terms may apply. Vb6 Copymemory Byte Array CoughUpCookies(e) End Try ' Free resources assigned to our instance of the WINAPI class API = Nothing ' send the results back for printing Return Target End Function 'CopyStringToClass What the If you're not already familiar with forums, watch our Welcome Guide to get started. In others, it could be disasterous.
LMB Tue, 24 Aug 2004 08:16:49 GMT J Fren#12 / 15 CopyMemory problem Quote:>Hi Jerry -- >Using that technique causes undo overhead in many cases, and the potential of >corruption He said use Len not LenB, and you`ve just quoted him an > example of you using LenB!! > Hello? Attempted to read or write protected memory. I say that because what CopyMemory gets is a pointer to the >ANSIfied version of your string data. Copymemory Vb6
Furthermore, the declaration is made with the arguments As Any. answer found in another thread ... Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal pDst As IntPtr, _ ByVal pSrc As String, _ ByVal ByteLen As Long) End Class Add the CClassTest Class In the Solution Explorer, Reply With Quote Sep 15th, 2007,09:43 PM #5 r_rawr View Profile View Forum Posts Thread Starter New Member Join Date Aug 2006 Posts 9 Re: CopyMemory Problem (Simple) Because I want
Karl >-- >[Microsoft Basic: 1976-2001, RIP] Sun, 29 Aug 2004 17:48:31 GMT Karl E. Movememory Copying "abc" back from a pointer to a VB string will also only involve copying only three bytes, with VB then translating to Unicode to give the extra 3 bytes. Already a member?
Finishing Up: Now add the following code listed between the 'ADD THIS CODE' comments to Module1.
If Target Is Nothing Then Return Nothing ' get an instance of the WINAPI class that ' holds the API functions. Close Box Join Tek-Tips Today! Please help me on this issue, which is far too advanced for my somehow limited experience. Rtlmovememory Copyright Quinstreet Inc. 2002-2016 Visual Basic/Windows API From Wikibooks, open books for an open world < Visual BasicThis page may need to be reviewed for quality.
The documentation for this function is word for word as above and is only information. The same holds true in this case. Copymemory problems 6. Karl -- [Microsoft Basic: 1976-2001, RIP] Sun, 29 Aug 2004 04:10:49 GMT J Fren#14 / 15 CopyMemory problem I have just done a test with CVI and MKI from -32766
you may use strconv to convert string into byte array. it works when the structure is (unmanaged?)
Reply With Quote June 19th, 2007,03:13 PM #3 sbhan View Profile View Forum Posts Junior Member Join Date Jun 2007 Posts 3 Re: CopyMemory Problem Hi WizBang, thanks for the reply! Reply With Quote June 20th, 2007,09:37 PM #9 Thread1 View Profile View Forum Posts Elite Member Join Date Jan 2003 Location 7,107 Islands Posts 2,487 Re: CopyMemory Problem Bornish has a Karl -- [Microsoft Basic: 1976-2001, RIP] Quote: > Hello Guys! > Please help me on this issue, which is far too advanced for my somehow > limited experience. > I must to achieve the same effect.
However, by doing this, you've left yourself wide open to a lot of errors. Right. Declaration of such function contains extra keyword declare and lib, plus optionally can be defined an alias if the real name of function differs from name of dll function alias. Change the property values in this project according to the following table: Object Name Caption Form frmStringReturn Test API String Return Command Button cmdAPIGet Call API It's not a very complex