Delphi 你不知道的函式

2021-09-05 23:17:11 字數 2457 閱讀 3486

技術交流,dh講解.

在sysutils.pas有幾個函式,以前我也沒有看見過,今天看原始碼的時候無意間發現了.

function gdal: longword;

type

tdvclal = array[0..3] of longword;

pdvclal = ^tdvclal;

var p: pointer;

a1, a2: longword;

pal1s, pal2s: pdvclal;

alok: boolean;

begin

p := alr;//從資源檔案獲得

if p <> nil

then

begin

a1 := al1(p^);

a2 := al2(p^);

result := a1;

pal1s := @al1s;

pal2s := @al2s;

alok := ((a1 = pal1s[0]) and (a2 = pal2s[0])) or

((a1 = pal1s[1]) and (a2 = pal2s[1])) or

((a1 = pal1s[2]) and (a2 = pal2s[2]));

freeresource(integer(p));

ifend

else result := al1s[3];

end;

這個函式全稱get delphi access licences,這個函式去讀取資源裡面的訪問許可,如果不合法就丟擲異常,如果合法就返回解密後的al1。裡面用到的兩個函式:

const

al1s: array[0..3] of longword = ($fffffff0, $ffffebf0, 0, $ffffffff);

al2s: array[0..3] of longword = ($42c3ecef, $20f7aeb6, $d1c2f74e, $3f6574de);

procedure alv;

begin

raise exception.createres(@snl);

end;

function alr: pointer;

var libmodule: plibmodule;

begin

if maininstance <> 0 then

result := pointer(loadresource(maininstance, findresource(maininstance, 'dvclal',

rt_rcdata)))

else

begin

result := nil;

libmodule := libmodulelist;//這裡是乙個鍊錶,其實想學習鍊錶的朋友可以來看看

while libmodule <> nil

do//遍歷鍊錶

begin

with libmodule^ do

begin

result := pointer(loadresource(instance, findresource(instance, 'dvclal',

rt_rcdata)));

if result <> nil

then break;

end;

libmodule := libmodule.next;

end;

end;

end;

緊接著下面有個函式用到gdal了,也就是gdal沒有直接被用到:

procedure rcs;

var p: pointer;

alok: boolean;

begin

p := alr;

if p <> nil

then

begin

alok := (al1(p^) = al1s[2]) and (al2(p^) = al2s[2]);

freeresource(integer(p));

endelse

alok := false;

ifnot alok then

alv;

end;

procedure rpr;

var al: longword;

begin

al := gdal;

if (al <> al1s[1]) and (al <> al1s[2]) then

alv;

end;

函式rcs:檢查是否有合法的delphi client server許可,不合法就異常.

函式rpr:檢查是否有合法的delphi pro 許可,不合法就異常.

從上面看,這兩個函式我們平時基本用不著了,也是,這兩個函式在自帶的vcl裡面有.有興趣的朋友可以自己看一下.

ok

不知道不知道

函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...

不知道不知道

函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...

你所不知道的main()函式

我通常會把main函式定義成 void main 雖然這在vc等編譯器裡也能通過,但是這個是不對的。c 之父 bjarne stroustrup 在他的主頁上的 faq 中明確地寫著 the definition void main is not and never has been c nor h...