UInfo.pas

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Author: Alexander Vaga
EMail: primary: icq2000cc@hobi.ru
  secondary: alexander_vaga@hotmail.com
Web: <a href="http://icq2000cc.hobi.ru
Creation:" title="http://icq2000cc.hobi.ru
Creation:">http://icq2000cc.hobi.ru
Creation:</a> 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 UInfo;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls,
 Forms, Dialogs, StdCtrls, ComCtrls, Buttons,
 ExtCtrls, Animate,inifiles,
 typess,main,util,packet,
 AppEvnts;
type
 TUserInfo = class(TForm)
  UserInfoDoneBtn: TButton;
  UserInfoRetrieveBtn: TButton;
  InfoPage: TPageControl;
  MainTab: TTabSheet;
  HomeTab: TTabSheet;
  MoreTab: TTabSheet;
  WorkTab: TTabSheet;
  InfoAboutTab: TTabSheet;
  Panel1: TPanel;
  UIAnime: TAnimatedImage;
  GroupBox1: TGroupBox;
  Label1: TLabel;
  Label2: TLabel;
  Label6: TLabel;
  Label9: TLabel;
  uinEd: TEdit;
  ipEd: TEdit;
  realipEd: TEdit;
  verEd: TEdit;
  GroupBox2: TGroupBox;
  Label3: TLabel;
  Label4: TLabel;
  Label7: TLabel;
  Label8: TLabel;
  firstEd: TEdit;
  lastEd: TEdit;
  displayEd: TEdit;
  nickEd: TEdit;
  GroupBox3: TGroupBox;
  Label5: TLabel;
  priEd: TEdit;
  Label10: TLabel;
  Label11: TLabel;
  secEd: TEdit;
  oldEd: TEdit;
  GroupBox4: TGroupBox;
  cityEd: TEdit;
  zipEd: TEdit;
  stateEd: TEdit;
  Label12: TLabel;
  Label13: TLabel;
  Label14: TLabel;
  Label15: TLabel;
  streetMemo: TMemo;
  Label16: TLabel;
  GroupBox5: TGroupBox;
  Label17: TLabel;
  Label18: TLabel;
  Label19: TLabel;
  phoneEd: TEdit;
  cellularEd: TEdit;
  faxEd: TEdit;
  GroupBox6: TGroupBox;
  Label20: TLabel;
  Label21: TLabel;
  Label22: TLabel;
  tzEd: TEdit;
  Edit20: TEdit;
  Edit21: TEdit;
  GroupBox7: TGroupBox;
  Label23: TLabel;
  Label24: TLabel;
  Label25: TLabel;
  homepageEd: TEdit;
  ageEd: TEdit;
  GroupBox8: TGroupBox;
  Label26: TLabel;
  Label27: TLabel;
  Label28: TLabel;
  GroupBox9: TGroupBox;
  GroupBox10: TGroupBox;
  Label29: TLabel;
  Label30: TLabel;
  Label31: TLabel;
  Label32: TLabel;
  Label33: TLabel;
  wcityEd: TEdit;
  wzipEd: TEdit;
  wstateEd: TEdit;
  wstreetMemo: TMemo;
  GroupBox11: TGroupBox;
  Label34: TLabel;
  Label36: TLabel;
  wphoneEd: TEdit;
  wfaxEd: TEdit;
  GroupBox12: TGroupBox;
  Label38: TLabel;
  Label39: TLabel;
  companyEd: TEdit;
  jobEd: TEdit;
  departmentEd: TEdit;
  Label35: TLabel;
  Label37: TLabel;
  whomepageEd: TEdit;
  Label40: TLabel;
  GroupBox13: TGroupBox;
  aboutMemo: TMemo;
  AuthLabel: TLabel;
  Label43: TLabel;
  GroupBox15: TGroupBox;
  interMemo: TMemo;
  countryCombo: TComboBox;
  wcountryCombo: TComboBox;
  genderCombo: TComboBox;
  monthCombo: TComboBox;
  lang1Combo: TComboBox;
  lang2Combo: TComboBox;
  lang3Combo: TComboBox;
  occupationCombo: TComboBox;
  dayCombo: TComboBox;
  yearCombo: TComboBox;
  ApplicationEvents1: TApplicationEvents;
  procedure Request_Meta_Info(UIN : longint);
  procedure Set_Meta_Info;
  procedure UserInfoDoneBtnClick(Sender: TObject);
  procedure UserInfoRetrieveBtnClick(Sender: TObject);
  procedure FormShow(Sender: TObject);
  procedure FormClose(Sender: TObject; var Action: TCloseAction);
  procedure SetCountry(Combo:TComboBox; Country:word);
  function GetCountry(Combo:TComboBox):word;
  procedure SetGender(Combo:TComboBox; Gender:byte);
  function GetGender(Combo:TComboBox):byte;
  procedure SetMonth(Combo:TComboBox; Month:byte);
  function GetMonth(Combo:TComboBox):byte;
  procedure SetLanguage(Combo:TComboBox; Lang:byte);
  function GetLanguage(Combo:TComboBox):byte;
  procedure SetOccupation(Combo:TComboBox; Occupation:word);
  function GetOccupation(Combo:TComboBox):word;
  procedure SetCombo(Combo:TComboBox; min,max,Value:word);
  function GetCombo(Combo:TComboBox; min,max:byte):word;
  procedure ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
 private
  { Private declarations }
 public
  AutoRetrieve : boolean;
  UIRecord : TListRecord;
  Cookie : word;
 end;

