The following three methods are used to determine whether an object exists (assign value:
If OBJ nil then...
If Boolean (OBJ) then...
If assigned (OBJ) then...
Through the test below, the conclusion is that obj NIL is the slowest; Boolean (OBJ) is equivalent to assigned (BTN!
Test diagram:
Test source code:
unit unit1; interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls; Type tform1 = Class (tform) button1: tbutton; Procedure button1click (Sender: tobject); end; var form1: tform1; implementation {$ R *. DFM} var BTN: tbutton; N: Cardinal; Procedure tform1.button1click (Sender: tobject); var I: integer; begin n: = gettickcount; for I: = 0 to 100000000 do if BTN nil then; N: = gettickcount-N; text: = inttostr (n); N: = gettickcount; for I: = 0 to 100000000 do if Boolean (BTN) then; N: = gettickcount-N; text: = text + '-' + inttostr (n); N: = gettickcount; for I: = 0 to 100000000 do if assigned (BTN) then; N: = gettickcount-N; text: = text + '-' + inttostr (n); end.