delphiÖÐCreateMutex£¬OpenMutexʹÓÃÒ»Àý
VCÉùÃ÷
HANDLE CreateMutex(
¡¡¡¡LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD
¡¡¡¡BOOL bInitialOwner, // initial owner
¡¡¡¡LPCTSTR lpName // object name
¡¡¡¡);
delphiÉùÃ÷£º
function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; stdcall;
´´½¨Ò»¸ö»¥³âÌ壨MUTEX£©
¡¡¡¡·µ»ØÖµ
¡¡¡¡Long£¬ÈçÖ´Ðгɹ¦£¬¾Í·µ»Ø»¥³âÌå¶ÔÏóµÄ¾ä±ú£»Áã±íʾ³ö´í¡£»áÉèÖÃGetLastError¡£¼´Ê¹·µ»ØµÄÊÇÒ»¸öÓÐЧ¾ä±ú£¬µ«ÌÈÈôÖ¸¶¨µÄÃû×ÖÒѾ´æÔÚ£¬GetLastErrorÒ²»áÉèΪERROR_ALREADY_EXISTS
¡¡¡¡²ÎÊý±í ²ÎÊý ÀàÐͼ°ËµÃ÷
¡¡¡¡lpMutexAttributes SECURITY_ATTRIBUTES£¬Ö¸¶¨Ò»¸öSECURITY_ATTRIBUTES½á¹¹£¬»ò´«µÝÁãÖµ£¨½«²ÎÊýÉùÃ÷ΪByVal As Long£¬²¢´«µÝÁãÖµ£©£¬±íʾʹÓò»ÔÊÐí¼Ì³ÐµÄĬÈÏÃèÊö·û
¡¡¡¡bInitialOwner Long£¬Èç´´½¨½ø³ÌÏ£ÍûÁ¢¼´ÓµÓл¥³âÌ壬ÔòÉèΪTRUE¡£Ò»¸ö»¥³âÌåͬʱֻÄÜÓÉÒ»¸öÏß³ÌÓµÓÐ
¡¡¡¡lpName String£¬Ö¸¶¨»¥³âÌå¶ÔÏóµÄÃû×Ö¡£ÓÃvbNullString´´½¨Ò»¸öδÃüÃûµÄ»¥³âÌå¶ÔÏó¡£ÈçÒѾ´æÔÚÓµÓÐÕâ¸öÃû×ÖµÄÒ»¸öʼþ£¬Ôò´ò¿ªÏÖÓеÄÒÑÃüÃû»¥³âÌå¡£Õâ¸öÃû×Ö¿ÉÄܲ»ÓëÏÖÓеÄʼþ¡¢ÐźŻú¡¢¿ÉµÈ´ý¼ÆÊ±Æ÷»òÎļþÓ³ÉäÏà·û
¡¡¡¡×¢½â
¡¡¡¡Ò»µ©²»ÔÙÐèÒª£¬×¢Òâ±ØÐëÓÃCloseHandleº¯Êý½«»¥³âÌå¾ä±ú¹Ø±Õ¡£´ÓÊôÓÚËüµÄËùÓоä±ú¶¼±»¹Ø±Õºó£¬¾Í»áɾ³ý¶ÔÏó
¡¡¡¡½ø³ÌÖÐֹǰ£¬Ò»¶¨ÒªÊÍ·Å»¥³âÌ壬Èç²»É÷δ²ÉÈ¡Õâ¸ö´ëÊ©£¬¾Í»á½«Õâ¸ö»¥³âÌå±ê¼ÇΪ·ÏÆú£¬²¢×Ô¶¯ÊÍ·ÅËùÓÐȨ¡£¹²ÏíÕâ¸ö»¥³âÌåµÄÆäËûÓ¦ÓóÌÐòÒ²ÐíÈÔÈ»Äܹ»ÓÃËü£¬µ«»á½ÓÊÕµ½Ò»¸ö·ÏÆú״̬ÐÅÏ¢£¬Ö¸³öÉÏÒ»¸öËùÓнø³ÌδÄÜÕý³£¹Ø±Õ¡£ÕâÖÖ×´¿öÊÇ·ñ»áÔì³ÉÓ°ÏìÈ¡¾öÓÚÉæ¼°µ½µÄ¾ßÌåÓ¦ÓóÌÐò
º¯Êý¹¦ÄÜ£ºÎªÏÖÓеÄÒ»¸öÒÑÃüÃû»¥³âÌå¶ÔÏó´´½¨Ò»¸öоä±ú
¡¡¡¡º¯ÊýÔÐÍ£º HANDLE OpenMutex(
dwDesiredAccess, // access
¡¡¡¡DWORD
¡¡¡¡ BOOL bInheritHandle, // inheritance option
¡¡¡¡ LPCTSTR lpName // object name
¡¡¡¡ );
delphiÉùÃ÷£º
function OpenMutex(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: PChar): THandle; stdcall;
¡¡¡¡²ÎÊý£º
¡¡¡¡dwDesiredAccess£º
¡¡¡¡MUTEX_ALL_ACCESS ÇëÇó¶Ô»¥³âÌåµÄÍêÈ«·ÃÎÊ
¡¡¡¡MUTEX_MODIFY_STATE ÔÊÐíʹÓà ReleaseMutex º¯Êý
¡¡¡¡SYNCHRONIZE ÔÊÐí»¥³âÌå¶ÔÏóͬ²½Ê¹ÓÃ
¡¡¡¡bInheritHandle : ÈçÏ£Íû×Ó½ø³ÌÄܹ»¼Ì³Ð¾ä±ú£¬ÔòΪTRUE
¡¡¡¡lpName £ºÒª´ò¿ª¶ÔÏóµÄÃû×Ö
¡¡¡¡·µ»ØÖµ£ºÈçÖ´Ðгɹ¦£
Ïà¹ØÎĵµ£º
procedure mc_SplitStr(sourStr:String;splitChar:String;desLst:TStringList);
var
tmpStr:String;
sValue:String;
iStart,iPos:Integer;
begin
try
desLst.Clear; //ºÜÖØÒª£¬·ñÔò£¬»áÒ» ......
TreeViewÓɽڵ㹹³É£¬½¨Ê÷ͨ¹ý¶ÔTreeView.itemsÊôÐÔ½øÐвÙ×÷¡£ItemsÊÇÒ»¸öTTreeNodes¶ÔÏó£¬ÕâÊÇÒ»¸öTTreeNode¼¯¡£
Ò»¡¢Õë¶ÔTTreeNodes,Ò²¾ÍÊÇ TreeView.Items,ÓÐÕâЩÊôÐÔ£º
1¡¢count£¬½Úµã¸öÊý¡£
2¡¢item[index] ,ͨ¹ýindexµÃµ½½Úµã¡£
¶þ¡¢Õë¶ÔTTreeNodes,Ò²¾ÍÊÇ TreeView.Items,³£ÓõÄÌí¼Ó½ÚµãµÄ²Ù×÷ÓУº
Add ......
ÕâÊÇÒ»¸öʵÀý£º
procedure TMainForm.Button1Click(Sender: TObject);
var
arr:array of array of string;
begin
setlength(arr,2,3);
arr[1,2]:='this is a test';
setlength(arr,0,0);
setlength(arr,4,5);
showmessage(arr[1,2]);
end;
ÉùÃ÷Ò»¸ö¶þάÊý×éµÄ·½·¨ÊÇÓ ......
(Ò») ʹÓö¯Ì¬´´½¨µÄ·½·¨
Ê×ÏÈ´´½¨ Excel ¶ÔÏó£¬Ê¹ÓÃComObj:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( 'Excel.Application' );
1) ......
¿ª·¢Õß¶¼Ï£Íû×Ô¼ºµÄ³ÌÐòÓÐÒ»¸öÓѺõĽçÃæ£¬´Ëʱ£¬Ò»¸öÉú¶¯»îÆÃ¡¢ÓбíÏÖÁ¦µÄ¹â±ê¾Í±Ø²»¿ÉÉÙÁË¡£Windows ȱʡÌṩ22ÖÖ±ê×¼¹â±ê¹©ÔÚ³ÌÐòÖе÷Ó㬵«¶ÔÒ»¸öÇóÐÂÇó±äµÄ³ÌÐòÔ±À´Ëµ£¬±ê×¼¹â±ê¾Í²»ÄÜÂú×ãÒªÇóÁË£¬ÐèҪʹÓÃ×Ô¼ºµÄ¹â±ê£¬ÄÇô£¬ÔÚ³ÌÐòÖÐÔõÑùʹÓÃ×Ô¼ºµÄ¹â±êÄØ£¿ ¡¡¡¡¡ñ¹â±ê×ÊÔ´µÄ»ñµÃ ¡¡¡¡ÒªÊ¹ÓÃ×Ô¶¨Òå¹â±ê£¬±ØÐëÏȵõ½Õâ ......