implementation
{$R *.DFM}
procedure TUserInfo.UserInfoDoneBtnClick(Sender: TObject);
begin
  Close;
end;
procedure TUserInfo.Request_Meta_Info(UIN : longint);
var p,a : pPack;
begin
  a := PacketNew;
  PacketGoto(a,2);// a[0..1] = len
  PacketAppend32(a,main.UIN);
  PacketAppend16(a,swap($D007));
  Cookie := random($FF) shl 8;
  PacketAppend16(a,swap(Cookie));
  PacketAppend16(a,swap($B204));
  PacketAppend32(a,UIN);
  PacketBegin(a);
  PacketAppend16(a,a.length-2);
  P:=CreatePacket(2,SEQ);
  SNACAppend(p,$15,$2);
  TLVAppend(p,1,a.length,@a.data);
  PacketDelete(a);
  Form1.PacketSend(p);
  M(Form1.Memo,'>Request Full Info: '+s(UIN)+' '+
  'Cookie:$'+inttohex(Cookie,4));
  UIAnime.Active := true;
end;
procedure TUserInfo.UserInfoRetrieveBtnClick(Sender: TObject);
begin
  if (OL and isLogged)then
  Request_Meta_Info(UIRecord.UIN);
end;

procedure TUserInfo.FormShow(Sender: TObject);
begin
  InfoPage.ActivePageIndex :=0;
  with UIRecord do begin
  uinEd.Text := s(UIN);
  ipEd.Text := IPtoStr(IP);
  realipEd.Text := IPtoStr(REAL_IP);
  verEd.Text := s(VER);
  firstEd.Text := FIRST;
  lastEd.Text := LAST;
  nickEd.Text := NICK;
  displayEd.Text := NICK;
  priEd.Text := PRI_E_MAIL;
  secEd.Text := SEC_E_MAIL;
  oldEd.Text := OLD_E_MAIL;
  cityEd.Text := CITY;
  stateEd.Text := STATE;
  phoneEd.Text := PHONE;
  faxEd.Text := FAX;
  cellularEd.Text := CELLULAR;
  M(streetMemo,STREET);
  SetCountry(countryCombo,COUNTRY);
  SetGender(genderCombo,GENDER);
  ageEd.Text := s(AGE);
  homepageEd.Text := HOMEPAGE;
  SetCombo(yearCombo,1,99,BYEAR);
  SetMonth(monthCombo,BMONTH);
  SetCombo(dayCombo,1,31,BDAY);
  case AUTH of
  0: AuthLabel.Caption := 'Authorize';
  1: AuthLabel.Caption := 'Always';
  else AuthLabel.Caption := 'unknown';
  end;
  SetLanguage(lang1Combo,LANG1);
  SetLanguage(lang2Combo,LANG2);
  SetLanguage(lang3Combo,LANG3);
  M(aboutMemo,ABOUT);
  M(interMemo,INTERESTS);
  companyEd.Text :=COMPANY;
  departmentEd.Text := DEPARTMENT;
  jobEd.Text := JOB;
  SetOccupation(occupationCombo,Occupation);
  wcityEd.Text := WCITY;
  wstateEd.Text := WSTATE;
  wphoneEd.Text := WPHONE;
  wfaxEd.Text := WFAX;
  wstreetMemo.Clear;
  M(wstreetMemo,WSTREET);
  SetCountry(wcountryCombo,WCOUNTRY);
  whomepageEd.Text := WHOMEPAGE;
  end;
  if AutoRetrieve then begin
  if (OL and isLogged)then
  Request_Meta_Info(UIRecord.UIN);
  end;
