An interface can be identified by a GUID. This is a 128-bit number, which is represented in a text
representation (a string literal):
                                                                            
                                                                            
[’{HHHHHHHH-HHHH-HHHH-HHHH-HHHHHHHHHHHH}’]
Each H character represents a hexadecimal number (0-9,A-F). The format contains 8-4-4-4-12
numbers. A GUID can also be represented by the following record, defined in the objpas unit
(included automatically when in DELPHI or OBJFPC mode):
                                                                            
                                                                            
PGuid = ^TGuid;
 
TGuid = packed record
 
   case integer of
 
      1 : (
 
           Data1 : DWord;
 
           Data2 : word;
 
           Data3 : word;
 
           Data4 : array[0..7] of byte;
 
          );
 
      2 : (
 
           D1 : DWord;
 
           D2 : word;
 
           D3 : word;
 
           D4 : array[0..7] of byte;
 
          );
 
      3 : ( { uuid fields according to RFC4122 }
 
           time_low : dword;
 
           time_mid : word;
 
           time_hi_and_version : word;
 
           clock_seq_hi_and_reserved : byte;
 
           clock_seq_low : byte;
 
           node : array[0..5] of byte;
 
           );
 
end;
A constant of type TGUID can be specified using a string literal:
                                                                            
                                                                            
{$mode objfpc}
 
program testuid;
 
 
Const
 
  MyGUID : TGUID = ’{10101010-1010-0101-1001-110110110110}’;
 
 
begin
 
end.
Normally, the GUIDs are only used in Windows, when using COM interfaces. More on this in the
next section.