ÔÚVB6ÖÐÓÃCopyMemory¿½±´×Ö·û´®µÄÖÖÖÖèÄ壨һ£©
±¾ÎÄÀ´×Ô´ËÌûµÄÈß³¤ÌÖÂÛ£¬¸ÐлTiger_ZhaoµÄÈ«³ÌÖ¸µãºÍ³Â»Ô¡¢°¢Ó¡¢ÂíÔÆ½£µÈºÜ¶àÅóÓѵÄÈÈÐIJÎÓë¡£±¾ÎÄÆäËû²¿·ÖÔÚ£º£¨¶þ£©¡¢£¨Èý£©¡¢£¨ËÄ£©¡£
»°ËµVB6ÊǸöºÜÈÏÕæÏ¸ÖµÄÂèÂ裬Ëü»áÇÄûÉùµØ°ïÄã×öºÜ¶àÊ¡£½ñÌìÎÒÃÇÀ´ËµµÄÊÇVB6ÔÚAPIµ÷ÓÃʱ×Ô¶¯¶Ô×Ö·û´®²ÎÊý½øÐÐת»»µÄ“ºÃÈ˺ÃÊ”¡£
µÚÒ»½Ú ÌåÌùµÄVBÂèÂè
ÎÒÃÇÖªµÀ£¬ÔÚVB6ÖÐ×Ö·û´®¶¼ÊÇÒÔUnicode±àÂë´æÔڵ쬶øWindows APIº¯ÊýÖкܶàʱºòÓõÄÊÇANSI×Ö·û´®¡£VBÂèÂ躦ųÌÐòÔ±ÃÇÀÛ×Å£¬ËùÒÔÔÚVB³ÌÐòÔ±µ÷ÓÃAPIʱ£¬»á×Ô¶¯µÄ¶ÔÆäÖеÄ×Ö·û´®²ÎÊý×öUnicodeµ½ANSIµÄת»»£¨ÒÔϼò³ÆUAת»»£©£¬ÔÚAPIµ÷ÓýáÊøºó»áÔÙ°Ñ×Ö·û´®²ÎÊý×öANSIµ½UnicodeµÄת»»£¨ÒÔϼò³ÆAUת»»£©¡£ÕâÑù˵¿ÉÄÜÓеã³éÏó£¬ÎÒÃÇÀ´¿´ÏÂÃæµÄÀý×Ó¡£'ÕýÈ·µÄByVal StringµÄÓ÷¨
Option Explicit
Const STR_E = "PowerVB"
Private String1 As String
Private String2 As String
Private pString1 As Long
Sub test7()
Dim String1 As String
Dim String2 As String
' Dim _tmp1 As String, _tmp2 As String
String1 = "PowerVB" '14 bytes
String2 = String$(7, 0) '14 bytes
CopyMemory ByVal String2, ByVal String1, 7
' _tmp1 = StrConv(String1, vbfromUnicode) '7 bytes
' _tmp2 = StrConv(String2, vbfromUnicode) '7 bytes
' CopyMemory ByVal _tmp2, ByVal _tmp1, 7
Debug.Print String2
End Sub
ÈçÉÏͼËùʾ£¬µ±ÎÒÃÇÔÚVBÖе÷ÓÃCopyMemory ByVal String2, ByVal String1, 7µÄʱºò·¢ÉúÁËÈçÏÂÊÂÇ飺
¢ÙÊ×ÏÈVBÂèÂè°ïÎÒÃǶÔString1ºÍString2×Ô¶¯×öÁËUAת»»£¬Ò²¾ÍÊÇÏ൱ÓÚ×öÁËÈçÏÂÊÂÇ飺Dim _tmp1 As String, _tmp2 As String
_tmp1 = StrConv(String1, vbfromUnicode) '7 bytes
_tmp2 = StrConv(String2, vbfromUnicode) '7 bytesÒ²¾ÍÊÇ˵£¬Á½¸ö14×Ö½ÚµÄUnicode×Ö·û´®ÏÖÔÚ±»´æÔÚÁ½¸ö7×Ö½ÚµÄANSI×Ö·û´®ÀïÁË¡£
¢ÚÈ»ºóCopyMemoryº¯Êý¾Í×öʵ¼ÊµÄ¿½±´¶¯×÷¡£×¢Ò⣬ÕâʱCopyMemoryµÃµ½µÄ²ÎÊý²»ÊÇString1, String2ÁË£¬¶øÊÇVBÂèÂè´«¸øËüµÄ_tmp1, _tmp2ÁË¡£ËùÒÔ£¬Êµ¼ÊÉÏ£¬CopyMemoryͬѧÊÇÔÚÕâô¸É»î£ºCopyMemory ByVal _tmp2, ByVal _tmp1, 7¡£Ò²¾ÍÊÇ£¬´Ó_tmp1µÄ»º³åÇø¿½±´7¸ö×Ö½Úµ½_tmp2µÄ»º³åÇø¡£
¢ÛCopyMemoryͬѧ¸ÉÍê»î£¬VBÂèÂèÓÖϸÐĵØ×öÉÆºó¹¤×÷¡£Ëü°Ñ_tmp2µÄÄÚÈÝÔÙת³É14×Ö½ÚµÄUnicode×Ö·û´®£¬²¢°ÑËü¸øString2¡£
PS£º
£¨1£© ÎÄ×ÖÖдøÈ
Ïà¹ØÎĵµ£º
Óо²Ì¬ºÍ¶¯Ì¬Á½ÖÖ£¬¾²Ì¬µÄÐèÒªlib¶ø¶¯Ì¬µÄÖ»ÐèÒªÒ»¸ödll¾Í¿ÉÒÔÁË£¨µ«ÊÇÒªÖªµÀº¯ÊýµÄ¶¨ÒåÒ»°ãÊÇÍ·ÎÄ
¼þ£©¶¯Ì¬Ïà¶Ô¸´ÔÓÒ»µã£¡µ«ÊÇÕÆÎÕÁËÒ²²»ÊǺÜÄÑ
//µÚÒ»²½ ¶¨Ò庯ÊýÖ¸Õë¾ÍÊÇÄãÒªµ÷Óõĺ¯Êý£¬²ÎÊý±ØÐëÒ»Ö£¬²»È»¾ÍÄÚ´æÐ¹Â¶
typedef HANDLE ......
ºÜ¶àʱºò,ÎÒÃDz»ÏëÒ»¿ªÊ¼¾ÍÏÔʾ¹ö¶¯Ìõ,µ±Îı¾µ½´ïÖ¸¶¨ÐÐÊýÎı¾¿òÎÞ·¨ÍêÈ«ÏÔʾµÄʱºòÔÙÏÔʾËü,ÓÉÓÚScrollbarÊôÐÔÊÇÖ»¶ÁµÄ,ÎÞ·¨ÔÚÔËÐÐʱµÄ´úÂëÖиıäÕâ¸öÊôÐÔ,Ö»ÄÜʹÓÃÏÂÃæµÄAPIʵÏÖÕâ¸ö¹¦ÄÜ:
Public Declare Function ShowScrollBar Lib "user32" (ByVal hwnd As Long, ByVal wBar As Long, ByVal bShow As Long) As Long
......
ËÄܰïÎÒ°ÑÕâ¶Î´úÂëת³ÉVbµÄ´úÂ룬²»Ê¤¸Ð¼¤£¬Ð»Ð»£¡
void CTempDlg::OnOK()
{
UpdateData(1);
int nlen=m_edit1.GetLength();
char *username=m_edit1.GetBuffer(nlen);//¶¨ÒåÒ»¸öÐÂ×Ö·û´®username,³¤¶ÈΪnlen£¬²¢½«m_edit1ÖеÄ×Ö·û´®Ò»¸ö¸ö·ÅÈëµ½usernameÊý×éÖÐ
char strA[]="90123456 ......
ÉùÃ÷¹Ì¶¨´óСµÄÊý×é
ÓÐÈýÖÖ·½·¨ÉùÃ÷¹Ì¶¨´óСµÄÊý×飬ÓÃÄÄÒ»ÖÖ·½·¨È¡¾öÓÚÊý×éÓ¦ÓеÄÓÐЧ·¶Î§£º
½¨Á¢¹«ÓÃÊý×飬ÔÚÄ£¿éµÄÉùÃ÷¶ÎÓà Public Óï¾äÉùÃ÷Êý×é¡£
½¨Á¢Ä£¿é¼¶Êý×飬ÔÚÄ£¿éµÄÉùÃ÷¶ÎÓà Private Óï¾äÉùÃ÷Êý×é¡£
½¨ ......
VBÖеÄUnicode ºÍ Ansi ¸ñʽ
Visual Basic 32-bit °æ±¾µÄ×Ö´®´¦Àí²ÉÓà Unicode£¬Ò²¾ÍÊÇ˵×Ö´®ÔÚ VB ÄÚ²¿ÊÇÒÔUnicode µÄ¸ñʽÀ´´æ·Å¡£ºÎν Unicode£¿¼òµ¥µÄ˵£¬¾ÍÊÇÿһ¸ö×Ö·û¶¼ÊÇÒÔ 2-byte µÄÐÎʽ±íʾ£¬¶øÃ¿¸ö¡¸ÊµÌå×Ö·û¡¹¾ÍÊÇÒ»¸ö¡¸×Ö·û¡¹¡£Òò´Ë£¬
Len("´ó¼ÒºÃ")
Len("abc")
& ......