end;

procedure TUserInfo.FormClose(Sender: TObject; var Action: TCloseAction);
var i : integer;
begin
  if not AutoRetrieve then begin
  for i:=0 to CLNum-1 do with ContactList[i] do begin
  if UIN = UIRecord.UIN then begin
  ContactList[i] := UIRecord;
  if NICK = '' then begin
  if FIRST <> '' then NICK := FIRST
  else if LAST <> '' then NICK := LAST
  else NICK := s(UIN);
  end; // if
  Form1.WriteToContactList(ContactList[i]);
  break;
  end;
  end; //for
  for i:=0 to Form1.CL.Items.Count-1 do
  if Form1.CL.Items[i].Text <> PListRecord(Form1.CL.Items[i].Data)^.NICK then
  Form1.CL.Items[i].Text := PListRecord(Form1.CL.Items[i].Data)^.NICK;
  end;
  Destroy;
end;

procedure TUserInfo.Set_Meta_Info;
begin
  // это еще старый кусок из протокола icqv5 (UDP)
  // CMD_META_USER + META_CMD_SET_INFO
(*
  p:=main.UDPCreateStdPacket(CMD_META_USER);
  PacketAppend16(p,META_CMD_SET_INFO);
  Cookie := main.UDPSeqNum2-1;
  MetaUIN := main.UIN;
  PacketAppendString(p,nickEd.Text);
  PacketAppendString(p,firstEd.Text);
  PacketAppendString(p,lastEd.Text);
  PacketAppendString(p,priEd.Text);
  PacketAppendString(p,secEd.Text);
  PacketAppendString(p,oldEd.Text);
  PacketAppendString(p,cityEd.Text);
  PacketAppendString(p,stateEd.Text);
  PacketAppendString(p,phoneEd.Text);
  PacketAppendString(p,faxEd.Text);
  PacketAppendString(p,streetMemo.Lines[0]);
  PacketAppendString(p,cellularEd.Text);
  try PacketAppend32(p,longint(strtoint(zipEd.Text)));
  except PacketAppend32(p,-1); end;
  PacketAppend16(p,GetCountry(countryCombo));
  PacketAppend8(p,0); // 250 = +03:00 TimeZone
  PacketAppend8(p,0); // ????
  main.SendUDPCmd(p,'META_USER+SET_INFO: ['+s(main.UIN)+'] ===>');
  // CMD_META_USER + META_CMD_SET_WORK
  p:=main.UDPCreateStdPacket(CMD_META_USER);
  PacketAppend16(p,META_CMD_SET_WORK);
  PacketAppendString(p,wcityEd.Text);
  PacketAppendString(p,wstateEd.Text);
  PacketAppendString(p,wphoneEd.Text);
  PacketAppendString(p,wfaxEd.Text);
  PacketAppendString(p,wstreetMemo.Lines[0]);
  try PacketAppend32(p,longint(strtoint(wzipEd.Text)));
  except PacketAppend32(p,-1); end;
  PacketAppend16(p,GetCountry(wcountryCombo));
  PacketAppendString(p,companyEd.Text);
  PacketAppendString(p,departmentEd.Text);
  PacketAppendString(p,jobEd.Text);
  PacketAppend16(p,GetOccupation(occupationCombo));
  PacketAppendString(p,whomepageEd.Text);
  main.SendUDPCmd(p,'META_USER+SET_WORK: ['+s(main.UIN)+'] ===>');
  // CMD_META_USER + META_CMD_SET_MORE
  p:=main.UDPCreateStdPacket(CMD_META_USER);
  PacketAppend16(p,META_CMD_SET_MORE);
  try PacketAppend16(p,word(strtoint(ageEd.Text)));
  except PacketAppend16(p,0); end;
  PacketAppend8(p,GetGender(genderCombo));
  PacketAppendString(p,homepageEd.Text);
  PacketAppend8(p,GetCombo(yearCombo,0,99));
  PacketAppend8(p,GetMonth(monthCombo));
  PacketAppend8(p,GetCombo(dayCombo,1,31));
  PacketAppend8(p,GetLanguage(lang1Combo));
  PacketAppend8(p,GetLanguage(lang2Combo));
  PacketAppend8(p,GetLanguage(lang3Combo));
  main.SendUDPCmd(p,'META_USER+SET_MORE: ['+s(main.UIN)+'] ===>');
  // CMD_META_USER + META_CMD_SET_ABOUT
  p:=main.UDPCreateStdPacket(CMD_META_USER);
  PacketAppend16(p,META_CMD_SET_ABOUT);
  PacketAppendString(p,aboutMemo.lines[0]);
  main.SendUDPCmd(p,'META_USER+SET_ABOUT: ['+s(main.UIN)+'] ===>');
  // CMD_META_USER + META_CMD_SET_SECURE
  p:=main.UDPCreateStdPacket(CMD_META_USER);
  PacketAppend16(p,META_CMD_SET_SECURE);
  PacketAppend8(p,1); // 0-autor required; 1-all users
  PacketAppend8(p,0); // 0-not allow web; 1-allow web aware
  PacketAppend8(p,0); // 0-hide IP; 1-show IP
  main.SendUDPCmd(p,'META_USER+SET_SECURE: ['+s(main.UIN)+'] ===>');
/////
*)

  UIAnime.Active := true;
