Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Types.pas

01.01.2007
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Author:       Alexander Vaga
EMail:        alexander_vaga@hotmail.com
Creation:     May, 2002
Legal issues: Copyright (C) 2002 by Alexander Vaga
             
Kyiv, Ukraine
 
             
This software is provided 'as-is', without any express or
              implied warranty
.  In no event will the author be held liable
             
for any  damages arising from the use of this software.
 
             
Permission is granted to anyone to use this software for any
              purpose
, including commercial applications, and to alter it
             
and redistribute it freely.
 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
 
unit
Types;
interface
 
const
 STATE_ONLINE    
=$10020000;
 STATE_AWAY      
=$10020001;
 STATE_DND        
=$10020013;
 STATE_INVISIBLE  
=$10020100;
 STATE_OCCUPIED  
=$10020011;
 STATE_FREEFORCHAT
=$10020020;
 STATE_N_A        
=$10020005;
 
 TYPE_MSG        
=$01;
 TYPE_CHAT        
=$02;
 TYPE_FILE        
=$03;
 TYPE_URL        
=$04;
 TYPE_AUTH_REQ    
=$06;
 TYPE_AUTH_DEN    
=$07;
 TYPE_AUTH_GIV    
=$08;
 TYPE_ADDED      
=$0C;
 TYPE_WEBPAGER    
=$0D;
 TYPE_EXPRESS    
=$0E;
 TYPE_CONTACT    
=$13;
 TYPE_CONTACT_REG
=$1A;
 
      online      
= 0;
      freeforchat
= 1;
      invisible  
= 2;
      occupied    
= 3;
      dnd        
= 4;
      away        
= 5;
      na          
= 6;
      etc        
= 7;
      offline    
= 8;
      simply_icq  
= 9;
      mes        
= 10;
      empty      
= 11;
 
 PACKET_DATA_SIZE
= 4096;
type
   
IParray = array[0..3] of byte;
   
PByteArray = ^TByteArray;
   
TByteArray = array[0..PACKET_DATA_SIZE-1] of byte;
   
PCharArray = ^TCharArray;
   
TCharArray = array[0..PACKET_DATA_SIZE-1] of char;
   PWORD
= ^word;
   PLONG
= ^longint;
   PBYTE
= ^byte;
 
type PFLAP_HDR
= ^FLAP_HDR;
     FLAP_HDR
= packed record
       
Sign : byte;
       
ChID : byte;
       SEQ  
: word;
       
Len  : word;
     
end;
 
type PSNAC_HDR
= ^SNAC_HDR;
     SNAC_HDR
= packed record
       
FamilyID  : word;
       
SubTypeID : word;
       
Flags     : array[0..1] of byte;
       
RequestID : longint;
     
end;
 
type PFLAP_Item
= ^FLAP_Item;
     FLAP_Item
= packed record
       FLAP
: FLAP_HDR;
       DATA
: PByteArray;
       
Next : PFLAP_Item;
     
end;
 
type
   
Pack = packed record
      cursor
: word;
      length
: word;
     
case integer of
       
0: (DATA:array[0..PACKET_DATA_SIZE-1] of byte);
       
1: (FLAP : FLAP_HDR;
            FLAP_BODY
:array[0..PACKET_DATA_SIZE-1] of byte);
       
2: (Sign,ChID:byte;  SEQ,Len  : word);
       
3: (fix:FLAP_HDR;
            SNAC
:SNAC_HDR;
            SNAC_BODY
:array[0..PACKET_DATA_SIZE-1] of byte);
   
end;
   
PPack = ^Pack;
 
implementation
 
end.