char from[256];
char to[256];
char date[256];
char subj[256];
dword mdata;

struct letter_attr
{
   char adress[sizeof(to)];
   char subject[sizeof(subj)];
   byte direction;
   int size;
   void CreateArray();
   void SetSizes();
   void SetAtrFromCurr(int N);
   int  GetSize(int N);
   char GetDirection(int N);
   dword GetSubject(int N);
   dword GetAdress(int N);
};
letter_attr atr;
dword mails_db;



void letter_attr::CreateArray()
{
   free(mails_db);
   mails_db = malloc( mail_list.count * sizeof(atr) );
}

void letter_attr::SetSizes()
{
   int i;
   for (i=1; i < mail_list.count; i++)
   {
      ESDWORD[sizeof(atr)*i+#mails_db+#atr.size-#atr] = GetLetterSize_(i);
      ESDWORD[sizeof(atr)*i+#mails_db+#atr.subject-#atr] = ' ';
      ESDWORD[sizeof(atr)*i+#mails_db+#atr.subject-#atr+1] = '\0';
   }
}

void letter_attr::SetAtrFromCurr(int N)
{
   byte mail_direction=0;
   if (strstri(#to, #email_text))
   {
      mail_direction = 1;
      strcpy(sizeof(atr)*N+#mails_db+#atr.adress-#atr, #from);
   }
   if (strstri(#from, #email_text))
   {
      mail_direction = 2;
      strcpy(sizeof(atr)*N+#mails_db+#atr.adress-#atr, #to);
   }
   ESBYTE[sizeof(atr)*N+#mails_db+#atr.direction-#atr] = mail_direction;
   strcpy(sizeof(atr)*N+#mails_db+#atr.subject-#atr, #subj);
}

int letter_attr::GetSize(int N) { return ESDWORD[sizeof(atr)*N+#mails_db+#atr.size-#atr]; }
char letter_attr::GetDirection(int N) { return ESBYTE[sizeof(atr)*N+#mails_db+#atr.direction-#atr]; }
dword letter_attr::GetSubject(int N) { return sizeof(atr)*N+#mails_db+#atr.subject-#atr; }
dword letter_attr::GetAdress(int N) { return sizeof(atr)*N+#mails_db+#atr.adress-#atr; }