end;
procedure TUserInfo.SetCountry(Combo:TComboBox; Country:word);
var i : integer;
begin
  Combo.Clear;
  for i:=0 to 121 do begin
  Combo.Items.Add(Countries[i].Text);
  if Countries[i].Code = Country then Combo.Text := Countries[i].Text;
  end;
  if Combo.Text = '' then Combo.Text := Countries[121].Text;
end;
function TUserInfo.GetCountry(Combo:TComboBox):word;
var i : integer;
begin
  Result := $FFFF;
  for i:=0 to 121 do begin
  if Countries[i].Text = Combo.Text then begin
  Result := Countries[i].Code;
  break;
  end;
  end;
end;
procedure TUserInfo.SetGender(Combo:TComboBox; Gender:byte);
begin
  Combo.Clear;
  Combo.Items.Add('Not specified');
  Combo.Items.Add('Female');
  Combo.Items.Add('Male');
  case Gender of
  0: Combo.Text := 'Not specified';
  1: Combo.Text := 'Female';
  2: Combo.Text := 'Male';
  else Combo.Text := 'Not specified';
  end;
end;
function TUserInfo.GetGender(Combo:TComboBox):byte;
begin
  Result := 0;
  if Combo.Text = 'Female' then Result := 1
  else if Combo.Text = 'Male' then Result := 2;
end;
procedure TUserInfo.SetMonth(Combo:TComboBox; Month:byte);
var i : integer;
begin
  Combo.Clear;
  for i:=0 to 12 do begin
  Combo.Items.Add(MetaMonth[i].Text);
  if MetaMonth[i].Code = Month then Combo.Text := MetaMonth[i].Text;
  end;
  if Combo.Text = '' then Combo.Text := MetaMonth[12].Text;
end;
function TUserInfo.GetMonth(Combo:TComboBox):byte;
var i : integer;
begin
  Result := 0;
  for i:=0 to 12 do begin
  if MetaMonth[i].Text = Combo.Text then begin
  Result := MetaMonth[i].Code;
  break;
  end;
  end;
end;
procedure TUserInfo.SetLanguage(Combo:TComboBox; Lang:byte);
var i : integer;
begin
  Combo.Clear;
  for i:=0 to 67 do begin
  Combo.Items.Add(MetaLanguages[i].Text);
  if MetaLanguages[i].Code = Lang then Combo.Text := MetaLanguages[i].Text;
  end;
  if Combo.Text = '' then Combo.Text := MetaLanguages[0].Text;
end;
function TUserInfo.GetLanguage(Combo:TComboBox):byte;
var i : integer;
begin
  Result := 0;
  for i:=0 to 67 do begin
  if MetaLanguages[i].Text = Combo.Text then begin
  Result := MetaLanguages[i].Code;
  break;
  end;
  end;
