Global
IDs by BMB
Global ID (GID) is the four byte (two words) ID of a
form, atom stream or piece of art that is used by AOL
when referencing objects. Typically each form has a GID.
The GID is displayed in two or three parts with a dash
between each part.. The two part format is always
separated into two words (where each word is two bytes),
a hi word (W1) and a lo word (W2). The left most number
is the hi word and the number to the right of the dash
is the lo word. The conversion formula to a numerical
form without a dash would be as follows:
W = (W1*65536) + W2.
For example: GID =
32-30 W=(32*65536)+30=2097182
For three part GIDs, such as 1-0-2240, the left
most number is the highest byte (B1) of the four byte
GID. The next number is the low byte (B2) of the hi
word. The last number is the lo word (W2). Every time
the lo word (W2) of a GID reaches 65536 that number goes
back to 0 and the low byte (B2) of the hi word increases
by 1 (instead of going from '0-0-65535' to '0-0-65536',
it goes from '0-0-65535' to '0-1-0'). Similarly, every
time the low byte (B2) of the hi word reaches 256 it
returns to 0 and the highest byte (B1) increases by 1
(instead of going from '0-255-65535' to '0-256-0', it
goes from '0-255-65535' to '1-0-0'). This means that the
absolute highest possible GID is '255-255-65535'. If you
attempt to send '255-255-65536' along with any token AOL
will automatically send back '0-0-0'.
W=(B1*256 + B2)*65536 + W2
For Example, in GID 1-0-2240, B1=1, B2=0, and
W2=2240.
W=(1*256+0)*65536 + 2240 =
Using the above equation I was able to determine that
there are 4,294,967,295 possible arguments.
Sometimes having zeros in front of arguments when
they aren't needed fucks things up. I created a form
with a list box that linked to the first 999 software
libraries. I found that sending <"eB", 00001> or
<"eB", 00563> would not send back the libraries
that I asked for. I fixed the problem by changing them
to <"eB", 1> or <"eB", 563>.
When the first number or the first two numbers in an
argument are zeros they aren't needed. Sending '0-0-420'
or '0-420' is the same as just sending '420'. |