---
Delphi in a Unicode World Part I: What is Unicode, Why do you need
it, and How do you work with it in Delphi?
By: Nick
Hodges
ÔÎÄÁ´½Ó£ºhttp://dn.codegear.com/article/38437
Abstract: This article discusses Unicode, how Delphi developers
can benefit from using Unicode, and how Unicode will be implemented in Delphi
2009.
//
Introduction
The Internet has broken down geographical barriers that enable world-wide
software distribution. As a result, applications can no longer live in a purely
ANSI-based environment. The world has embraced Unicode as the standard means of
transferring text and data. Since it provides support for virtually any writing
system in the world, Unicode text is now the norm throughout the global
technological ecosystem.
What is Unicode?
Unicode is a character
encoding scheme that allows virtually all alphabets to be encoded into a single
character set. Unicode allows com ......
Delphi in a Unicode World Part II: New RTL Features and
Classes to Support Unicode
By: Nick
Hodges
ÔÎÄÁ´½Ó:http://dn.codegear.com/article/38498
Abstract: This article will cover the new features of the Tiburon
Runtime Library that will help handle Unicode strings.
//
Introduction
In Part I, we saw how
Unicode support is a huge benefit for Delphi developers by enabling
communication with all characters set in the Unicode universe. We saw the basics
of the UnicodeString type and how it will be used in Delphi
In Part II, we¡¯ll look at some of the new features of the Delphi Runtime
Library that support Unicode and general string handling.
TCharacter Class
The Tiburon RTL includes a new class called TCharacter, which is found in the Character unit. It is a sealed class
that consists entirely of static class functions. Developers should not create
instances of TCharacter, but
rather merely call its st ......
´ËÎÄÊǸù¾Ý°éË®ÀÏ´óµÄʵÀý×öµÄСÐ޸ģ¡
ÒÔÏÂÊǸöÈ˼û½â£¬ÈçÓдíÎóÇëÖ¸Õý:)
ÒªÏë¿ç½ø³Ì·ÃÎÊDBGRID£¬Ã²ËÆÖ»ÄÜÓÃHOOK£¬Ð´Ò»¸öDLLÏë°ì·¨×¢È뵽Ŀ±ê½ø³Ì¡£×¢Èë³É¹¦ºó£¬Ê¹DLLÓëÄ¿±ê½ø³ÌÔÚͬһ½ø³Ì¿Õ¼äÖÐ(ÆäÄÚÓÐһЩϸ½ÚÎÊÌ⣬Çë²Î¼û´úÂë)£¬Õâʱ¿ÉÒÔ·ÃÎÊÄ¿±ê½ø³ÌµÄVCL×é¼þ¡£²¢°ÑVCL×é¼þµÄÊý¾Ýͨ¹ý½ø³ÌͨÐŵķ½Ê½·¢¸øSniffer½ø³Ì¡£
ÈçºÎ½øÐÐ×¢È룿
¿ÉÒÔ°²×°Ò»¸öWH_CALLWNDPROC¹³×Ó£¬ÕâÑùµ±ÓÐÏûÏ¢ÔÚ´°¿Úº¯ÊýÖÐʱ£¬ÏµÍ³¾Í»á×°ÔØHOOK£¬¼´Ö´ÐÐDLL²¿·Ö¡£
ÈçºÎ·¢ÏûÏ¢£¿
¿ÉÒÔÔÚDLLÖÐÉèÖÃÒ»¸ö×Ô¶¨ÒåÏûÏ¢£¬ÔÚ°²×°Íê¹³×Ӻ󣬷¢ËÍÒ»¸ö×Ô¶¨ÒåÏûÏ¢ÖÁÄ¿±ê½ø³ÌµÄ´°¿Úº¯Êý¡£
ÒÔÏÂʵÀý¿É¶Á³öÁíÒ»½ø³ÌµÄEDIT¡¢LABEL¡¢DBGRIDµÈ¿Ø¼þµÄÖµ¡£
ÈçºÎÁ˽âÕâ¸öÔÀí£¬¿ç½ø³Ì¶ÁÈ¡StringGridµÈ¿Ø¼þÒ²²¢·ÇÄÑÊ£¡
//DLLµ¥Ôª1
(*//
±êÌ⣺´°ÌåÐá̽Æ÷
×÷ÕߣºÍõ¼¯ðÀ(Zswang)
²©¿Í£ºhttp://blog.csdn.net/zswang
ÈÕÆÚ£º2009Äê3ÔÂ14ÈÕ
.//*)
unit Sniffer;
interface
uses Windows,DBGrids,DB;
function ExeSniffer( // Ö´ÐÐÐá̽
AHandle: THandle; // ´°Ìå¾ä±ú
AParam: Integer // ¸½¼Ó²ÎÊý
): BOOL; stdcall;
imp ......
var
arrChar : array [0..4] of Char;
b : Byte;
s : string;
begin
s := 'Test';
Move(Pointer(s)^, arrChar, Length(s)); //string to array of char
ShowMessage(arrChar);
b := Ord(s[1]); //First byte string to one single byte
ShowMessage(Char(b));
end; ......
ÏÖÔÚÓ¦ÓÃϵͳÁ÷ÐÐÓÃB/S¿ª·¢£¬Ô缸Äêǰ¿ÉÊÇC/SµÄÌìÏÂÄØ£¬ÎÒÏÖÔÚ×öµÄijº½¿Õ¹«Ë¾»õÔ˽áËãά»¤¹¤×÷£¬Æäϵͳ¾ÍÊÇÀûÓÃDelphi¿ª·¢µÄC/SÓ¦ÓóÌÐò£¡ÔÚÈÕ³£µÄά»¤¹¤×÷ÖУ¬ÄÑÃâÒª¶ÔÒѾ×öºÃµÄCOM+×é¼þ½øÐе÷ÊÔ£¬ÒԲ鿴¾ßÌåµÄ´¦ÀíÂß¼£¡±¾ÎľÍÊǽéÉÜÔÚWindowsXP»·¾³ÏÂÈçºÎÔÚDelphiÖе÷ÊÔCOM+×é¼þ£¡
µÚÒ»²½£º¼Ç¼ÏÂÄãÏ£Íûµ÷ÊÔµÄCOM+×é¼þµÄGUID¡£¿Éͨ¹ýÈçÏ·½Ê½»ñÈ¡¡£¿ÉÒÔͨ¹ý´ò¿ª“¿ØÖÆÃæ°å”£¬ÕÒµ½“¹ÜÀí¹¤¾ß”£¬È»ºó´ò¿ª“×é¼þ·þÎñ”£¬Õ¹¿ª“¼ÆËã»ú”£¬ÕÒµ½“COM+Ó¦ÓóÌÐò”£¬ÔÚÏ£Íûµ÷ÊÔµÄCOM+Ó¦ÓóÌÐòÉÏÓÒ¼üÒÔ´ò¿ªËüµÄÊôÐÔ£¬Ò»´®ÀàËÆ{2F240A4F-7A70-4573-BD91-FC7AC00EB409}µÄÖµ¾ÍÊÇÎÒÃÇËùÐèÒªµÄ£¬¾ÍÊÇÎÒÃÇÐèÒªµÄÐÅÏ¢£¬½«´Ë¼Ç¼ֵ¸´ÖÆÏÂÀ´´æ´¢ÓÚij¼Çʱ¾ÎļþÖС£
µÚ¶þ²½£º¹Ø±ÕÓûµ÷ÊÔµÄCOM+×é¼þ¡£
µÚÈý²½£º´ò¿ªÄãÒªµ÷ÊԲ鿴µÄ×é¼þÓ¦ÓóÌÐò£¬×ªµ½²Ëµ¥Run£¬µã»÷Parameters...Ï
ÔÚLocalÑ¡ÏîÌõÖУ¬ÔÚHost ApplicationϵÄÊäÈë¿òÄÚ£¬ÊäÈëC:\WINDOWS\system32\dllhost.exe (ÕâÀïµÄCÅÌÇëʹÓÃʵ¼ÊµÄ²Ù×÷ϵͳ·¾¶Ìæ´ú£¬ÔÚWin2000»òWin2003µ±ÖУ¬ÔòÊäÈëC:\WINNT\system32\dllhost.exe) £»ÔÚParametersϵÄÊäÈë¿ ......
DELPHI
//////////////////////////////////
Function EncrypKey (Src:String; Key:String):string;
var
idx :integer;
KeyLen :Integer;
KeyPos :Integer;
offset :Integer;
dest :string;
SrcPos :Integer;
SrcAsc :Integer;
TmpSrcAsc :Integer;
Range :Integer;
begin
KeyLen:=Length(Key);
if KeyLen = 0 then key:='Think Space';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
Randomize;
  ......