end;
procedure TUserInfo.SetOccupation(Combo:TComboBox; Occupation:word);
var i : integer;
begin
  Combo.Clear;
  for i:=0 to 28 do begin
  Combo.Items.Add(MetaOccupation[i].Text);
  if MetaOccupation[i].Code = Occupation then Combo.Text := MetaOccupation[i].Text;
  end;
  if Combo.Text = '' then Combo.Text := MetaOccupation[28].Text;
end;
function TUserInfo.GetOccupation(Combo:TComboBox):word;
var i : integer;
begin
  Result := 0; // not specified
  for i:=0 to 27 do begin
  if MetaOccupation[i].Text = Combo.Text then begin
  Result := MetaOccupation[i].Code;
  break;
  end;
  end;
end;
procedure TUserInfo.SetCombo(Combo:TComboBox; min,max,Value:word);
var i : integer;
begin
  Combo.Clear;
  for i:=min to max do begin
  Combo.Items.Add(s(i));
  if i=Value then Combo.Text := s(i);
  end;
  Combo.Items.Add('Not specified');
  if Combo.Text = '' then Combo.Text := 'Not specified';
end;
function TUserInfo.GetCombo(Combo:TComboBox; min,max:byte):word;
begin
  Result := 0;
  if Combo.Text = 'Not specified' then exit
  else
  try Result := strtoint(Combo.Text) except Result := 0; end;
  if (Result >= min) and (Result<=max) then exit else Result := 0;
end;

