DelphiÖеÄTHashTable
ÔÚDelphiÖÐ,Inifilesµ¥ÔªÖÐÓÐÒ»¸öTStringHashµÄÀ࣬²»¹ýËüµÄValue½öÖ§³ÖInteger(ÆäʵҲ²»ÊÇÎÊÌ⣬ÓÐÆäËüÀàÐÍ¿ÉÒÔ½«±äÁ¿±äΪPointer)£¬ÓÐµã²»Êæ·þ£¬½ñÌìûÊÂ×ö¾Í°ÑËüÌæ»»ÎªvariantÁË£¬ÆäÖÐKeyµÄÃû³Æ´óСдÎ޹أ¬¾ÍÊÇΪÁ˼ӿ쿪·¢ËÙ¶È£¡
ʹÓÃHashtable,²éÕÒºÍɾ³ý¸´ÔӶȶ¼Êdz£Êý¼¶±ðµÄ!
type
PPHashItem = ^PHashItem;
PHashItem = ^THashItem;
THashItem = record
Next: PHashItem;
Key: String;
Value: Variant;
end;
THashTable = class
private
Buckets: array of PHashItem;
protected
function Find(const Key: String): PPHashItem;
function HashOf(const Key: String): Cardinal; virtual;
public
constructor Create(Size: Cardinal = 256);
destructor Destroy; override;
procedure Put(const Key: String; Value: Variant);
procedure Clear;
procedure Remove(const Key: String);
function Modify(const Key: String; Value: Variant): Boolean;
function Get(const Key: String): Variant;
function ContainKey(const Key: String):boolean;
end;
procedure THashTable.Clear;
var
I: Integer;
P, N: PHashItem;
begin
for I := 0 to Length(Buckets) - 1 do
begin
P := Buckets[I];
while P <> nil do
begin
N := P^.Next;
Dispose(P);
P := N;
end;
Buckets[I] := nil;
end;
end;
function THashTable.ContainKey(const Key: String): boolean;
var
P: PHashItem;
begin
P := Find(Key)^;
if P <> nil then
begin
Result := True;
end
else
Result := False;
end;
constructor THashTable.Create(Size: Cardinal);
begin
inherited Create;
SetLength(Buckets, Size);
end;
destructor THashTable.Destroy;
begin
Clear;
inherited Destroy;
end;
function THashTable.Find(const Key: String): PPHashItem;
var
Hash: Integer;
begin
Hash := HashOf(Key) mod Cardinal(Length(Buckets));
Result := @Buckets[Hash];
while Result^ <> nil do
begin
if Result^.Key = Key then
Exit
else
Result := @Result^.Next;
end;
end;
functio
Ïà¹ØÎĵµ£º
Format
typeµÄ¿ÉÄÜÖµÓÐÏÂÁÐÕâЩ£º
(1) d ÓзûºÅÊ®½øÖÆÊý
Args±ØÐëÊÇÓзûºÅÕûÐÍÊý¡£Èç¹ûÔÚ¸ñʽ»¯×Ö·û´®Öл¹¼ÓÈëÁË["." prec]£¬ÔòÈç¹ûArgs
µÄ³¤¶ÈÈç¹ûСÓÚ¸ø³öµÄ¾«¶ÈÊýʱ£¬ÔÚǰ±ßÌî²¹0£»Èç¹û´óÓÚ¾«¶ÈÊý£¬°´Êµ¼Ê³¤¶ ......
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
......
Ô×÷Õߣº¹âÃ÷ÐÖµÜ
×î½üÎÒÕýÔÚÑо¿ActiveX¼¼Êõ¡£ÎÒʹÓÃDelphi 7´´½¨ÁËÒ»¸ö¾ßÓÐActiveFormµÄActiveX¿Ø¼þÓ¦ÓóÌÐò¡£Õâ¸ö¿Ø¼þ²úÉúÒ»¸ö.OCXÎļþ¡£ÏÖÔÚ£¬ÎÒÐèÒª°ÑÕâ¸ö¿Ø¼þ²¿ÊðÔÚ·þÎñÆ÷¶Ë£¬ÔÚÓû§ä¯ÀÀÍøÒ³²¢Ñ¡Ôñ°²×°Õâ¸ö¿Ø¼þµÄʱºò£¬Óû§µÄIE²Å»áÏÂÔØ¡¢°²×°²¢ÏÔʾÕâ¸ö¿Ø¼þ¡£
µ«ÊÇÎҵĿؼþ±ØÐë×÷Êý×ÖÇ©ÃûÒÔºó£¬IE²Å»áÏÂÔØ°²×°¡£ ......
#13»Ø³µ»»ÐÐ
½«form2ÄÚÈݼÓÈëµ½form1Áбí¿ò£ºÔÚform2Àform1.listbox1.items.add(edit1.text)
listbox1.items.loadfromfile('chinese.txt')½«chinese.txtÎļþÄÚÈÝÔØÈëÁбí¿òÖС£µ«Ç°ÌáÊÇÒªÕû¸ö´°Ìå´´½¨Ê±ºò¼ÓÔØµ¼È룬˫»÷Õû¸ö´°Ìåprocedure TForm1.FormCreate(Sender: TObject)
listbox1.items.savetofile('chinese. ......
²»ÂÛÊý×éÔªËØÊÇʲôÀàÐÍ£¬¾²Ì¬Êý×éµÄ¾Ö²¿±äÁ¿×Ü»áÔÚÕ»ÉÏ·ÖÅä¡£Èç¹û¶ÑÕ»´óС²»¹»½«»áµ¼ÖÂÒì³£¡£ÏÂÀý°µ²Ø×ÅÒ»¸öΣÏÕµÄbug
procedure stackover;
var
s:array [0..4100] of string[255];
begin
end;
delphiĬÈÏÕ»×î´óΪ$100000×Ö½Ú£¬ÉÏÀýÖеÄÕ»ÉÏ·ÖÅäµÄ´óÏÀΪ256*4100>$10000¡£²âÊÔ±ØÈ»»á³öÏÖÒì³£Stack overf ......