procedure TUserInfo.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
var PBuff : PInfoRec;
begin
  if Msg.message = msg_UInfo then begin
  if (Msg.wParam = Cookie)then begin
  Handled := false;
  PBuff := PInfoRec(Msg.lParam);
  case PBuff^.f of
  dEND: begin
  M(Form1.Memo,'The END.');
  UIAnime.Active := false;
  end;
  dNick: begin
  UIRecord.NICK := PBuff^.s;
  NickEd.Text := PBuff^.s;
  end;
  dFirst: begin
  UIRecord.FIRST := PBuff^.s;
  FirstEd.Text := PBuff^.s;
  end;
  dLast: begin
  UIRecord.LAST := PBuff^.s;
  LastEd.Text := PBuff^.s;
  end;
  dE_Mail: begin
  UIRecord.PRI_E_MAIL := PBuff^.s;
  priEd.Text := PBuff^.s;
  end;
  dSec_E_Mail: begin
  UIRecord.SEC_E_MAIL := PBuff^.s;
  secEd.Text := PBuff^.s;
  end;
  dOld_E_Mail: begin
  UIRecord.OLD_E_MAIL := PBuff^.s;
  oldEd.Text := PBuff^.s;
  end;
  dIP: begin
  strtoip(PBuff^.s,UIRecord.IP);
  ipEd.Text := PBuff^.s;
  end;
  dReal_IP: begin
  strtoip(PBuff^.s,UIRecord.REAL_IP);
  realipEd.Text := PBuff^.s;
  end;
  dVer: begin
  UIRecord.VER := strtoint(PBuff^.s);
  verEd.Text := PBuff^.s;
  end;
  dAuth: begin
  UIRecord.AUTH := strtoint(PBuff^.s);
  case UIRecord.AUTH of
  0: AuthLabel.Caption := 'Authorize';
  1: AuthLabel.Caption := 'Always';
  else AuthLabel.Caption := 'unknown';
  end;
  end;
  dCity: begin
  UIRecord.CITY := PBuff^.s;
  cityEd.Text := PBuff^.s;
  end;
  dState: begin
  UIRecord.STATE := PBuff^.s;
  stateEd.Text := PBuff^.s;
  end;
  dPhone: begin
  UIRecord.Phone := PBuff^.s;
  PhoneEd.Text := PBuff^.s;
  end;
  dFax: begin
  UIRecord.Fax := PBuff^.s;
  FaxEd.Text := PBuff^.s;
  end;
  dCellular: begin
  UIRecord.Cellular := PBuff^.s;
  CellularEd.Text := PBuff^.s;
  end;
  dZip: begin
  UIRecord.Zip := PBuff^.s;
  ZipEd.Text := PBuff^.s;
  end;
  dStreet: begin
  UIRecord.Street := PBuff^.s;
  streetMemo.Clear;
  M(streetMemo,PBuff^.s);
  end;
  dCountry: begin
  UIRecord.Country := strtoint(PBuff^.s);
  SetCountry(countryCombo,UIRecord.COUNTRY);
  end;
  dTimeZone: begin
  UIRecord.TimeZone := strtoint(PBuff^.s);
  tzEd.Text := PBuff^.s;
  end;
  dWebAware: begin
  // UIRecord.WebAware := strtoint(PBuff^.s);
  // webawareEd.Text := PBuff^.s;
  end;
  dHideIP: begin
  // UIRecord.HideIP := PBuff^.s;
  // HideIPEd.Text := PBuff^.s;
  end;
  dAge: begin
  UIRecord.Age := strtoint(PBuff^.s);
  AgeEd.Text := PBuff^.s;
  end;
  dGender: begin
  UIRecord.Gender := strtoint(PBuff^.s);
  SetGender(genderCombo,UIRecord.GENDER);
  end;
  dHomepage: begin
  UIRecord.Homepage := PBuff^.s;
  HomepageEd.Text := PBuff^.s;
  end;
  dByear: begin
  UIRecord.Byear := strtoint(PBuff^.s);
  if UIRecord.Byear<>0 then dec(UIRecord.Byear,1900);
  SetCombo(yearCombo,1,99,UIRecord.Byear);
  end;
  dBmonth: begin
  UIRecord.BMonth := strtoint(PBuff^.s);
  SetMonth(monthCombo,UIRecord.BMonth);
  end;
  dBday: begin
  UIRecord.Bday := strtoint(PBuff^.s);
  SetCombo(dayCombo,1,31,UIRecord.Bday);
  end;
  dAbout: begin
  UIRecord.ABOUT := PBuff^.s;
  AboutMemo.Clear;
  M(AboutMemo,PBuff^.s);
  end;
  dLang1: begin
  UIRecord.LANG1 := strtoint(PBuff^.s);
  SetLanguage(lang1Combo,UIRecord.LANG1);
  end;
  dLang2: begin
  UIRecord.LANG2 := strtoint(PBuff^.s);
  SetLanguage(lang2Combo,UIRecord.LANG2);
  end;
  dLang3: begin
  UIRecord.LANG3 := strtoint(PBuff^.s);
  SetLanguage(lang3Combo,UIRecord.LANG3);
  end;
  dInterests: begin
  UIRecord.INTERESTS := PBuff^.s;
  interMemo.Clear;
  M(interMemo,PBuff^.s);
  end;
  dFailure: begin
  ///////////////////////////// ?????
  end;
  dMeta_Srv_Res: begin
  UIAnime.Active := false;
  end;
  dwCity: begin
  UIRecord.WCITY := PBuff^.s;
  wcityEd.Text := PBuff^.s;
  end;
  dwState:begin
  UIRecord.WSTATE := PBuff^.s;
  wstateEd.Text := PBuff^.s;
  end;
  dwPhone:begin
  UIRecord.WPHONE := PBuff^.s;
  wphoneEd.Text := PBuff^.s;
  end;
  dwFax:begin
  UIRecord.WFAX := PBuff^.s;
  wfaxEd.Text := PBuff^.s;
  end;
  dwStreet:begin
  UIRecord.WSTREET := PBuff^.s;
  wstreetMemo.Clear;
  M(wstreetMemo,PBuff^.s);
  end;
  dwZip:begin
  UIRecord.WZIP := PBuff^.s;
  wzipEd.Text := PBuff^.s;
  end;
  dwCountry:begin
  UIRecord.WCOUNTRY := strtoint(PBuff^.s);
  SetCountry(wcountryCombo,UIRecord.WCOUNTRY);
  end;
  dCompany:begin
  UIRecord.COMPANY := PBuff^.s;
  companyEd.Text := PBuff^.s;
  end;
  dDepartment:begin
  UIRecord.DEPARTMENT := PBuff^.s;
  departmentEd.Text := PBuff^.s;
  end;
  dJob:begin
  UIRecord.JOB := PBuff^.s;
  jobEd.Text := PBuff^.s;
  end;
  dOccupation:begin
  UIRecord.OCCUPATION := strtoint(PBuff^.s);
  SetOccupation(occupationCombo,UIRecord.Occupation);
  end;
  dWhomepage:begin
  UIRecord.WHOMEPAGE := PBuff^.s;
  whomepageEd.Text := PBuff^.s;
  end;
  end; // case
  Dispose(PBuff);
  end;
  end;
end;
end.

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...